Operator Lifecycle Manager architecture

    Operator Lifecycle Manager (OLM) is composed of two Operators: the OLM Operator and the Catalog Operator.

    Each of these Operators is responsible for managing the custom resource definitions (CRDs) that are the basis for the OLM framework:

    Each of these Operators is also responsible for creating the following resources:

    The OLM Operator is not concerned with the creation of the required resources; you can choose to manually create these resources using the CLI or using the Catalog Operator. This separation of concern allows users incremental buy-in in terms of how much of the OLM framework they choose to leverage for their application.

    The OLM Operator uses the following workflow:

    1. Watch for cluster service versions (CSVs) in a namespace and check that requirements are met.

    2. If requirements are met, run the install strategy for the CSV.

    The Catalog Operator is responsible for resolving and installing cluster service versions (CSVs) and the required resources they specify. It is also responsible for watching catalog sources for updates to packages in channels and upgrading them, automatically if desired, to the latest available versions.

    To track a package in a channel, you can create a Subscription object configuring the desired package, channel, and the object you want to use for pulling updates. When updates are found, an appropriate InstallPlan object is written into the namespace on behalf of the user.

    The Catalog Operator uses the following workflow:

    1. Connect to each catalog source in the cluster.

    2. Watch for catalog sources and subscriptions and create install plans based on them.

    A package manifest is an entry in the Catalog Registry that associates a package identity with sets of CSVs. Within a package, channels point to a particular CSV. Because CSVs explicitly reference the CSV that they replace, a package manifest provides the Catalog Operator with all of the information that is required to update a CSV to the latest version in a channel, stepping through each intermediate version.