本程序涵蓋從 Apigee hybrid 1.14.x 版升級至 Apigee hybrid 1.15.9 版,以及從先前的 hybrid 1.15.x 版本升級至 1.15.9 版。
子版本升級 (例如從 1.14 版升級至 1.15 版) 和修補程式版本升級 (例如從 1.15.0 版升級至 1.15.9 版) 的程序相同。
如果您是從 Apigee hybrid 1.13 版或更舊版本升級,必須先升級至 hybrid 1.14 版,才能升級至 1.15.9 版。請參閱將 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 中設定大型訊息酬載支援
- 設定屬性參考資料中的
runtime.resources.limits.memory。 - 設定屬性參考資料中的
runtime.resources.requests.memory。
- 更嚴格的類別例項化檢查:Apigee hybrid 的 JavaCallout 政策現在會在 Java 類別例項化期間提供額外安全性。這項強化安全措施可防止部署政策,直接或間接嘗試執行需要未授權權限的操作。
在大多數情況下,現有政策會照常運作,不會發生任何問題。不過,如果政策仰賴第三方程式庫,或含有會間接觸發作業的自訂程式碼,而該作業需要較高權限,則可能受到影響。
如要進一步瞭解 Hybrid 1.14 版的功能,請參閱「Apigee hybrid 1.14.0 版版本資訊」。
必要條件
升級至混合式 1.15 版前,請確認安裝作業符合下列需求:
- 如果混合式安裝執行的版本低於 1.14 版,則必須先升級至 1.14 版,才能升級至 1.15 版。請參閱「將 Apigee Hybrid 升級至 1.14 版」。
- Helm v3.14.2 以上版本。
kubectl:適用於 Kubernetes 平台版本的kubectl支援版本。請參閱「支援的平台和版本:kubectl」。- cert-manager:支援的 cert-manager 版本。請參閱「支援的平台和版本:cert-manager」。如有需要,請在下方的「準備升級至 1.15 版」部分升級 cert-manager。
升級至 1.15.9 前:限制和重要注意事項
Apigee hybrid 1.15.9 推出新的強化版個別環境 Proxy 限制,可讓您在單一環境中部署更多 Proxy 和共用流程。請參閱「限制:API Proxy」,瞭解每個環境可部署的 Proxy 和共用流程數量限制。這項功能僅適用於新建立的混合式組織,無法套用至升級後的組織。如要使用這項功能,請全新安裝 Hybrid 1.15.9,並建立新組織。
這項功能僅隨附於 2024 年會員方案,並受該會員方案授予的權利限制。如要進一步瞭解這項功能,請參閱「提高各環境的 Proxy 限制」。
升級至 Apigee hybrid 1.15 版可能需要停機。
將 Apigee 控制器升級至 1.15.9 版時,所有 Apigee 部署作業都會進行滾動式重新啟動。如要在輪流重新啟動期間,盡可能縮短實際工作環境混合式環境的停機時間,請務必執行至少兩個叢集 (位於相同或不同的區域/資料中心)。將所有實際工作環境流量轉移至單一叢集,並將要升級的叢集設為離線,然後繼續升級程序。為每個叢集重複執行這項程序。
Apigee 建議您在開始升級後,盡快升級所有叢集,降低對正式環境造成影響的機率。第一個叢集升級後,其餘叢集並無升級時間限制。不過,在所有剩餘叢集升級之前,Cassandra 備份和還原功能無法與混合版本搭配使用。舉例來說,Hybrid 1.14 的備份無法用於還原 Hybrid 1.15 執行個體。
升級期間,您不必完全暫停管理層變更。如果需要暫時停止管理層變更,我們會在下方的升級操作說明中註明。
升級至 1.15.9 版總覽
升級 Apigee hybrid 的程序分為下列各節:
準備升級至 1.15 版
備份混合安裝
- 這些操作說明會使用環境變數 APIGEE_HELM_CHARTS_HOME,代表檔案系統中安裝 Helm 圖表的目錄。如有需要,請切換至這個目錄,並使用下列指令定義變數:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - 備份 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 - 按照「Cassandra 備份與復原」中的操作說明,備份 Cassandra 資料庫。
- 如果您在覆寫中使用服務憑證檔案 (
.json) 驗證服務帳戶,請確認服務帳戶憑證檔案位於正確的 Helm 圖表目錄。Helm 圖表無法讀取各圖表目錄以外的檔案。如果您使用 Kubernetes 密鑰或 Workload Identity Federation for GKE 驗證服務帳戶,則不需要執行這個步驟。
下表列出各個服務帳戶檔案的目的地 (視安裝類型而定):
Prod
服務帳戶 預設檔案名稱 Helm 資訊套件目錄 apigee-cassandraPROJECT_ID-apigee-cassandra.json$APIGEE_HELM_CHARTS_HOME/apigee-datastore/apigee-loggerPROJECT_ID-apigee-logger.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-martPROJECT_ID-apigee-mart.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-metricsPROJECT_ID-apigee-metrics.json$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/apigee-runtimePROJECT_ID-apigee-runtime.json$APIGEE_HELM_CHARTS_HOME/apigee-envapigee-synchronizerPROJECT_ID-apigee-synchronizer.json$APIGEE_HELM_CHARTS_HOME/apigee-env/apigee-udcaPROJECT_ID-apigee-udca.json$APIGEE_HELM_CHARTS_HOME/apigee-org/apigee-watcherPROJECT_ID-apigee-watcher.json$APIGEE_HELM_CHARTS_HOME/apigee-org/非正式環境
在下列各個目錄中,複製
apigee-non-prod服務帳戶檔案:服務帳戶 預設檔案名稱 Helm 資訊套件目錄 apigee-non-prodPROJECT_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/ -
確認 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/v1,apigee-ingressgateway-manager 可能無法升級。舉例來說,gateway.networking.k8s.io/v1 通常會安裝在 Google Distributed Cloud (僅限軟體) 裸機 1.32 以上版本執行的叢集。
修正這些問題的方法有兩種:
- 如果您在叢集中只使用 Istio 執行 Apigee,請刪除
istio.ioCRD。 - 更新
apigee-ingressgateway-manager clusterrole,新增istio.io的權限。
完成上述任一選項後,您必須重新啟動 apigee-ingressgateway-manager Pod。
如要進一步瞭解 Apigee hybrid 中的 istio.io CRD 和 gateway.networking.k8s.io/v1,請參閱已知問題 416634326 和已知問題 419856132。
-
使用下列指令,判斷叢集中是否有
istio.ioCRD: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.ioauthorizationpolicies.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 - 選用:將 CRD 儲存在本機,以備日後需要重新建立:
kubectl get crd $(cat istio-crd.csv) -o yaml > istio-crd.yaml
刪除 CRD
-
將叢集中的
istio.ioCRD 列入 CSV 檔案:kubectl get crd -o custom-columns=NAME:metadata.name | grep istio.io > istio-crd.csv
- 選用:將 CRD 儲存在本機,以備日後需要重新建立:
kubectl get crd $(cat istio-crd.csv) -o yaml > istio-crd.yaml
-
刪除
istio.ioCRD:模擬測試:
kubectl delete crd $(cat istio-crd.csv) --dry-run=client
執行:
kubectl delete crd $(cat istio-crd.csv)
更新叢集角色
-
取得目前的 apigee-ingressgateway-manager 叢集角色:
kubectl get clusterrole apigee-ingressgateway-manager-apigee -o yaml > apigee-ingressgateway-manager-apigee-clusterrole.yaml
-
將叢集角色複製到新位置:
cp apigee-ingressgateway-manager-apigee-clusterrole.yaml apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml
-
在檔案結尾加入下列額外權限:
- 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
-
套用角色:
kubectl -n APIGEE_NAMESPACE apply -f apigee-ingressgateway-manager-apigee-clusterrole-added-istio-permissions.yaml
完成上述選項後,您必須重新啟動 apigee-ingressgateway-manager Pod。
-
列出要重新安裝或重新建立的
ingress-managerPod: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
-
重新啟動
ingress-managerPod:kubectl rollout restart deployment -n APIGEE_NAMESPACE apigee-ingressgateway-manager
-
幾分鐘後,監控
apigee-ingressgateway-managerPod: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.9 執行階段
設定資料收集管道。
自 hybrid 1.14 版起,所有 Apigee hybrid 組織預設會啟用新的數據分析和偵錯資料管道。您必須按照「啟用 Analytics 發布商存取權」中的步驟設定授權流程。
準備升級 Helm 圖表
- 提取 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.9helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar - 視需要升級 cert-manager。
如要升級 cert-manager 版本,請使用下列指令安裝新版本:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.4/cert-manager.yaml
如需支援的版本清單,請參閱「支援的平台和版本:cert-manager」。
- 如果 Apigee 命名空間不是
apigee,請編輯apigee-operator/etc/crds/default/kustomization.yaml檔案,並將namespace值替換為 Apigee 命名空間。apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
如果您使用
apigee做為命名空間,則不需要編輯檔案。 - 安裝更新後的 Apigee CRD:
-
執行下列指令,使用
kubectl模擬測試功能:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
-
使用模擬測試指令驗證後,請執行下列指令:
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false
- 使用
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
-
-
檢查叢集節點上的標籤。根據預設,Apigee 會在標籤為
cloud.google.com/gke-nodepool=apigee-data的節點上排定資料 Pod,並在標籤為cloud.google.com/gke-nodepool=apigee-runtime的節點上排定執行階段 Pod。您可以在overrides.yaml檔案中自訂節點集區標籤。詳情請參閱「設定專用節點集區」。
安裝 Apigee Hybrid Helm 圖表
- 如果尚未前往,請前往
APIGEE_HELM_CHARTS_HOME目錄。從該目錄執行下列指令。 模擬測試:
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.9 1.15.9
檢查可用性,確認伺服器已啟動並運作:
kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- 升級 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
- 升級 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
- 升級 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
- 升級 Apigee Ingress Manager:
模擬測試:
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
- 升級 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
- 升級環境。
一次只能安裝一個環境。使用
--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-release和dev-envgroup-release。如要進一步瞭解 Helm 中的版本,請參閱 Helm 說明文件中的「Three big concepts」(三大概念)。 - ENV_NAME 是要升級的環境名稱。
- OVERRIDES_FILE 是 1.15.9 版的新覆寫檔案
升級圖表:
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
- ENV_RELEASE_NAME 是用來追蹤
-
升級環境群組 (
virtualhosts)。- 您必須一次升級一個環境群組 (虛擬主機)。使用
--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
- 檢查 ApigeeRoute (AR) 的狀態。
安裝
virtualhosts會建立 ApigeeRouteConfig (ARC),當 Apigee 監控程式從控制層提取環境群組相關詳細資料時,ApigeeRouteConfig (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
- 您必須一次升級一個環境群組 (虛擬主機)。使用
- 確認所有安裝項目都已成功升級後,請從
apigee-system命名空間刪除舊版apigee-operator。- 解除安裝舊版
operator:helm delete operator -n apigee-system
- 刪除
apigee-system命名空間:kubectl delete namespace apigee-system
- 解除安裝舊版
- 在 Apigee 命名空間中再次升級
operator,重新安裝已刪除的叢集範圍資源:helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
從 1.14.0 以下版本升級後驗證政策
請按照下列程序,驗證從 1.14.0 升級後 JavaCallout 政策的行為。
- 檢查 Java JAR 檔案是否要求不必要的權限。
部署政策後,請查看執行階段記錄,確認是否出現下列記錄訊息:
"Failed to load and initialize class ..."。如果看到這則訊息,表示部署的 JAR 要求了不必要的權限。如要解決這個問題,請檢查 Java 程式碼並更新 JAR 檔案。 - 調查並更新 Java 程式碼。
請檢查所有 Java 程式碼 (包括依附元件),找出可能不允許的操作。找到後,請視需要修改原始碼。
- 測試啟用安全檢查的政策。
在非正式環境中,啟用安全性檢查旗標,並使用更新後的 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-release和dev-envgroup-release。如要進一步瞭解 Helm 中的版本,請參閱 Helm 說明文件中的「Three big concepts」(三大概念)。
如果記錄訊息
"Failed to load and initialize class ..."仍存在,請繼續修改及測試 JAR,直到記錄訊息不再出現。 - 在
- 在正式環境中啟用安全性檢查。
在非正式環境中徹底測試並驗證 JAR 檔案後,請將旗標
conf_security-secure.constructor.only設為true,並更新正式環境的apigee-env圖表以套用變更,在正式環境中啟用安全性檢查。
復原至前一個版本
如要復原至先前的版本,請使用舊版圖表,以反向順序復原升級程序。從 apigee-virtualhost 開始,逐步回到 apigee-operator,然後還原 CRD。
- 還原圖表。下列指令假設您使用的是舊版 (v1.14.x) 的圖表。
-
請為每個環境執行下列指令:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set env=ENV_NAME \ -f 1.14_OVERRIDES_FILE
apigee-ingress-manager:helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
apigee-redis:helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
apigee-telemetry:helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
apigee-datastore:helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
apigee-operator:helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
為每個環境群組執行下列指令:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.14_OVERRIDES_FILE
apigee-org:helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f 1.14_OVERRIDES_FILE
-
- 重新安裝舊版 CRD,還原 CRD。
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false