Catalog source pod scheduling
When an Operator Lifecycle Manager (OLM) catalog source of source type grpc defines a spec.image, the Catalog Operator creates a pod that serves the defined image content. By default, this pod defines the following in its specification:
-
Only the
kubernetes.io/os=linuxnode selector. -
The default priority class name:
system-cluster-critical. -
No tolerations.
As an administrator, you can override these values by modifying fields in the CatalogSource object’s optional spec.grpcPodConfig section.
Important
The Marketplace Operator, openshift-marketplace, manages the default OperatorHub custom resource’s (CR). This CR manages CatalogSource objects. If you attempt to modify fields in the CatalogSource object’s spec.grpcPodConfig section, the Marketplace Operator automatically reverts these modifications. By default, if you modify fields in the spec.grpcPodConfig section of the CatalogSource object, the Marketplace Operator automatically reverts these changes.
To apply persistent changes to CatalogSource object, you must first disable a default CatalogSource object.
Disabling default CatalogSource objects at a local level
You can apply persistent changes to a CatalogSource object, such as catalog source pods, at a local level, by disabling a default CatalogSource object. Consider the default configuration in situations where the default CatalogSource object’s configuration does not meet your organization’s needs. By default, if you modify fields in the spec.grpcPodConfig section of the CatalogSource object, the Marketplace Operator automatically reverts these changes.
The Marketplace Operator, openshift-marketplace, manages the default custom resources (CRs) of the OperatorHub. The OperatorHub manages CatalogSource objects.
To apply persistent changes to CatalogSource object, you must first disable a default CatalogSource object.
-
To disable all the default
CatalogSourceobjects at a local level, enter the following command:$ oc patch operatorhub cluster -p '{"spec": {"disableAllDefaultSources": true}}' --type=mergeNote
You can also configure the default
OperatorHubCR to either disable allCatalogSourceobjects or disable a specific object.
Overriding the node selector for catalog source pods
-
A
CatalogSourceobject of source typegrpcwithspec.imageis defined.
-
Edit the
CatalogSourceobject and add or modify thespec.grpcPodConfigsection to include the following:grpcPodConfig: nodeSelector: custom_label: <label>where
<label>is the label for the node selector that you want catalog source pods to use for scheduling.
Overriding the priority class name for catalog source pods
-
A
CatalogSourceobject of source typegrpcwithspec.imageis defined.
-
Edit the
CatalogSourceobject and add or modify thespec.grpcPodConfigsection to include the following:grpcPodConfig: priorityClassName: <priority_class>where
<priority_class>is one of the following:-
One of the default priority classes provided by Kubernetes:
system-cluster-criticalorsystem-node-critical -
An empty set (
"") to assign the default priority -
A pre-existing and custom defined priority class
-
Note
Previously, the only pod scheduling parameter that could be overriden was priorityClassName. This was done by adding the operatorframework.io/priorityclass annotation to the CatalogSource object. For example:
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: example-catalog
namespace: openshift-marketplace
annotations:
operatorframework.io/priorityclass: system-cluster-critical
If a CatalogSource object defines both the annotation and spec.grpcPodConfig.priorityClassName, the annotation takes precedence over the configuration parameter.
Overriding tolerations for catalog source pods
-
A
CatalogSourceobject of source typegrpcwithspec.imageis defined.
-
Edit the
CatalogSourceobject and add or modify thespec.grpcPodConfigsection to include the following:grpcPodConfig: tolerations: - key: "<key_name>" operator: "<operator_type>" value: "<value>" effect: "<effect>"