Migrating from the community External Secrets Operator to the External Secrets Operator for Red Hat OpenShift¶
You can migrate from the community version of the External Secrets Operator. Migrating to External Secrets Operator for Red Hat OpenShift provides you with an officially supported product giving you access to enterprise-grade support. It also provides you with seamless integration from installation to upgrades.
The following migration versions have been fully tested.
| Upstream version | Installation method | Downstream version |
|---|---|---|
| 0.11.0 | OLM | v1.0.0 GA |
| 0.19.0 | Helm | v1.0.0 GA |
Note
The migration does not support rollbacks.
Note
External Secrets Operator for Red Hat OpenShift is based on the upstream version 0.19.0. Do not try to migrate from a higher version of the External Secrets Operator.
Deleting the community External Secrets Operator¶
Delete the configuration resource for the community Operator so that the legacy application is fully removed. This action prevents conflicts before installing the External Secrets Operator for Red Hat OpenShift.
Prerequisites
- You must be logged in as a user with the
cluster-adminrole. - You must have the
occommand-line tool installed and configured.
Procedure
-
Find your community Operator’s
namespaceby running the following command:The following is an example of finding the
namespace: -
Delete the
operatorconfigcustom resrouce (CR) by running the following command:
Verification
-
To verify that the
operatorconfigCR is deleted, run the following command:The command must return
no resource found. -
To verify that the old webhooks are deleted, run the following commands:
The commands must return no results.
Uninstalling the community External Secrets Operator¶
Uninstall the community External Secrets Operator to prevent conflicts or accidental recreation after you migrate to External Secrets Operator for Red Hat OpenShift.
You must uninstall the community External Secrets Operator to prevent it from being recreated or conflicting with the new one. The steps to uninstall are different based on how the community External Secrets Operator was installed but the prerequisites are the same for each.
Uninstalling a helm installed community External Secrets Operator¶
Remove the community External Secrets Operator that was installed using Helm. This helps you free up resources and maintain a clean environment for your cluster.
Prerequisites
- You must be logged in as a user with the
cluster-adminrole. - You must have deleted the
operatorconfigcustom resource (CR).
Procedure
-
Install the External Secrets Operator for Red Hat OpenShift. The
external-secrets-operatornamespace must be null. -
Delete the External Secrets Operator by running the following command:
Note
Using
helm deletemight delete all Custom Resource Definitions (CRDs) and CRs. It is recommended to install the downstream Operator first if the namespaceexternal-secrets-operatoris empty.
Uninstalling an Operator Lifecycle Manager installed community External Secrets Operator¶
Remove the community External Secrets Operator that was installed by an Operator Lifecycle Manager (OLM) subscription. This helps you free up resources and maintain a clean environment for your cluster.
Prerequisites
- You must be logged in as a user with the
cluster-adminrole. - You must have deleted the
operatorconfigcustom resource (CR).
Procedure
-
Find the subscription name by running the following command:
-
Delete the subscription by running the following command:
-
Delete the
ClusterServiceVersionby running the following command:
Uninstalling a raw manifest installed community External Secrets Operator¶
Remove the community External Secrets Operator that was installed by raw manifests. This helps you free up resources and maintain a clean environment for your cluster.
Prerequisites
- You must be logged in as a user with the
cluster-adminrole. - You must have deleted the
operatorconfigCR.
Procedure
-
To remove the communiity External Secrets Operator that was installed by raw manifests, run the following command:
Installing the External Secrets Operator for Red Hat OpenShift¶
Install the External Secrets Operator for Red Hat OpenShift after cleaning up the community version. This establishes the officially supported service for managing secrets in your cluster.
Creating the ExternalSecretsConfig Operator¶
Create the ExternalSecretsConfig resource to install and configure the core external-secrets component. This setup helps ensure that features like Bitwarden and cert-manager support are correctly enabled.
Prerequisites
- External Secrets Operator for Red Hat OpenShift is installed.
- cert-manager Operator for Red Hat OpenShift is installed.
- You have access to the cluster with
cluster-adminprivileges.
Procedure
-
Create an
externalsecretsconfigfile by defining a YAML file with the following content:apiVersion: operator.openshift.io/v1alpha1 kind: ExternalSecretsConfig metadata: labels: app.kubernetes.io/name: cluster name: cluster spec: appConfig: logLevel: 1 controllerConfig: networkPolicies: - componentName: ExternalSecretsCoreController egress: - {} name: allow-external-secrets-egress plugins: {} -
Create the
ExternalSecretsConfigobject by running the following command:
Verification
Verify that all custom resources (CRs) are present and that the APIs are using v1 instead of v1beta1. There CRs are retained and automatically converted by the new Operator.
-
To verify that the
external-secretspods are in arunningstate, run the following command:The following is example output that the
external-secretspods are in arunningstate. -
To verify that the
SecretStoreCR is present, run the following command:The following is example output from validating that the
SecretStoreis present: -
To verify that the
ExternalSecretCR is present, run the following command:The following is example output from validating that the
SecretStoreis present: -
To verify that the
SecretStoreisapiVersion: external-secrets.io/v1, run the following command:The following is example output that the
SecretStoreisapiVersion: external-secrets.io/v1.apiVersion: external-secrets.io/v1 kind: SecretStore metadata: creationTimestamp: "2025-10-27T11:38:19Z" generation: 1 name: gcp-store namespace: external-secrets-1 resourceVersion: "104519" uid: 7bccb0cc-2557-4f4a-9caa-1577f0108f4b spec: . . . status: capabilities: ReadWrite conditions: - lastTransitionTime: "2025-10-27T11:38:19Z" message: store validated reason: Valid status: "True" type: Ready -
To verify that the
ExternalSecretisapiVersion: external-secrets.io/v1, run the following command:The following is example output that the
ExternalSecretisapiVersion: external-secrets.io/v1.apiVersion: external-secrets.io/v1 kind: ExternalSecret metadata: creationTimestamp: "2025-10-27T11:39:03Z" generation: 1 name: gcp-externalsecret namespace: external-secrets-1 resourceVersion: "104532" uid: 93a3295a-a3ad-4304-90e1-1328d951e5fb spec: . . . status: binding: name: k8s-secret-gcp conditions: - lastTransitionTime: "2025-10-27T11:39:03Z" message: secret synced reason: SecretSynced status: "True" type: Ready refreshTime: "2025-10-27T12:13:15Z" syncedResourceVersion: 1-f47fe3c0b255b6dd8047cdffa772587bb829efe7a1cb70febeda2eb2