Catalog source pod scheduling
When a grpc type catalog source defines the spec.image field, the Catalog Operator creates a pod to serve that image.
By default, the pod specification configures the following default settings:
- Node selector:
kubernetes.io/os=linux - Priority class name:
system-cluster-critical - Tolerations: None
As an administrator, you can override these defaults by configuring fields in the optional spec.grpcPodConfig section of the CatalogSource object.
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 make persistent local changes to a CatalogSource object by disabling the default CatalogSource object. Otherwise, the Marketplace Operator automatically reverts any manual modifications to fields in the spec.grpcPodConfig section.
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.
Procedure
- To disable all the default
CatalogSourceobjects at a local level, enter the following command:terminal$ oc patch operatorhub cluster -p '{"spec": {"disableAllDefaultSources": true}}' --type=mergeNoteYou can also configure the default
OperatorHubCR to either disable allCatalogSourceobjects or disable a specific object.
Overriding the node selector for catalog source pods
To control which nodes run catalog source pods, you can override the default node selector in the spec.grpcPodConfig section of the CatalogSource object.
Prerequisites
- A
CatalogSourceobject of source typegrpcwithspec.imageis defined.
Procedure
- Edit the
CatalogSourceobject and add or modify thespec.grpcPodConfigsection to include the following:yamlgrpcPodConfig: 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
To control the scheduling priority of catalog source pods, you can override the default priority class name in the spec.grpcPodConfig section of the CatalogSource object.
Prerequisites
- A
CatalogSourceobject of source typegrpcwith a definedspec.image.
Procedure
- Edit the
CatalogSourceobject and configure thespec.grpcPodConfigsection, similar to the following example:yamlgrpcPodConfig: priorityClassName: <priority_class>where:
<priority_class>Specifies one of the following priority classes: * A default Kubernetes priority class, such as
system-cluster-criticalorsystem-node-critical* An empty string ("") to assign the default priority * A custom, pre-existing priority class name
NotePreviously, the only pod scheduling parameter that could be overriden was
priorityClassName. This was done by adding theoperatorframework.io/priorityclassannotation to theCatalogSourceobject. For example:yamlapiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: example-catalog namespace: openshift-marketplace annotations: operatorframework.io/priorityclass: system-cluster-criticalIf a
CatalogSourceobject defines both the annotation andspec.grpcPodConfig.priorityClassName, the annotation takes precedence over the configuration parameter.
Overriding tolerations for catalog source pods
To allow catalog source pods to schedule onto nodes with matching taints, you can override the default tolerations in the spec.grpcPodConfig section of the CatalogSource object.
Prerequisites
- A
CatalogSourceobject of source typegrpcwithspec.imageis defined.
Procedure
- Edit the
CatalogSourceobject and add or modify thespec.grpcPodConfigsection to include the following:yamlgrpcPodConfig: tolerations: - key: "<key_name>" operator: "<operator_type>" value: "<value>" effect: "<effect>"