Managing catalogs
Cluster administrators can add catalogs, or curated collections of Operators and Kubernetes extensions, to their clusters. Operator authors publish their products to these catalogs.
When you add a catalog to your cluster, you have access to the versions, patches, and over-the-air updates of the Operators and extensions that are published to the catalog.
You can manage catalogs and extensions declaratively from the CLI by using custom resources (CRs).
File-based catalogs are the latest iteration of the catalog format in Operator Lifecycle Manager (OLM). It is a plain text-based (JSON or YAML) and declarative config evolution of the earlier SQLite database format, and it is fully compatible with earlier versions.
Kubernetes periodically deprecates certain APIs that are removed in subsequent releases. As a result, Operators are unable to use removed APIs starting with the version of OpenShift Container Platform that uses the Kubernetes version that removed the API.
About catalogs in OLM v1
You can discover installable content by querying a catalog for Kubernetes extensions, such as Operators and controllers, by using the catalogd component.
Catalogd is a Kubernetes extension that unpacks catalog content for on-cluster clients and is part of the Operator Lifecycle Manager (OLM) v1 suite of microservices. Currently, catalogd unpacks catalog content that is packaged and distributed as container images.
Additional resources
Red Hat-provided Operator catalogs in OLM v1
Operator Lifecycle Manager (OLM) v1 includes several Red Hat-provided Operator catalogs on the cluster by default. If you want to add a catalog to your cluster, create a custom resource (CR) for the catalog and apply it to the cluster.
The following custom resource (CR) examples show the default catalogs installed on the cluster:
apiVersion: olm.operatorframework.io/v1
kind: ClusterCatalog
metadata:
name: openshift-redhat-operators
spec:
priority: -100
source:
image:
pollIntervalMinutes: <poll_interval_duration>
ref: registry.redhat.io/redhat/redhat-operator-index:v4.22
type: Image
Replace <poll_interval_duration> with the interval in minutes for polling the remote registry for newer image digests. To disable polling, do not set the field.
apiVersion: olm.operatorframework.io/v1
kind: ClusterCatalog
metadata:
name: openshift-certified-operators
spec:
priority: -200
source:
type: image
image:
pollIntervalMinutes: 10
ref: registry.redhat.io/redhat/certified-operator-index:v4.22
type: Image
apiVersion: olm.operatorframework.io/v1
kind: ClusterCatalog
metadata:
name: openshift-redhat-marketplace
spec:
priority: -300
source:
image:
pollIntervalMinutes: 10
ref: registry.redhat.io/redhat/redhat-marketplace-index:v4.22
type: Image
apiVersion: olm.operatorframework.io/v1
kind: ClusterCatalog
metadata:
name: openshift-community-operators
spec:
priority: -400
source:
image:
pollIntervalMinutes: 10
ref: registry.redhat.io/redhat/community-operator-index:v4.22
type: Image
The following command adds a catalog to your cluster:
$ oc apply -f <catalog_name>.yaml
Replace <catalog_name>.yaml with the catalog CR, such as my-catalog.yaml.
Add a catalog to a cluster
To add a catalog to a cluster for Operator Lifecycle Manager (OLM) v1 usage, create a ClusterCatalog custom resource (CR) and apply it to the cluster.
Procedure
-
Create a catalog custom resource (CR), similar to the following example:
Example my-redhat-operators.yaml fileapiVersion: olm.operatorframework.io/v1kind: ClusterCatalogmetadata:name: my-redhat-operatorsspec:priority: 1000source:image:pollIntervalMinutes: 10ref: registry.redhat.io/redhat/community-operator-index:v4.22type: Imagewhere:
metadata.name- The catalog is automatically labeled with the value of the
metadata.namefield when it is applied to the cluster. For more information about labels and catalog selection, see "Catalog content resolution". spec.priority- Optional: Specifies the priority of the catalog in relation to the other catalogs on the cluster. For more information, see "Catalog selection by priority".
spec.source.image.pollIntervalMinutes- Specifies the interval in minutes for polling the remote registry for newer image digests. To disable polling, do not set the field.
spec.source.image.ref- Specifies the catalog image in the
spec.source.image.reffield.
-
Add the catalog to your cluster by running the following command:
$ oc apply -f my-redhat-operators.yamlExample outputclustercatalog.olm.operatorframework.io/my-redhat-operators created
Verification
- Run the following commands to verify the status of your catalog:
-
Check if your catalog is available by running the following command:
$ oc get clustercatalogExample outputNAME LASTUNPACKED SERVING AGEmy-redhat-operators 55s True 64sopenshift-certified-operators 83m True 84mopenshift-community-operators 43m True 84mopenshift-redhat-marketplace 83m True 84mopenshift-redhat-operators 54m True 84m -
Check the status of your catalog by running the following command:
$ oc describe clustercatalog my-redhat-operatorsExample outputName: my-redhat-operatorsNamespace:Labels: olm.operatorframework.io/metadata.name=my-redhat-operatorsAnnotations: <none>API Version: olm.operatorframework.io/v1Kind: ClusterCatalogMetadata:Creation Timestamp: 2025-02-18T20:28:50ZFinalizers:olm.operatorframework.io/delete-server-cacheGeneration: 1Resource Version: 50248UID: 86adf94f-d2a8-4e70-895b-31139f2eeab7Spec:Availability Mode: AvailablePriority: 1000Source:Image:Poll Interval Minutes: 10Ref: registry.redhat.io/redhat/community-operator-index:v4.22Type: ImageStatus:Conditions:Last Transition Time: 2025-02-18T20:29:00ZMessage: Successfully unpacked and stored content from resolved sourceObserved Generation: 1Reason: SucceededStatus: TrueType: ProgressingLast Transition Time: 2025-02-18T20:29:00ZMessage: Serving desired content from resolved sourceObserved Generation: 1Reason: AvailableStatus: TrueType: ServingLast Unpacked: 2025-02-18T20:28:59ZResolved Source:Image:Ref: registry.redhat.io/redhat/community-operator-index@sha256:11627ea6fdd06b8092df815076e03cae9b7cede8b353c0b461328842d02896c5Type: ImageUrls:Base: https://catalogd-service.openshift-catalogd.svc/catalogs/my-redhat-operatorsEvents: <none>In the output, the
Statussection describes the status of the catalog. In theStatussection, theReasonfield displays the reason the catalog is in the current state. In theResolved Sourcesection, theReffield displays the image reference of the catalog.
-
Delete a catalog
You can delete a catalog by deleting its custom resource (CR).
Prerequisites
- You have a catalog installed.
Procedure
-
Delete a catalog by running the following command:
$ oc delete clustercatalog <catalog_name>Example outputclustercatalog.olm.operatorframework.io "my-redhat-operators" deleted
Verification
- Verify the catalog is deleted by running the following command:
$ oc get clustercatalog
Disable a default catalog
You can disable the Red Hat-provided catalogs that are included with OpenShift Container Platform by default.
Procedure
-
Disable a default catalog by running the following command:
$ oc patch clustercatalog openshift-certified-operators -p \'{"spec": {"availabilityMode": "Unavailable"}}' --type=mergeExample outputclustercatalog.olm.operatorframework.io/openshift-certified-operators patched
Verification
-
Verify the catalog is disabled by running the following command:
$ oc get clustercatalog openshift-certified-operatorsExample outputNAME LASTUNPACKED SERVING AGEopenshift-certified-operators False 6h54m