OLM Integration Package Manifests Quickstart
Note As operator framework has moved to using bundle format by default, the package manifest commands have been deprecated and will be removed soon. It is suggested that you follow the bundle quickstart]quickstart-bundle to package your operator.
Important: this guide assumes your project was scaffolded with
operator-sdk init --project-version=3.
These features are unavailable to projects of version
2 or less; this information can be found by inspecting
Creating package manifests
We will now create a package manifests format by running
make packagemanifests in the root of the memcached-operator project:
$ make packagemanifests /home/user/go/bin/controller-gen "crd:trivialVersions=true" rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases operator-sdk generate kustomize manifests -q kustomize build config/manifests | operator-sdk generate packagemanifests -q --version 0.0.1
A versioned manifests directory
packagemanifests/0.0.1 containing a CSV and all CRDs in
config/crds and a
package manifest YAML file
packagemanifests/<project-name>.package.yaml have been created in the Operator project.
Deploying an Operator with OLM
At this point in development we’ve generated all files necessary to build a memcached-operator registry. Now we’re ready to test the Operator with OLM.
Testing package manifests
operator-sdk run packagemanifests will create an Operator registry
from manifests and metadata in the memcached-operator project, and inform OLM that memcached-operator v0.0.1
is ready to be deployed. This process effectively replicates production deployment in a constrained manner
to make sure OLM can deploy our Operator successfully before attempting real production deployment.
run packagemanifests performs some optionally configurable setup under the hood, but for
most use cases the following invocation is all we need:
$ operator-sdk run packagemanifests --version 0.0.1 INFO Running operator from directory packagemanifests INFO Creating memcached-operator registry INFO Creating ConfigMap "olm/memcached-operator-registry-manifests-package" INFO Creating ConfigMap "olm/memcached-operator-registry-manifests-0-0-1" INFO Creating Deployment "olm/memcached-operator-registry-server" INFO Creating Service "olm/memcached-operator-registry-server" INFO Waiting for Deployment "olm/memcached-operator-registry-server" rollout to complete INFO Waiting for Deployment "olm/memcached-operator-registry-server" to rollout: 0 of 1 updated replicas are available INFO Deployment "olm/memcached-operator-registry-server" successfully rolled out INFO Creating resources INFO Creating CatalogSource "default/memcached-operator-ocs" INFO Creating Subscription "default/memcached-operator-v0-0-1-sub" INFO Creating OperatorGroup "default/operator-sdk-og" INFO Waiting for ClusterServiceVersion "default/memcached-operator.v0.0.1" to reach 'Succeeded' phase INFO Waiting for ClusterServiceVersion "default/memcached-operator.v0.0.1" to appear INFO Found ClusterServiceVersion "default/memcached-operator.v0.0.1" phase: Pending INFO Found ClusterServiceVersion "default/memcached-operator.v0.0.1" phase: InstallReady INFO Found ClusterServiceVersion "default/memcached-operator.v0.0.1" phase: Installing INFO Found ClusterServiceVersion "default/memcached-operator.v0.0.1" phase: Succeeded INFO Successfully installed "memcached-operator.v0.0.1" on OLM version "0.15.1" NAME NAMESPACE KIND STATUS memcacheds.cache.example.com default CustomResourceDefinition Installed memcached-operator.v0.0.1 default ClusterServiceVersion Installed
As long as both the
ClusterServiceVersion and all
CustomResourceDefinition's return an
the memcached-operator has been deployed successfully.
Now that we’re done testing the memcached-operator, we should probably clean up the Operator’s resources.
operator-sdk cleanup will do this for you:
$ operator-sdk cleanup memcached-operator INFO subscription "memcached-operator-v0-0-1-sub" deleted INFO customresourcedefinition "memcacheds.cache.example.com" deleted INFO clusterserviceversion "memcached-operator.v0.0.1" deleted INFO clusterrole "memcached-operator-metrics-reader" deleted INFO serviceaccount "default" deleted INFO role "memcached-operator.v0.0.1-jhjk7" deleted INFO rolebinding "memcached-operator.v0.0.1-jhjk7-default-mxv6m" deleted INFO catalogsource "memcached-operator-ocs" deleted INFO operatorgroup "operator-sdk-og" deleted INFO operator "memcached-operator" uninstalled