本程序說明如何從 Apigee Hybrid 1.13.x 升級至 Apigee Hybrid 1.14.2,以及從 Hybrid 1.14.x 的先前版本升級至 1.14.2。
次要版本升級 (例如從 1.13 升級至 1.14) 和修訂版本升級 (例如從 1.4.1 升級至 1.14.2) 的程序相同。
如果您要從 Apigee hybrid 1.12 以下版本升級,必須先升級至 hybrid 1.13 版,再升級至 1.14.2 版。請參閱將 Apigee Hybrid 升級至 1.13 版的操作說明。
Apigee Hybrid 1.13 的變更
請注意下列變更:
- 從 1.14 版開始,資料層元件會依預設將資料直接寫入控制層。這可提升數據分析和偵錯資料的可靠性和法規遵循性。請參閱「Analytics 和收集資料的偵錯功能,可保留資料」。
- Anthos (在裸機或 VMware 上) 現已改為 Google Distributed Cloud (適用於裸機或 VMware):如需更多資訊,請參閱 Google Distributed Cloud for bare metal 和 Google Distributed Cloud for VMware 的產品簡介。
- 更嚴格的類別例項檢查:從 1.14.1 版開始,Apigee hybrid 的 JavaCallout 政策現在在 Java 類別例項期間提供額外安全性。這項進階安全防護措施可防止部署的政策直接或間接嘗試需要不允許權限的動作。
在大多數情況下,現有政策會繼續正常運作,不會有任何問題。不過,依賴第三方程式庫的政策,或是含有會間接觸發需要提升權限的作業的自訂程式碼,都有可能受到影響。
如要進一步瞭解 Hybrid 1.14 版中的功能,請參閱 Apigee Hybrid 1.14.0 版本資訊。
必要條件
升級至混合型 1.14 版前,請確認安裝環境符合下列需求:
- 如果混合式安裝執行的版本低於 v1.13,則必須先升級至 v1.13,再升級至 v1.14。請參閱「將 Apigee Hybrid 升級至 1.13 版」。
- Helm 版本 3.14.2 以上版本。
kubectl
:支援的kubectl
版本,適用於您的 Kubernetes 平台版本。請參閱「支援的平台和版本:kubectl
」。- cert-manager:支援的 cert-manager 版本。請參閱「支援的平台和版本:cert-manager」。如有需要,請在下方的「準備升級至 1.14 版」一節中升級 cert-manager。
升級至 1.14.2 前 - 限制和重要注意事項
Apigee Hybrid 1.14.2 推出了新的強化版個別環境 Proxy 限制,讓您在單一環境中部署更多 Proxy 和共用流程。請參閱「限制:API Proxy」,瞭解每個環境可部署的 Proxy 和共用流程數量限制。這項功能僅適用於新建立的混合型組織,無法套用至已升級的機構。如要使用這項功能,請重新安裝 hybrid 1.14.2,然後建立新組織。
這項功能僅適用於 2024 年訂閱方案,並受該訂閱方案授予的權限限制。如要進一步瞭解這項功能,請參閱強化的個別環境 Proxy 限制。
升級至 Apigee Hybrid 1.14 版可能需要停機。
將 Apigee 控制器升級至 1.14.2 版時,所有 Apigee 部署作業都會進行逐步重新啟動。為了在滾動重新啟動期間,盡可能減少實際混合環境的停機時間,請務必至少執行兩個叢集 (位於相同或不同區域/資料中心)。將所有實際工作流量轉移至單一叢集,並將要升級的叢集離線,然後繼續升級程序。針對每個叢集重複執行上述程序。
Apigee 建議您在開始升級後,盡快升級所有叢集,以降低對實際運作環境的影響。在第一個叢集升級後,您可以自行決定何時升級所有剩餘叢集,沒有時間限制。不過,在所有剩餘的叢集都升級前,Cassandra 備份和還原功能無法與混合版本搭配運作。舉例來說,Hybrid 1.13 的備份無法用於還原 Hybrid 1.14 執行個體。
升級期間不必完全暫停管理層變更。如需暫時停用管理平面變更,請參閱下方的升級操作說明。
升級至 1.14.2 版總覽
升級 Apigee Hybrid 的程序分為以下幾個部分:
準備升級至 1.14 版
備份混合式安裝作業
- 這些操作說明會使用環境變數 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%
- 備份 1.13 版
$APIGEE_HELM_CHARTS_HOME/
目錄。您可以使用任何備份程序。舉例來說,您可以使用以下指令建立整個目錄的tar
檔案:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.13-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
- 按照「Cassandra 備份和復原」一文中的操作說明,備份 Cassandra 資料庫。
- 如果您在覆寫值中使用服務憑證檔案 (
.json
) 來驗證服務帳戶,請確認服務帳戶憑證檔案位於正確的 Helm 圖表目錄中。Helm 圖表無法讀取各個圖表目錄以外的檔案。如果您使用 Kubernetes 機密或 Workload Identity 驗證服務帳戶,則不需要執行這個步驟。
下表顯示各服務帳戶檔案的目的,取決於安裝類型:
正式發布階段
服務帳戶 預設檔案名稱 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/
-
請確認您的 TLS 憑證和金鑰檔案 (
.crt
、.key
和/或.pem
) 位於$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/
目錄中。
升級 Kubernetes 版本
請檢查您的 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至 hybrid 1.13 和 hybrid 1.14 都支援的版本。如需協助,請參閱平台的說明文件。
安裝 Hybrid 1.14.2 執行階段
設定資料收集管道。
自混合式 v1.14 起,所有 Apigee 混合式機構都會預設啟用新的分析和偵錯資料管道。您必須按照「啟用 Analytics 發布者存取權」中的步驟設定授權流程。
準備升級 Helm 資訊套件
- 拉取 Apigee Helm 資訊套件。
Apigee Hybrid 圖表會託管在 Google Artifact Registry 中:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
使用
pull
指令,並使用下列指令將所有 Apigee 混合 Helm 圖表複製到本機儲存空間:export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.14.2-hotfix.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
- 視需要升級 cert-manager。
如果您需要升級 cert-manager 版本,請使用下列指令安裝新版本:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.3/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
檔案中自訂節點叢集標籤。詳情請參閱「設定專用節點叢集」。
- 選用:如果您需要在 OAS 規格中允許使用
allOf
組合函式,並設定:additionalProperties: true
,請執行這個步驟。在覆寫檔案中,新增或更新runtime
節,以便在 OAS 規格中使用allOf
組合函式。詳情請參閱 Apigee hybrid 1.14.2-hotfix.1 的發布說明。runtime: cwcAppend: conf_message-processor-communication_oas.disable.resolve.combinator: true
安裝 Apigee Hybrid Helm 資訊套件
- 如果尚未建立,請前往
APIGEE_HELM_CHARTS_HOME
目錄。在該目錄中執行下列指令。 - 升級 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.14.2 1.14.2
確認可用性,確認該服務是否已啟用:
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 入口管理工具:
模擬測試:
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 說明文件中的「三個主要概念 class="external"」。 - ENV_NAME 是您要升級的環境名稱。
- OVERRIDES_FILE 是 v.1.14.2 的新覆寫檔案
升級圖表:
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 監控器從控制平面擷取環境群組相關詳細資料後,在內部建立 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.1 後驗證政策
請按照這個程序,在從 1.14.0 以下版本升級至 1.14.1 以上版本後,驗證 JavaCallout 政策的行為。
- 檢查 Java JAR 檔案是否要求不必要的權限。
政策部署完成後,請查看執行階段記錄,看看是否有下列記錄訊息:
"Failed to load and initialize class ..."
。如果您看到這則訊息,表示已部署的 JAR 要求了不必要的權限。如要解決這個問題,請調查 Java 程式碼並更新 JAR 檔案。 - 調查並更新 Java 程式碼。
請查看任何 Java 程式碼 (包括依附元件),找出可能不允許的作業原因。找到後,請視需要修改原始碼。
- 啟用安全性檢查功能來測試政策。
在非正式版環境中,啟用安全性檢查標記,並使用更新版 JAR 重新部署政策。如要設定標記,請按照下列步驟操作:
- 在
apigee-env/values.yaml
檔案中,將conf_security-secure.constructor.only
設為runtime:cwcAppend:
下方的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 說明文件中的「三個主要概念 class="external"」。
如果記錄訊息
"Failed to load and initialize class ..."
仍存在,請繼續修改及測試 JAR 檔案,直到記錄訊息不再顯示為止。 - 在
- 在實際環境中啟用安全性檢查。
在非正式環境中徹底測試並驗證 JAR 檔案後,請將標記
conf_security-secure.constructor.only
設為true
,並更新正式環境的apigee-env
圖表,以便套用變更,在正式環境中啟用安全性檢查。
復原至先前版本
如要復原至先前的版本,請使用較舊的圖表版本,以相反的順序復原升級程序。從 apigee-virtualhost
開始,逐步返回 apigee-operator
,然後還原 CRD。
- 將所有圖表從
apigee-virtualhost
還原為apigee-datastore
。下列指令假設您使用的是先前版本 (v1.13.x) 的圖表。針對每個環境群組執行下列指令:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.13_OVERRIDES_FILE
針對每個環境執行下列指令:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f 1.13_OVERRIDES_FILE
還原
apigee-operator
以外的其他圖表。helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f 1.13_OVERRIDES_FILE
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f 1.13_OVERRIDES_FILE
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f 1.13_OVERRIDES_FILE
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f 1.13_OVERRIDES_FILE
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f 1.13_OVERRIDES_FILE
- 建立
apigee-system
命名空間。kubectl create namespace apigee-system
- 將資源註解修補回
apigee-system
命名空間。kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
- 如果您也變更了版本名稱,請更新註解,使用
operator
版本名稱。kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
- 將
apigee-operator
重新安裝至apigee-system
命名空間。helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f 1.13_OVERRIDES_FILE
- 重新安裝舊版 CRD,即可還原 CRD。
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false
- 從 APIGEE_NAMESPACE 命名空間清理
apigee-operator
版本,即可完成回溯程序。helm uninstall operator -n APIGEE_NAMESPACE
- 當
operator
解除安裝時,系統會刪除部分叢集範圍內的資源,例如clusterIssuer
。使用下列指令重新安裝:helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f 1.13_OVERRIDES_FILE