11.10. 从社区版本的 External Secrets Operator 迁移到 External Secrets Operator for Red Hat OpenShift


您可以从 External Secrets Operator 的社区版本迁移。迁移到 External Secrets Operator for Red Hat OpenShift 后为您提供了一个官方支持的产品,可让您获得企业级支持。它还为您提供了从安装到升级的无缝集成。

以下迁移版本已被完全测试。

Expand
上游版本安装方法下游版本

0.11.0

OLM

v1.0.0 GA

0.19.0

Helm

v1.0.0 GA

注意

迁移不支持回滚。

注意

External Secrets Operator for Red Hat OpenShift 基于上游版本 0.19.0。不要试图更高的 External Secrets Operator 进行迁移。

11.10.1. 删除社区外版本的 External Secrets Operator

您必须删除社区版本的 External Secrets Operator 的 operatorconfigs.operator.external-secrets.io 自定义资源(CR),以删除由社区版本的 External Secret Operator 安装的 external-secrets 应用程序。

先决条件

  • 您必须以具有 cluster-admin 角色的用户身份登录。
  • 您必须安装并配置 oc 命令行工具。

流程

  1. 运行以下命令,查找社区版本的 Operator 的namespace

    $ oc get operatorconfigs.operator.external-secrets.io -A
    Copy to Clipboard Toggle word wrap

    以下是查找 namespace 的示例:

    NAMESPACE             NAME        AGE
    external-secrets      cluster     9m18s
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来删除 operatorconfig

    $ oc delete operatorconfig <config_name> -n <operator_namespace>
    Copy to Clipboard Toggle word wrap

验证

  1. 要验证 operatorconfig 是否已删除,请运行以下命令:

    $ oc get operatorconfig -n <operator_namespace>
    Copy to Clipboard Toggle word wrap

    命令必须返回 no resource found

  2. 要验证旧 Webhook 是否已删除,请运行以下命令:

    $ oc get validatingwebhookconfigurations | grep external-secrets
    Copy to Clipboard Toggle word wrap
    $ oc get mutatingwebhookconfigurations | grep external-secrets
    Copy to Clipboard Toggle word wrap

    命令必须没有返回任何结果。

11.10.2. 卸载社区版的 External Secrets Operator

您必须卸载社区版的 External Secret Operator,以防止重新创建或与新 Secret Operator 冲突。

先决条件

  • 您必须以具有 cluster-admin 角色的用户身份登录。
  • 您必须已删除 operatorconfig

流程

  1. 如果您通过 Operator Lifecycle Manager (OLM) 订阅安装社区版的 External Secret Operator,请执行以下步骤来删除 Operator:

    1. 运行以下命令来查找订阅名称:

      $ oc get subscription -n <operator_namespace> | grep external-secrets
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来删除订阅:

      $ oc delete subscription <subscription_name> -n <operator_namespace>
      Copy to Clipboard Toggle word wrap
    3. 运行以下命令来删除 ClusterServiceVersion:

      $ oc delete csv <csv_name> -n <operator_namespace>
      Copy to Clipboard Toggle word wrap
  2. 如果通过 Helm 安装了社区版 {external-secret-operator},请运行以下命令删除 Operator:

    $ helm uninstall <release_name> -n <operator_namespace>
    Copy to Clipboard Toggle word wrap
  3. 如果使用原始清单安装社区版 {external-secret-operator},请运行以下命令删除 Operator:

    $ oc delete -f /path/to/your/old/manifests.yaml -n <operator_namespace>
    Copy to Clipboard Toggle word wrap

在删除了 operatorconfig 并且社区版 {external-secret-operator-short} 被删除后,您可以安装 External Secrets Operator for Red Hat OpenShift。如需更多信息,请参阅安装 External Secrets Operator for Red Hat OpenShift

11.10.4. 创建 ExternalSecretsConfig Operator

创建 ExternalSecretsConfig 的目的是安装并配置 external-secrets。该配置可确保启用了 cert-manager 和 Bitwarden 支持。

先决条件

  • 已安装 External Secrets Operator for Red Hat OpenShift。
  • 已安装 cert-manager Operator for Red Hat OpenShift。
  • 您可以使用 cluster-admin 权限访问集群。

流程

  1. 通过定义包含以下内容的 YAML 文件来创建 externalsecretsconfig 文件:

    apiVersion: operator.openshift.io/v1alpha1
    kind: ExternalSecretsConfig
    metadata:
      labels:
        app.kubernetes.io/name: cluster
      name: cluster
    spec:
      appConfig:
        logLevel: 3
      webhookConfig:
        certificateCheckInterval: 5m0s
      controllerConfig:
        certProvider:
          certManager:
            certificateDuration: 8760h0m0s
            certificateRenewBefore: 30m0s
            injectAnnotations: "true"
            issuerRef:
              group: cert-manager.io
              kind: Issuer
              name: _<created_issuer_name>_
        mode: Enabled
        networkPolicies:
        - componentName: ExternalSecretsCoreController
          egress:
          - ports:
            - port: 443
              protocol: TCP
            - port: 9998
              protocol: TCP
            name: allow-external-secrets-egress
        plugins:
          bitwardenSecretManagerProvider:
            mode: Enabled
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来创建 ExternalSecretsConfig 对象:

    $ oc create -f externalsecretsconfig.yaml
    Copy to Clipboard Toggle word wrap

验证

验证所有自定义资源(CR)是否存在,并且 API 是否使用 v1 而不是 v1beta1。CR 会被保留并由新的 Operator 自动转换。

  1. 要验证 external-secrets pod 是否处于 running 状态,请运行以下命令:

    $ oc get pods -n external-secret
    Copy to Clipboard Toggle word wrap

    以下是 external-secrets pod 处于 running 状态的输出示例

    NAME                                          READY        STATUS        RESTARTS     AGE
    bitwarden-sdk-server-5b4cf48766-w7zp7         1/1          Running       0            5m
    external-secrets-5854b85dd5-m6zf9             1/1          Running       0            5m
    external-secrets-webhook-5cb85b8fdb-6jtqb     1/1          Running       0            5m
    Copy to Clipboard Toggle word wrap
  2. 要验证 SecretStore CR 是否存在,请运行以下命令:

    $ oc get secretstores.external-secrets.io -A
    Copy to Clipboard Toggle word wrap

    以下是验证是否存在 SecretStore 的输出示例:

    NAMESPACE               NAME                         AGE         STATUS      CAPABILITIES    READY
    external-secrets-1      gcp-store                    18min       Valid       ReadWrite       True
    external-secrets-2      aws-secretstore              11min       Valid       ReadWrite       True
    external-secrets        bitwarden-secretsmanager     20min       Valid       Readwrite       True
    Copy to Clipboard Toggle word wrap
  3. 要验证 ExternalSecret CR 是否存在,请运行以下命令:

    $ oc get externalsecrets.external-secrets.io -A
    Copy to Clipboard Toggle word wrap

    以下是验证是否存在 SecretStore 的输出示例:

    NAMESPACE             NAME                    STORE                      REFRESH INTERVAL    STATUS          READY
    external-secrets-1    gcp-externalsecret      gcp-store                  1hr                 SecretSynced    True
    external-secrets-2    aws-external-secret     aws-secret-store           1hr                 SecretSynced    True
    external-secrets      bitwarden               bitwarden-secretsmanager   1hr                 SecretSynced    True
    Copy to Clipboard Toggle word wrap
  4. 要验证 SecretStore 是否为 apiVersion: external-secrets.io/v1,请运行以下命令:

    $ oc get secretstores.external-secrets.io -n external-secrets-1 gcp-store -o yaml
    Copy to Clipboard Toggle word wrap

    以下是 SecretStoreapiVersion: 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
    Copy to Clipboard Toggle word wrap
  5. 要验证 ExternalSecret 是否为 apiVersion: external-secrets.io/v1,请运行以下命令:

    $ oc get externalsecrets.external-secrets.io -n external-secrets-1 gcp-externalsecret -o yaml
    Copy to Clipboard Toggle word wrap

    以下是 ExternalSecretapiVersion: 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
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat