Operator Deletion

This page describes how to delete an operator and troubleshoot certain failure scenarios.


If the operator is managed by a Syn component, remove the component (instance) from your cluster.

Follow the Deleting Operators from a cluster using the CLI guide from Red Hat.


If for some reason the deletion fails and you still have an operators.operators.coreos.com object which get’s recreated after deletion you can try the following (elasticsearch-operator.openshift-logging used as an example):

For all resources from github.com/operator-framework/operator-lifecycle-manager/blob/608d6bf1991cdc671a94848e884290a4bc4d9804/pkg/controller/operators/components.go get all objects with the label operators.coreos.com/<operator-object-name>='':

kubectl --as=cluster-admin get \
deployment, \
service, \
namespace, \
apiservicelist, \
apiservice, \
subscription, \
csv, \
installplan, \
operatorcondition, \
sa, \
role, \
rolebinding, \
clusterrole, \
clusterrolebinding \
-Al operators.coreos.com/elasticsearch-operator.openshift-logging=''

For each object, check if it’s still required (the case if another operators.coreos.com/…​ label exists):

kubectl --as=cluster-admin -n openshift-logging get sa --show-labels

If an object is still required, unlabel it. Otherwise delete it:

kubectl --as=cluster-admin -n openshift-logging delete sa elasticsearch-operator

Finally, delete the operator object:

kubectl --as=cluster-admin scale deployment -n openshift-operator-lifecycle-manager olm-operator --replicas=0
kubectl --as=cluster-admin delete operators.operators.coreos.com elasticsearch-operator.openshift-logging
kubectl --as=cluster-admin scale deployment -n openshift-operator-lifecycle-manager olm-operator --replicas=1