OLM deployment resources are templated so that they can be easily configured for different deployment environments.
Check out the latest releases on github for release-specific install instructions.
Installing the CRDs first gives them a chance to register before installing the rest, which requires the CRDs exist.
kubectl create -f deploy/upstream/quickstart/crds.yaml kubectl create -f deploy/upstream/quickstart/olm.yaml
OLM is installed by default in OpenShift 4.0 and above.
Run locally with minikube
This command starts minikube, builds the OLM containers locally with the minikube-provided docker, and uses the local configuration in local-values.yaml to build localized deployment resources for OLM.
You can verify that the OLM components have been successfully deployed by running
kubectl -n local get deployments
Customizing OLM installation
Deployments of OLM can be stamped out with different configurations by writing a
values.yaml file and running commands to generate resources.
Here's an example
# sets the apiversion to use for rbac-resources. Change to `authorization.openshift.io` for openshift rbacApiVersion: rbac.authorization.k8s.io # namespace is the namespace the operators will _run_ namespace: olm # watchedNamespaces is a comma-separated list of namespaces the operators will _watch_ for OLM resources. # Omit to enable OLM in all namespaces watchedNamespaces: olm # catalog_namespace is the namespace where the catalog operator will look for global catalogs. # entries in global catalogs can be resolved in any watched namespace catalog_namespace: olm # operator_namespace is the namespace where the operator runs operator_namespace: operators # OLM operator run configuration olm: # OLM operator doesn't do any leader election (yet), set to 1 replicaCount: 1 # The image to run. If not building a local image, use sha256 image references image: ref: quay.io/operator-framework/olm:local pullPolicy: IfNotPresent service: # port for readiness/liveness probes internalPort: 8080 # catalog operator run configuration catalog: # Catalog operator doesn't do any leader election (yet), set to 1 replicaCount: 1 # The image to run. If not building a local image, use sha256 image references image: ref: quay.io/operator-framework/olm:local pullPolicy: IfNotPresent service: # port for readiness/liveness probes internalPort: 8080
To configure a release of OLM for installation in a cluster:
my-values.yamllike the example above with the desired configuration or choose an existing one from this repository. The latest production values can be found in deploy/tectonic-alm-operator/values.yaml.
Generate deployment files from the templates and the
# first arg must be a semver-compatible version string # second arg is the output directory # third arg is the values.yaml file ./scripts/package_release.sh 1.0.0-myolm ./my-olm-deployment my-values.yaml
Deploy to kubernetes:
kubectl apply -f ./my-olm-deployment/templates/
The above steps are automated for official releases with
make ver=0.3.0 release, which will output new versions of manifests in
Overriding the Global Catalog Namespace
It is possible to override the Global Catalog Namespace by setting the
GLOBAL_CATALOG_NAMESPACE environment variable in the catalog operator deployment.
Subscribe to a Package and Channel
Cloud Services can be installed from the catalog by subscribing to a channel in the corresponding package.
If using one of the
local run options, this will subscribe to
prometheus operators. Subscribing to a service that doesn't exist yet will install the operator and related CRDs in the namespace.
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: etcd namespace: olm spec: channel: singlenamespace-alpha name: etcd source: operatorhubio-catalog sourceNamespace: olm --- apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: prometheus namespace: olm spec: channel: alpha name: prometheus source: operatorhubio-catalog sourceNamespace: olm