Using the Catalog with OLM

Make your operator available for OLM in a cluster

To add a catalog image to your cluster for use with Operator Lifecycle Manager (OLM), create a CatalogSource referencing the image you created and pushed to your favourite container registry:

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: example-manifests
  namespace: default
spec:
  sourceType: grpc
  image: example-registry:latest

This will download the referenced image and start a pod in the designated namespace (default). Watch the catalog pods to verify it’s starting its gRPC frontend correctly:

$ kubectl logs example-manifests-wfh5h -n default

time="2019-03-18T10:20:14Z" level=info msg="serving registry" database=bundles.db port=50051

Once the catalog has been loaded, your Operators package definitions are read by the package-server, a component of OLM. Watch your Operator packages become available:

$ watch kubectl get packagemanifests

[...]

NAME                     AGE
prometheus               13m
etcd                     27m

Once loaded, you can query a particular package for its Operators that it serves across multiple channels. To obtain the default channel run:

$ kubectl get packagemanifests etcd -o jsonpath='{.status.defaultChannel}'

alpha

With this information, the operators package name, the channel and the name and namespace of your catalog you can now subscribe to Operators with Operator Lifecycle Manager. This represents an intent to install an Operator and get subsequent updates from the catalog:

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: etcd-subscription
  namespace: default 
spec:
  channel: alpha
  name: etcd
  source: example-manifests
  sourceNamespace: default