Operator Registry

What is Operator-Registry?

Operator Registry runs in a Kubernetes cluster to provide operator catalog data to Operator Lifecycle Manager.

Operator Registry provides the following binaries:

  • opm, which generates and updates registry databases as well as the index images that encapsulate them.
  • initializer, which takes as an input a directory of operator manifests and outputs a sqlite database containing the same data for querying.
  • registry-server, which takes a sqlite database loaded with manifests, and exposes a gRPC interface to it.
  • configmap-server, which takes a kubeconfig and a configmap reference, and parses the configmap into the sqlite database before exposing it via the same interface as registry-server.

And libraries:

  • pkg/client - providing a high-level client interface for the gRPC api.
  • pkg/api - providing low-level client libraries for the gRPC interface exposed by registry-server.
  • pkg/registry - providing basic registry types like Packages, Channels, and Bundles.
  • pkg/sqlite - providing interfaces for building sqlite manifest databases from ConfigMaps or directories, and for querying an existing sqlite database.
  • pkg/lib - providing external interfaces for interacting with this project as an api that defines a set of standards for operator bundles and indexes.
  • pkg/containertools - providing an interface to interact with and shell out to common container tooling binaries (if installed on the environment)

Why do I want Operator Registry?

Operator registry allows you to package your operator in a defined format and make it available for OLM so that it can install your operator in a kubernetes cluster.

You can find all the releases of operator-registry in the github release page


  1. Clone the operator registry repository:
git clone https://github.com/operator-framework/operator-registry
  1. Build the binaries using this command:
make all

This generates the required binaries that can be used to package your operator

Building a Catalog

Build a Catalog of Operators using Operator-Registry

Using the Catalog locally

Test your Catalog locally

Using the Catalog with OLM

Make your operator available for OLM in a cluster