OLM deployment resources are templated so that they can be easily configured for different deployment environments.
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
Check out the latest releases on github for release-specific install instructions.
IMPORTANT: OLM is installed by default in OpenShift 4.0 and above.
OLM can be installed with the operator-sdk command operator-sdk olm install
more information is available in the operator-sdk documentation.
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 values.yaml
# 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:
-
Create a
my-values.yaml
like the example above with the desired configuration or choose an existing one from this repository. The latest production values can be found in deploy/upstream/values.yaml. -
Generate deployment files from the templates and the
my-values.yaml
usingpackage_release.sh
# 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 deploy/tectonic-alm-operator/manifests/$(ver)
.
It is possible to override the Global Catalog Namespace by setting the GLOBAL_CATALOG_NAMESPACE
environment variable in the catalog operator deployment.
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 etcd
, vault
, and 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
OLM can be uninstalled with the operator-sdk olm uninstall
command. More information is available in the operator-sdk documentation