将 Apigee Hybrid 升级到 1.15 版

此过程涉及从 Apigee Hybrid 1.14.x 版升级到 Apigee Hybrid 1.15.0 版。

相对于 Apigee Hybrid v1.14 的更改

请注意以下更改:

  • 对大消息载荷的支持:从 1.15 版以及 1.14.2 补丁版本开始,Apigee 现在支持高达 30MB 的消息载荷。如需了解详情,请参阅以下主题:
  • 更严格的类实例化检查:Apigee Hybrid 的 JavaCallout 政策现在在 Java 类实例化期间包含额外的安全功能。增强型安全措施可防止部署直接或间接尝试执行不允许的操作的政策。

    在大多数情况下,现有政策将继续按预期发挥作用,不会出现任何问题。不过,依赖于第三方库的政策或包含间接触发需要提升权限的操作的自定义代码的政策可能会受到影响。

如需详细了解 Hybrid 1.14 版中的功能,请参阅 Apigee Hybrid v1.14.0 版本说明

前提条件

升级到 Hybrid 1.15 版之前,请确保您的安装满足以下要求:

在升级到 1.15.0 之前 - 限制和重要注意事项

  • Apigee Hybrid 1.15.0 引入了新的增强型单环境代理限制,可让您在单个环境中部署更多代理和共享流。如需了解每个环境可部署的代理和共享流数量的限制,请参阅限制:API 代理。此功能仅适用于新创建的 Hybrid 组织,无法应用于升级后的组织。如需使用此功能,请执行 Hybrid 1.15.0 的全新安装,然后创建新的组织。

    此功能仅在 2024 年订阅方案中提供,并受该订阅授予的权益的约束。如需详细了解此功能,请参阅增强型个别环境代理限制

  • 升级到 Apigee Hybrid 1.15 版可能需要停机。

    将 Apigee 控制器升级到 1.15.0 版时,所有 Apigee 部署都将执行滚动式重启。为了最大限度地减少滚动重启期间生产混合环境中的停机时间,请确保您至少(在相同或不同的区域/数据中心)运行两个集群。将所有生产流量转移到单个集群并且让您要升级的集群下线,然后继续执行升级过程。对每个集群重复执行此过程。

    Apigee 建议您在开始升级后,应尽快升级所有集群,以降低影响生产的可能性。第一个集群升级后,其余所有集群必须在何时升级是没有限制的。但是,在所有剩余集群升级之前,Cassandra 备份和恢复不能使用混合版本。例如,Hybrid 1.14 的备份不能用于恢复 Hybrid 1.15 实例。

  • 在升级过程中,管理平面的更改无需完全暂停。下面的升级说明中列出了对管理平面更改的所有必需的临时暂停操作。

升级到 1.15.0 版概览

以下各部分介绍升级 Apigee Hybrid 的过程:

  1. 准备升级
  2. 安装 Hybrid 运行时 1.15.0 版

准备升级到 1.15 版

备份 Hybrid 安装

  1. 这些说明将环境变量 APIGEE_HELM_CHARTS_HOME 用于文件系统中安装了 Helm 图表的目录。如果需要,请切换到此目录,然后使用以下命令定义变量:

    Linux

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Mac OS

    export APIGEE_HELM_CHARTS_HOME=$PWD
    echo $APIGEE_HELM_CHARTS_HOME

    Windows

    set APIGEE_HELM_CHARTS_HOME=%CD%
    echo %APIGEE_HELM_CHARTS_HOME%
  2. 创建 1.14 版 $APIGEE_HELM_CHARTS_HOME/ 目录的备份副本。您可以使用任何备份过程。例如,您可以使用以下命令创建整个目录的 tar 文件:
    tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.14-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
  3. 按照 Cassandra 备份和恢复中的说明备份 Cassandra 数据库。
  4. 如果您使用替换文件中的服务证书文件 (.json) 对服务账号进行身份验证,请确保服务账号证书文件位于正确的 Helm 图表目录中。Helm 图表无法读取每个图表目录之外的文件。

    如果您使用 Kubernetes Secret 或 Workload Identity Federation for GKE 对服务账号进行身份验证,则无需执行此步骤。

    下表展示了每个服务账号文件的目标位置,具体取决于您的安装类型:

    生产

    服务账号 默认文件名 Helm 图表目录
    apigee-cassandra PROJECT_ID-apigee-cassandra.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    apigee-logger PROJECT_ID-apigee-logger.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-mart PROJECT_ID-apigee-mart.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-metrics PROJECT_ID-apigee-metrics.json $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    apigee-runtime PROJECT_ID-apigee-runtime.json $APIGEE_HELM_CHARTS_HOME/apigee-env
    apigee-synchronizer PROJECT_ID-apigee-synchronizer.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
    apigee-udca PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-org/
    apigee-watcher PROJECT_ID-apigee-watcher.json $APIGEE_HELM_CHARTS_HOME/apigee-org/

    非生产

    创建以下每个目录中的 apigee-non-prod 服务账号文件的副本:

    服务账号 默认文件名 Helm 图表目录
    apigee-non-prod PROJECT_ID-apigee-non-prod.json $APIGEE_HELM_CHARTS_HOME/apigee-datastore/
    $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    $APIGEE_HELM_CHARTS_HOME/apigee-org/
    $APIGEE_HELM_CHARTS_HOME/apigee-env/
  5. 确保您的 TLS 证书和密钥文件(.crt.key 和/或 .pem)位于 $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/ 目录中。

升级 Kubernetes 版本

检查您的 Kubernetes 平台版本,并根据需要将 Kubernetes 平台升级到 Hybrid 1.14 和 Hybrid 1.15 均支持的版本。如需帮助,请参阅该平台的相关文档。

移除 Istio CRD

Apigee Hybrid 集群中存在 istio.io 自定义资源定义 (CRD) 可能会导致 apigee-ingressgateway-manager Pod 失败。

如需详细了解 Apigee Hybrid 中的 istio.io CRD,请参阅已知问题 416634326

  1. 使用以下命令确定您的集群中是否有 istio.io CRD:
    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io

    如果您的集群有 istio.io CRD,输出将如下所示:

    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io
      authorizationpolicies.security.istio.io
      destinationrules.networking.istio.io
      envoyfilters.networking.istio.io
      gateways.networking.istio.io
      peerauthentications.security.istio.io
      proxyconfigs.networking.istio.io
      requestauthentications.security.istio.io
      serviceentries.networking.istio.io
      sidecars.networking.istio.io
      telemetries.telemetry.istio.io
      virtualservices.networking.istio.io
      wasmplugins.extensions.istio.io
      workloadentries.networking.istio.io
      workloadgroups.networking.istio.io
    
  2. 可选:将 CRD 保存到本地,以防需要重新创建它们:
    kubectl get crd $(cat istio-crd.csv) -o yaml > istio-crd.yaml
  3. 删除 istio.io CRD:

    试运行:

    kubectl delete crd $(cat istio-crd.csv) --dry-run=client

    执行:

    kubectl delete crd $(cat istio-crd.csv)
  4. 列出要重新安装或重新创建的 ingress-manager Pod:
    kubectl get deployments -n apigee

    输出示例:

    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager       1/1     1            1           32d
    apigee-ingressgateway-manager   2/2     2            2           32d
    
  5. 重启 ingress-manager pod:
    kubectl rollout restart deployment -n APIGEE_NAMESPACE apigee-ingressgateway-manager

安装 Hybrid 1.15.0 运行时

配置数据收集流水线。

从 Hybrid v1.14 开始,系统会默认为所有 Apigee Hybrid 组织启用新的分析和调试数据流水线。您必须按照启用分析发布方访问权限中的步骤配置授权流程。

准备 Helm 图表升级

  1. 拉取 Apigee Helm 图表。

    Apigee Hybrid 图表托管在 Google Artifact Registry 中:

    oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

    使用以下 pull 命令将所有 Apigee Hybrid Helm 图表复制到您的本地存储空间:

    export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
    export CHART_VERSION=1.15.0
    helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
    helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
    
  2. 根据需要升级 cert-manager。

    如果您需要升级 cert-manager 版本,请使用以下命令安装新版本:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.2/cert-manager.yaml
    

    如需查看受支持的版本列表,请参阅受支持的平台和版本:cert-manager

  3. 如果 Apigee 命名空间不是 apigee,请修改 apigee-operator/etc/crds/default/kustomization.yaml 文件并将 namespace 值替换为您的 Apigee 命名空间。
    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    namespace: APIGEE_NAMESPACE
    

    如果您使用 apigee 作为命名空间,则无需修改该文件。

  4. 安装更新后的 Apigee CRD:
    1. 通过运行以下命令使用 kubectl 试运行功能:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. 使用试运行命令进行验证后,运行以下命令:

      kubectl apply -k  apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    3. 使用 kubectl get crds 命令验证安装:
      kubectl get crds | grep apigee

      输出内容应如下所示:

      apigeedatastores.apigee.cloud.google.com                    2024-08-21T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2024-08-21T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2024-08-21T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2024-08-21T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2024-08-21T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2024-08-21T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2024-08-21T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2024-08-21T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2024-08-21T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2024-08-21T14:48:35Z
      
  5. 检查集群节点上的标签。 默认情况下,Apigee 会将数据 pod 调度到带有 cloud.google.com/gke-nodepool=apigee-data 标签的节点上,并将运行时 pod 调度到带有 cloud.google.com/gke-nodepool=apigee-runtime 标签的节点上。您可以在 overrides.yaml 文件中自定义节点池标签。

    如需了解详情,请参阅配置专用节点池

安装 Apigee Hybrid Helm 图表

  1. 如果没有,请转到 APIGEE_HELM_CHARTS_HOME 目录。从该目录运行以下命令。
  2. 升级 Apigee Operator/Controller:

    试运行:

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    验证 Apigee Operator 安装:

    helm ls -n APIGEE_NAMESPACE
    
    NAME       NAMESPACE       REVISION   UPDATED                                STATUS     CHART                   APP VERSION
    operator   apigee   3          2024-08-21 00:42:44.492009 -0800 PST   deployed   apigee-operator-1.15.0   1.15.0
    

    通过检查可用性来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
    
  3. 升级 Apigee 数据存储区:

    试运行:

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    通过检查 apigeedatastore 的状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  4. 升级 Apigee 遥测:

    试运行:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    通过检查状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  5. 升级 Apigee Redis:

    试运行:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    通过检查状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  6. 升级 Apigee 入站流量管理器:

    试运行:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    通过检查可用性来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  7. 升级 Apigee 组织:

    试运行:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      -f OVERRIDES_FILE
    

    通过检查相应组织的状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  8. 升级环境。

    一次只能安装一个环境。使用 --set env=ENV_NAME 指定环境。

    试运行:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    
    • ENV_RELEASE_NAME 是用于跟踪 apigee-env 图表的安装和升级情况的名称。此名称必须与安装中的其他 Helm 版本名称不同。 通常,这与 ENV_NAME 相同。但是,如果环境与环境组具有相同的名称,则您必须为环境和环境组使用不同的版本名称,例如 dev-env-releasedev-envgroup-release。如需详细了解 Helm 中的版本,请参阅 Helm 文档中的三大概念 class="external"
    • ENV_NAME 是您要升级的环境的名称。
    • OVERRIDES_FILE 是 v.1.15.0 的新替换文件

    升级图表:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

    通过检查相应环境的状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  9. 升级环境组 (virtualhosts)。
    1. 一次只能升级一个环境组 (virtualhost)。使用 --set envgroup=ENV_GROUP_NAME 指定环境组。对 override.yaml 文件中提到的每个环境组重复运行以下命令:

      试运行:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set envgroup=ENV_GROUP_NAME \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      ENV_GROUP_RELEASE_NAME 是您之前安装 apigee-virtualhost 图表时使用的名称。通常为 ENV_GROUP_NAME

      升级图表:

      helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set envgroup=ENV_GROUP_NAME \
        -f OVERRIDES_FILE
      
    2. 检查 ApigeeRoute (AR) 的状态。

      安装 virtualhosts 会创建 ApigeeRouteConfig (ARC),它会在 Apigee Watcher 从控制平面拉取环境组相关详细信息后在内部创建 ApigeeRoute (AR)。因此,请检查相应 AR 的状态是否为正在运行:

      kubectl -n APIGEE_NAMESPACE get arc
      
      NAME                                STATE   AGE
      apigee-org1-dev-egroup                       2d
      kubectl -n APIGEE_NAMESPACE get ar
      
      NAME                                        STATE     AGE
      apigee-org1-dev-egroup-xxxxxx                running   2d
  10. 确认所有安装都已成功升级后,从 apigee-system 命名空间中删除较旧的 apigee-operator 版本。
    1. 卸载旧的 operator 版本:
      helm delete operator -n apigee-system
      
    2. 删除 apigee-system 命名空间:
      kubectl delete namespace apigee-system
      
  11. 再次在 Apigee 命名空间中升级 operator,以重新安装已删除的集群级资源:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f overrides.yaml
    

请按照以下过程在从 1.14.0 升级后验证 JavaCallout 政策的行为。

  1. 检查 Java JAR 文件是否请求了不必要的权限

    部署政策后,请检查运行时日志,以查看是否存在以下日志消息:"Failed to load and initialize class ..."。如果您看到此消息,则表明已部署的 JAR 请求了不必要的权限。如需解决此问题,请调查 Java 代码并更新 JAR 文件。

  2. 调查并更新 Java 代码

    查看任何 Java 代码(包括依赖项),以确定可能不允许的操作的原因。发现后,根据需要修改源代码。

  3. 测试启用了安全检查的政策

    非生产环境中,启用安全检查标志,并使用更新后的 JAR 重新部署政策。如需设置该标志,请执行以下操作:

    • apigee-env/values.yaml 文件中,将 runtime:cwcAppend: 下的 conf_security-secure.constructor.only 设置为 true。例如:
      # Apigee Runtime
      runtime:
        cwcAppend:
          conf_security-secure.constructor.only: true
    • 针对该环境更新 apigee-env 图表以应用更改。例如:
      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE

        ENV_RELEASE_NAME 是用于跟踪 apigee-env 图表的安装和升级情况的名称。此名称必须与安装中的其他 Helm 版本名称不同。 通常,这与 ENV_NAME 相同。但是,如果环境与环境组具有相同的名称,则您必须为环境和环境组使用不同的版本名称,例如 dev-env-releasedev-envgroup-release。如需详细了解 Helm 中的版本,请参阅 Helm 文档中的三大概念 class="external"

    如果日志消息 "Failed to load and initialize class ..." 仍然存在,请继续修改和测试 JAR 文件,直到该日志消息不再出现。

  4. 在生产环境中启用安全检查

    在非生产环境中全面测试和验证 JAR 文件后,将标志 conf_security-secure.constructor.only 设置为 true 并针对生产环境更新 apigee-env 图表以应用更改,从而在生产环境中启用安全检查。

回滚到先前的版本

如需回滚到先前版本,请使用较早的图表版本以相反的顺序回滚升级过程。从 apigee-virtualhost 开始,然后返回 apigee-operator,接着还原 CRD。

  1. 将所有图表从 apigee-virtualhost 还原为 apigee-datastore。以下命令假定您使用的是先前版本 (v1.14.x) 中的图表。

    对每个环境组运行以下命令:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f 1.14_OVERRIDES_FILE
    

    对每个环境运行以下命令:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f 1.14_OVERRIDES_FILE
    

    还原除 apigee-operator 以外的其余图表。

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
  2. 创建 apigee-system 命名空间。
    kubectl create namespace apigee-system
    
  3. 将资源注解重新修补到 apigee-system 命名空间。
    kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
    
  4. 如果您也更改了版本名称,请使用 operator 版本名称更新注释。
    kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
    
  5. apigee-operator 重新安装到 apigee-system 命名空间中。
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.14_OVERRIDES_FILE
    
  6. 通过重新安装较旧的 CRD 来还原 CRD。
    kubectl apply -k apigee-operator/etc/crds/default/ \
      --server-side \
      --force-conflicts \
      --validate=false
    
  7. 清理 APIGEE_NAMESPACE 命名空间中的 apigee-operator 版本以完成回滚过程。
    helm uninstall operator -n APIGEE_NAMESPACE
    
  8. operator 被卸载时,某些集群级资源(例如 clusterIssuer)会被删除。使用以下命令重新安装它们:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.14_OVERRIDES_FILE