Skip to content

Adding a catalog of extensions to a cluster

Extension authors can publish their products in catalogs. Catalogs are curated collections of Kubernetes extensions, such as Operators. Cluster administrators can add these catalogs to their cluster. Cluster administrators can enable polling to get over-the-air updates to catalogs when extension authors publish changes such as bug fixes and new features.

For example, the Kubernetes community Operators catalog is a catalog of curated extensions that is developed by the Kubernetes community. You can see the available extensions at Operatorhub.io. This catalog is distributed as an image quay.io/operatorhubio/catalog that can be installed on clusters.

Prerequisites

Procedure

  1. Create a catalog custom resource (CR):

    catalog_cr.yaml
    apiVersion: catalogd.operatorframework.io/v1alpha1
    kind: Catalog
    metadata:
      name: operatorhubio
    spec:
      source:
        type: image
        image:
          ref: <catalog_image>
          pollInterval: <poll_interval_duration>
    
    catalog_name
    Specifies the image reference for the catalog you want to install, such as quay.io/operatorhubio/catalog:latest.
    poll_interval_duration
    Specifies the interval for polling the remote registry for newer image digests. The default value is 24h. Valid units include seconds (s), minutes (m), and hours (h). To disable polling, set a zero value, such as 0s.
    Example `operatorhubio.yaml` CR
    apiVersion: catalogd.operatorframework.io/v1alpha1
    kind: Catalog
    metadata:
      name: operatorhub
    spec:
      source:
        type: image
        image:
          ref: quay.io/operatorhubio/catalog:latest
          pollInterval: 1h
    
  2. Apply the catalog CR:

    $ kubectl apply -f <catalog_cr>.yaml
    
    Example output
    catalog.catalogd.operatorframework.io/redhat-operators created
    

Verification

  • Run the following commands to verify the status of your catalog:

    • Check if your catalog is available on the cluster:

      $ kubectl get catalog
      
      Example output
      NAME            PHASE   AGE
      operatorhubio           9s
      
    • Check the status of your catalog:

      $ kubectl describe catalog
      
      Example output
      Name:         operatorhubio
      Namespace:
      Labels:       <none>
      Annotations:  <none>
      API Version:  catalogd.operatorframework.io/v1alpha1
      Kind:         Catalog
      Metadata:
        Creation Timestamp:  2024-03-12T19:34:50Z
        Finalizers:
          catalogd.operatorframework.io/delete-server-cache
        Generation:        2
        Resource Version:  6469
        UID:               2e2778cb-dda6-4645-96b7-992e8dd37503
      Spec:
        Source:
          Image:
            Poll Interval:  15m0s
            Ref:            quay.io/operatorhubio/catalog:latest
          Type:             image
      Status:
        Conditions:
          Last Transition Time:  2024-03-12T19:35:34Z
          Message:
          Reason:                UnpackSuccessful
          Status:                True
          Type:                  Unpacked
        Content URL:             http://catalogd-catalogserver.catalogd-system.svc/catalogs/operatorhubio/all.json
        Observed Generation:     2
        Phase:                   Unpacked
        Resolved Source:
          Image:
            Last Poll Attempt:  2024-03-12T19:35:26Z
            Ref:                quay.io/operatorhubio/catalog:latest
            Resolved Ref:       quay.io/operatorhubio/catalog@sha256:dee29aaed76fd1c72b654b9bc8bebc4b48b34fd8d41ece880524dc0c3c1c55ec
          Type:                 image
      Events:                   <none>