將 Apigee Hybrid 升級至 1.15 版

本程序涵蓋從 Apigee Hybrid 1.14.x 版升級至 Apigee Hybrid 1.15.1 版,以及從先前的 Hybrid 1.15.x 版升級至 1.15.1 版。

次要版本升級 (例如從 1.14 版升級至 1.15 版) 和修補程式版本升級 (例如從 1.15.0 版升級至 1.15.1 版) 均使用相同程序。

如果您要從 Apigee Hybrid 1.13 版或更舊版本升級,請先升級至 Hybrid 1.14 版,再升級至 1.15.1 版。請參閱將 Apigee Hybrid 升級至 1.14 版的操作說明。

與 Apigee Hybrid 1.14 版的差異

請注意下列異動:

  • Apigee Hybrid 營利:從 1.15.1 版開始,Apigee Hybrid 支援營利的週期性、加值和設定費用。詳情請參閱「為 Apigee Hybrid 啟用營利功能」。
  • Proxy 基礎路徑中的萬用字元 (*):自 1.15.1 版起,Apigee Proxy 基礎路徑支援使用萬用字元。如要實作這項變更,請按照已知問題 378686709 中的程序操作。
  • 支援大型郵件酬載:從 1.15 版和 1.14.2 修補程式版本開始,Apigee 現在支援最大 30 MB 的郵件酬載。詳情請參閱:
  • 更嚴格的類別例項化檢查:Apigee Hybrid 的 JavaCallout 政策現在會在 Java 類別例項化期間,提供額外的安全性。這項強化安全措施可防止部署直接或間接嘗試執行不允許動作的政策,這些動作需要不允許的權限。

    在大多數情況下,現有政策仍會正常運作,不受任何影響。不過,如果政策依賴第三方程式庫,或是自訂程式碼間接觸發需要提升權限的操作,就可能會受到影響。

如要進一步瞭解 Hybrid 1.14 版的功能,請參閱 Apigee Hybrid 1.14.0 版版本資訊

必要條件

升級至混合式 1.15 版前,請確認您的安裝項目符合下列需求:

升級至 1.15.1 前的限制和重要注意事項

  • Apigee Hybrid 1.15.1 推出全新的環境專屬 Proxy 限制,讓您在單一環境中部署更多 Proxy 和共用流程。請參閱「限制:API Proxy」,瞭解每個環境可部署的 Proxy 和共用流程數量限制。這項功能僅適用於新建立的混合式機構,無法套用至升級的機構。如要使用這項功能,請重新安裝 Hybrid 1.15.1,並建立新機構。

    這項功能僅適用於 2024 年訂閱方案,且須符合該方案的授權資格。如要進一步瞭解這項功能,請參閱「提升每個環境的 Proxy 限制」。

  • 升級至 Apigee Hybrid 1.15 版時,可能需要停機。

    將 Apigee 控制器升級至 1.15.1 版時,所有 Apigee 部署作業都會進行滾動式重新啟動。如要在輪流重新啟動期間,盡量減少實際工作環境混合式環境的停機時間,請確保您至少執行兩個叢集 (位於相同或不同區域/資料中心)。將所有正式版流量導向單一叢集,並將即將升級的叢集離線,然後繼續進行升級程序。針對每個叢集重複執行上述程序。

    Apigee 建議您開始升級後,應盡快升級所有叢集,以減少對正式環境造成影響的機率。第一個叢集升級後,其餘叢集沒有升級時間限制。不過,在所有剩餘叢集升級前,Cassandra 備份和還原功能無法與混合版本搭配運作。舉例來說,您無法使用 Hybrid 1.14 的備份檔還原 Hybrid 1.15 執行個體。

  • 升級期間不需要完全暫停管理平面變更。 如需暫時停止管理平面變更,請參閱下方的升級說明。

升級至 1.15.1 版總覽

升級 Apigee Hybrid 的程序分為下列幾節:

  1. 準備升級
  2. 安裝混合式執行階段 1.15.1 版

準備升級至 1.15 版

備份混合式安裝作業

  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 密鑰或 GKE 的 Workload Identity Federation 驗證服務帳戶,則不需要執行這個步驟。

    下表列出各項服務帳戶檔案的目標位置,視安裝類型而定:

    正式環境

    服務帳戶 預設檔案名稱 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 平台升級至混合式 1.14 和混合式 1.15 皆支援的版本。如需協助,請參閱相關平台的說明文件。

移除/升級 Istio CRD

從 Apigee Hybrid 1.14.1 版或更舊版本升級時,Apigee Hybrid 叢集中存在 istio.io 自訂資源定義 (CRD),可能會導致 apigee-ingressgateway-manager Pod 的 discovery 容器中完備性探測失敗。

如果叢集中已安裝 gateway.networking.k8s.io/v1apigee-ingressgateway-manager 可能無法升級。舉例來說,在執行 Google Distributed Cloud (僅限軟體) 的叢集上,如果使用 Bare Metal 1.32 以上版本,通常會安裝 gateway.networking.k8s.io/v1

修正這些問題的方法有兩種:

  • 如果叢集中的 Istio 除了 Apigee 以外,沒有其他用途,請刪除 istio.io CRD。
  • 更新 apigee-ingressgateway-manager clusterrole,為 istio.io 新增權限。

完成上述任一選項後,請重新啟動 apigee-ingressgateway-manager Pod。

如要進一步瞭解 Apigee Hybrid 中的 istio.io CRD 和 gateway.networking.k8s.io/v1,請參閱已知問題 416634326已知問題 419856132

  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

刪除 CRD

  1. 將叢集中的 istio.io CRD 列入 CSV 檔案:
    kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io > istio-crd.csv
  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)

更新 clusterrole

  1. 取得目前的 apigee-ingressgateway-manager clusterrole:
    kubectl get clusterrole apigee-ingressgateway-manager-apigee -o yaml > apigee-ingressgateway-manager-apigee-clusterrole.yaml
  2. 將 clusterrole 複製到新位置:
    cp apigee-ingressgateway-manager-apigee-clusterrole.yaml apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml
  3. 在檔案結尾處加入下列額外權限:
    - apiGroups:
      - gateway.networking.k8s.io
      resources:
      - gatewayclasses
      - gateways
      - grpcroutes
      - httproutes
      - referencegrants
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - networking.istio.io
      resources:
      - sidecars
      - destinationrules
      - gateways
      - virtualservices
      - envoyfilters
      - workloadentries
      - serviceentries
      - workloadgroups
      - proxyconfigs
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - security.istio.io
      resources:
      - peerauthentications
      - authorizationpolicies
      - requestauthentications
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - telemetry.istio.io
      resources:
      - telemetries
      verbs:
      - get
      - list
      - watch
    - apiGroups:
      - extensions.istio.io
      resources:
      - wasmplugins
      verbs:
      - get
      - list
      - watch
    
  4. 套用角色:
    kubectl -n APIGEE_NAMESPACE apply -f apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml

完成上述選項後,請重新啟動 apigee-ingressgateway-manager pod。

  1. 列出要重新安裝或重新建立的 ingress-manager Pod:
    kubectl get deployments -n APIGEE_NAMESPACE

    輸出內容範例:

    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager       1/1     1            1           32d
    apigee-ingressgateway-manager   2/2     2            2           32d
    
  2. 重新啟動 ingress-manager Pod:
    kubectl rollout restart deployment -n APIGEE_NAMESPACE apigee-ingressgateway-manager
  3. 幾分鐘後,請監控 apigee-ingressgateway-manager Pod:
    watch -n 10 kubectl -n APIGEE_NAMESPACE get pods -l app=apigee-ingressgateway-manager

    輸出內容範例:

    NAME                                             READY   STATUS    RESTARTS   AGE
    apigee-ingressgateway-manager-12345abcde-678wx   3/3     Running   0          10m
    apigee-ingressgateway-manager-12345abcde-901yz   3/3     Running   0          10m
    

安裝 Hybrid 1.15.1 執行階段

設定資料收集管道。

從混合式 1.14 版開始,所有 Apigee 混合式機構都會預設啟用新的分析和偵錯資料管道。您必須按照啟用 Analytics 發布者存取權中的步驟,設定授權流程。

準備升級 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.1
    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.4/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 會在標籤為 cloud.google.com/gke-nodepool=apigee-data 的節點上排定資料 Pod,並在標籤為 cloud.google.com/gke-nodepool=apigee-runtime 的節點上排定執行階段 Pod。您可以在 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.1   1.15.1
    

    檢查可用性,確認該服務是否正常運作:

    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 Ingress 管理工具:

    模擬測試:

    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 說明文件中的「三個重要概念」。
    • ENV_NAME 是您要升級的環境名稱。
    • OVERRIDES_FILE 是 1.15.1 版的新覆寫檔案

    升級圖表:

    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. 您一次只能升級一個環境群組 (虛擬主機)。使用 --set envgroup=ENV_GROUP_NAME 指定環境群組。針對 overrides.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 監控程式從控制層提取環境群組相關詳細資料後,ARC 會在內部建立 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 說明文件中的「Three big concepts」(三大概念)。

    如果記錄訊息 "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. 部分叢集範圍資源 (例如 clusterIssuer) 會在解除安裝 operator 時刪除。使用下列指令重新安裝:
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.14_OVERRIDES_FILE