Operator Lifecycle Manager ========================== Prerequisites ^^^^^^^^^^^^^ * An index image built and pushed to a registry. * podman version 1.9.3+ * `grpcurl `_ * opm version 1.12.3+ * Access to a registry that supports Docker v2-2 .. code-block:: sh # curl -u user:password -ks https://registry.ocp.labs.stroila.ca:5000/v2/olm/redhat-operators/tags/list {"name":"olm/redhat-operators","tags":["v1"]} If you want to prune the default catalog and selectively mirror only a subset of Operators, install the `opm CLI `_ Disabling the default OperatorHub sources ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Before configuring OperatorHub to instead use local catalog sources in a restricted network environment, you must disable the default catalogs. * Disable the sources for the default catalogs by adding disableAllDefaultSources: true to the OperatorHub object: .. code-block:: sh oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]' --kubeconfig /tmp/assets/auth/kubeconfig Pruning an index image ^^^^^^^^^^^^^^^^^^^^^^ Run the source index image that you want to prune in a container .. code-block:: sh podman run -p 50051:50051 \ -it registry.redhat.io/redhat/redhat-operator-index:v4.6 In a separate terminal session, use the grpcurl command to get a list of the packages provided by the index .. code-block:: sh grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out Extract opm .. code-block:: sh oc image extract registry.redhat.io/openshift4/ose-operator-registry:v4.6 \ -a pull.json \ --path /usr/bin/opm:. \ --confirm sudo chmod +x opm sudo mv ./opm /usr/local/bin Run the following command to prune the source index of all but the specified packages .. code-block:: sh opm index prune -f registry.redhat.io/redhat/redhat-operator-index:v4.6 \ -p 3scale-operator,advanced-cluster-management,amq-broker,amq-broker-lts,amq-online,amq-streams,amq7-interconnect-operator,apicast-operator,awx-resource-operator,businessautomation-operator,cluster-kube-descheduler-operator,cluster-logging,clusterresourceoverride,codeready-workspaces,compliance-operator,container-security-operator,datagrid,eap,elasticsearch-operator,file-integrity-operator,fuse-apicurito,fuse-console,fuse-online,jaeger-product,kiali-ossm,kubevirt-hyperconverged,local-storage-operator,metering-ocp,mtc-operator,nfd,ocs-operator,openshift-jenkins-operator,openshift-pipelines-operator-rh,performance-addon-operator,ptp-operator,quay-bridge-operator,quay-operator,red-hat-camel-k,rh-service-binding-operator,rhsso-operator,serverless-operator,service-registry-operator,servicemeshoperator,sriov-network-operator,vertical-pod-autoscaler,web-terminal,windows-machine-config-operator \ -t registry.ocp.labs.stroila.ca:5000/redhat/redhat-operator-index:v4.6 Run the following command to push the new index image to your target registry .. code-block:: sh podman push registry.ocp.labs.stroila.ca:5000/redhat/redhat-operator-index:v4.6 Mirroring an Operator catalog ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ On a workstation with unrestricted network access, run the following command .. code-block:: sh oc adm catalog mirror \ registry.ocp.labs.stroila.ca:5000/redhat/redhat-operator-index:v4.6 \ registry.ocp.labs.stroila.ca:5000 \ -a pull.json \ --insecure \ --filter-by-os='.*' Creating a catalog from an index image ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Create a CatalogSource object that references your index image. * Modify the following to your specifications and save it as a catalogsource.yaml file: .. literalinclude:: config/catalogsource.yaml :linenos: :language: yaml * Use the file to create the CatalogSource object: .. code-block:: sh oc create -f catalogsource.yaml --kubeconfig /tmp/assets/auth/kubeconfig Verify the following resources are created successfully. * Check the pods: .. code-block:: sh # oc get pods -n openshift-marketplace --kubeconfig /tmp/assets/auth/kubeconfig NAME READY STATUS RESTARTS AGE marketplace-operator-7d6b5c5c5d-kj8bc 1/1 Running 0 28h ocp-operator-catalog-jrf6p 1/1 Running 0 4m18s * Check the catalog source: .. code-block:: sh # oc get catalogsource -n openshift-marketplace --kubeconfig /tmp/assets/auth/kubeconfig NAME DISPLAY TYPE PUBLISHER AGE ocp-operator-catalog OCP Operator Catalog grpc Stroila 14m * Check the package manifest: .. code-block:: sh # oc get packagemanifest -n openshift-marketplace --kubeconfig /tmp/assets/auth/kubeconfig NAME CATALOG AGE dv-operator OCP Operator Catalog 12m advanced-cluster-management OCP Operator Catalog 12m openshifttemplateservicebroker OCP Operator Catalog 12m elasticsearch-operator OCP Operator Catalog 12m ocs-operator OCP Operator Catalog 12m fuse-console OCP Operator Catalog 12m amq-broker-lts OCP Operator Catalog 12m cluster-logging OCP Operator Catalog 12m codeready-workspaces OCP Operator Catalog 12m amq-streams OCP Operator Catalog 12m mtc-operator OCP Operator Catalog 12m apicast-operator OCP Operator Catalog 12m quay-bridge-operator OCP Operator Catalog 12m manila-csi-driver-operator OCP Operator Catalog 12m datagrid OCP Operator Catalog 12m amq7-cert-manager OCP Operator Catalog 12m jaeger-product OCP Operator Catalog 12m amq-broker OCP Operator Catalog 12m cincinnati-operator OCP Operator Catalog 12m sriov-network-operator OCP Operator Catalog 12m amq-online OCP Operator Catalog 12m fuse-online OCP Operator Catalog 12m red-hat-camel-k OCP Operator Catalog 12m rh-service-binding-operator OCP Operator Catalog 12m ptp-operator OCP Operator Catalog 12m service-registry-operator OCP Operator Catalog 12m openshiftansibleservicebroker OCP Operator Catalog 12m rhsso-operator OCP Operator Catalog 12m metering-ocp OCP Operator Catalog 12m kubevirt-hyperconverged OCP Operator Catalog 12m nfd OCP Operator Catalog 12m vertical-pod-autoscaler OCP Operator Catalog 12m quay-operator OCP Operator Catalog 12m amq7-interconnect-operator OCP Operator Catalog 12m eap OCP Operator Catalog 12m kiali-ossm OCP Operator Catalog 12m web-terminal OCP Operator Catalog 12m fuse-apicurito OCP Operator Catalog 12m awx-resource-operator OCP Operator Catalog 12m serverless-operator OCP Operator Catalog 12m aws-ebs-csi-driver-operator OCP Operator Catalog 12m clusterresourceoverride OCP Operator Catalog 12m businessautomation-operator OCP Operator Catalog 12m openshift-pipelines-operator-rh OCP Operator Catalog 12m servicemeshoperator OCP Operator Catalog 12m local-storage-operator OCP Operator Catalog 12m 3scale-operator OCP Operator Catalog 12m amq-broker-rhel8 OCP Operator Catalog 12m cluster-kube-descheduler-operator OCP Operator Catalog 12m performance-addon-operator OCP Operator Catalog 12m container-security-operator OCP Operator Catalog 12m .. image:: _static/LocalOLM.png :align: center :alt: OLM