2. Operator Lifecycle Manager¶
2.1. Prerequisites¶
An index image built and pushed to a registry.
podman version 1.9.3+
opm version 1.12.3+
Access to a registry that supports Docker v2-2
# 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
2.2. 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:
oc patch OperatorHub cluster --type json \
-p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]' --kubeconfig /tmp/assets/auth/kubeconfig
2.3. Pruning an index image¶
Run the source index image that you want to prune in a container
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
grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out
Extract opm
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
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
podman push registry.ocp.labs.stroila.ca:5000/redhat/redhat-operator-index:v4.6
2.4. Mirroring an Operator catalog¶
On a workstation with unrestricted network access, run the following command
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='.*'
2.5. 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 | apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: ocp-operator-catalog
namespace: openshift-marketplace
spec:
sourceType: grpc
image: registry.ocp.labs.stroila.ca:5000/redhat/redhat-operators:v1
displayName: OCP Operator Catalog
publisher: grpc
updateStrategy:
registryPoll:
interval: 30m
|
Use the file to create the CatalogSource object:
oc create -f catalogsource.yaml --kubeconfig /tmp/assets/auth/kubeconfig
Verify the following resources are created successfully.
Check the pods:
# 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:
# 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:
# 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