本程序說明如何從 Apigee hybrid 1.10.x 升級至 Apigee hybrid 1.11.2,以及從先前的 hybrid 1.11.x 升級至 1.11.2。
升級次要版本 (例如從 1.10 升級至 1.11) 和升級修補程式版本 (例如從 1.11.0 升級至 1.11.2) 時,請使用相同的程序。
如果您要從 Apigee Hybrid 1.9 以下版本升級,必須先升級至 Hybrid 1.10 版本,再升級至 1.11.2 版本。請參閱將 Apigee Hybrid 升級至 1.10 版的操作說明。
升級至 1.11.2 版總覽
Hyrid 1.11.2-Hotfix.3 中更嚴格的類別例項檢查
自 Apigee hybrid 1.11.2-Hotfix.3 起,JavaCallout 政策現在會在 Java 類別例項化期間提供額外安全性。這項強化的安全防護措施可防止部署的政策直接或間接嘗試執行需要未允許權限的動作。
在大多數情況下,現有政策會繼續正常運作,不會有任何問題。不過,依賴第三方程式庫的政策,或是含有會間接觸發需要提升權限的作業的自訂程式碼的政策,都有可能受到影響。
升級 Apigee Hybrid 的程序分為以下幾個部分:
先決條件
這些升級說明假設您已安裝 Apigee Hybrid 1.10.x 版,並希望將其升級至 1.11.2 版。如果您要從舊版更新,請參閱將 Apigee hybrid 升級至 1.10 版的操作說明。
Helm 資訊套件和 apigeectl
在 1.11 版中,您可以選擇使用 Helm 資訊套件或 apigeectl
安裝及管理 Apigee Hybrid。Apigee 建議您使用 Helm 管理安裝作業。
使用 apigeectl
從 Helm 1.10 遷移至 1.11
如要從 apigeectl
管理的混合式 v1.10 安裝作業升級至由 Helm 管理的 Apigee Hybrid v1.11,請按照下列步驟操作:
- 首先,請按照「將 Apigee Hybrid 從
apigeectl
遷移至 Helm 資訊圖」一文的說明,遷移 v1.10 安裝 Helm。 - 請按照下方 Helm 圖表的操作說明升級安裝作業。
準備升級至 1.11 版
備份混合式安裝 (建議)
Helm
- 這些操作說明會使用環境變數 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.10 版
$APIGEE_HELM_CHARTS_HOME/
目錄。您可以使用任何備份程序。舉例來說,您可以使用以下指令建立整個目錄的tar
檔案:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.10-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/
目錄中。
apigeectl
這些操作說明中的範例使用以下目錄結構。您的安裝方式可能不同。請根據安裝結構調整操作說明。
hybrid-v1.11-root-directory/ └── apigeectl/ └── config/ └── plugins/ └── templates/ └── tools/ └── hybrid-files/ └── overrides/ └── service-accounts/ └── certs/ hybrid-v1.10-root-directory/
- 這些操作說明會使用環境變數 APIGEECTL_HOME,用於您已安裝
apigeectl
的檔案系統目錄。如有需要,請變更目錄至apigeectl
目錄,然後使用下列指令定義變數:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- 備份 1.10 版
$APIGEECTL_HOME/
目錄。例如:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.10-backup.tar.gz $APIGEECTL_HOME
- 按照「Cassandra 備份和復原」一文中的操作說明,備份 Cassandra 資料庫。
升級 Kubernetes 版本
請檢查您的 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至 hybrid 1.10 和 hybrid 1.11 都支援的版本。如需協助,請參閱平台的說明文件。
安裝 Hybrid 1.11.2 執行階段
Helm
準備升級 Helm 資訊套件
- 對 overrides.yaml 檔案進行下列變更,即可啟用
apigee-operator
和apigee-env
圖表,或使用正確的標記1.11.2-hotfix.3
:ao: image: url: "gcr.io/apigee-release/hybrid/apigee-operators" tag: "1.11.2-hotfix.3" runtime: image: url: "gcr.io/apigee-release/hybrid/apigee-runtime" tag: "1.11.2-hotfix.3"
- 拉取 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.11.2
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.11.1/cert-manager.yaml
- 安裝更新版的 Apigee CRD:
-
執行下列指令,使用
kubectl
模擬測試功能:kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run
-
使用模擬執行指令驗證後,請執行下列指令:
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 2023-10-09T14:48:30Z apigeedeployments.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeissues.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2023-10-09T14:48:32Z apigeeredis.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeeroutes.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2023-10-09T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2023-10-09T14: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
目錄。在該目錄中執行下列指令。 - 升級 Apigee Operator/Controller:
模擬測試:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ -f OVERRIDES_FILE
確認 Apigee Operator 安裝作業:
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.11.2 1.11.2
確認可用性,確認該服務是否已啟用:
kubectl -n apigee-system 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 \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
檢查
apigeedatastore
的狀態,確認其已啟用並執行:kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
- 升級 Apigee 遙測:
模擬測試:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
查看狀態,確認服務已啟用及執行:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- 升級 Apigee Redis:
模擬測試:
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
查看狀態,確認服務已啟用及執行:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
- 升級 Apigee 入口管理工具:
模擬測試:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
確認可用性,確認該服務是否已啟用:
kubectl -n apigee 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 \ -f OVERRIDES_FILE \ --dry-run
升級圖表:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
檢查相關機構的狀態,確認該機構是否已啟用及運作:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
- 升級環境。
您一次只能安裝一個環境。使用
--set env=
ENV_NAME 指定環境:模擬測試:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run
- ENV_RELEASE_NAME 是先前用來安裝
apigee-env
圖表的名稱。在 hybrid v1.10 中,通常是apigee-env-ENV_NAME
。在 Hybrid 1.11 以上版本中,通常是 ENV_NAME。 - ENV_NAME 是您要升級的環境名稱。
- OVERRIDES_FILE 是 v.1.11.2 的新覆寫檔案
升級圖表:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --set env=ENV_NAME \ -f OVERRIDES_FILE
檢查相應環境的狀態,確認環境已啟用並執行:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- ENV_RELEASE_NAME 是先前用來安裝
-
升級環境群組 (
virtualhosts
)。- 您必須一次升級一個環境群組 (虛擬主機)。使用
--set envgroup=
ENV_GROUP_NAME 指定環境群組。針對 overrides.yaml 檔案中提及的每個 env 群組重複下列指令:模擬測試:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE \ --dry-run
ENV_GROUP_RELEASE_NAME 是先前用來安裝
apigee-virtualhost
圖表的名稱。在 hybrid v1.10 中,通常是apigee-virtualhost-ENV_GROUP_NAME
。在 Hybrid 1.11 以上版本中,通常是 ENV_GROUP_NAME。升級圖表:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
- 檢查 ApigeeRoute (AR) 的狀態。
安裝
virtualhosts
會建立 ApigeeRouteConfig (ARC),而 ApigeeRoute (AR) 會在 Apigee 監控器從控制平面擷取環境群組相關詳細資料後,在內部建立。因此,請檢查對應的 AR 狀態是否正在執行:kubectl -n apigee get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n apigee get ar
NAME STATE AGE apigee-org1-dev-egroup-xxxxxx running 2d
- 您必須一次升級一個環境群組 (虛擬主機)。使用
安裝 1.11.2-hotfix.3
- 請對 overrides.yaml 檔案進行下列變更,讓
runtime
使用正確的代碼1.11.2-hotfix.3
:runtime: image: url: "gcr.io/apigee-release/hybrid/apigee-runtime" tag: "1.11.2-hotfix.3"
-
使用
helm upgrade
指令和目前的覆寫檔案更新apigee-env
圖表。針對每個環境重複執行這項操作。
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --namespace APIGEE_NAMESPACE \ --set env ENV_NAME \ --atomic \ -f OVERRIDES_FILE
apigeectl
-
使用下列指令,將最新版本號碼儲存在變數中:
Linux
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt?ignoreCache=1)
Mac OS
export VERSION=$(curl -s \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt)
Windows
for /f "tokens=*" %a in ('curl -s ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/current-version.txt') ^ do set VERSION=%a
-
使用下列指令,檢查變數是否已填入版本號碼。如果您想使用其他版本,可以改為將該版本儲存在環境變數中。
echo $VERSION
您應該會看到最新的 Apigee Hybrid 版本:
1.11.2
- 請確認您位於混合式基礎目錄 (
apigeectl
可執行檔所在目錄的父目錄):cd $APIGEECTL_HOME/..
-
使用下列指令,下載適用於您作業系統的版本套件。請務必在下表中選取您的平台:
Linux
Linux 64 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_linux_64.tar.gz
Mac OS
Mac 64 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/$VERSION/apigeectl_mac_64.tar.gz
Windows
Windows 64 位元:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/%VERSION%/apigeectl_windows_64.zip
- 將目前的
apigeectl/
目錄重新命名為備份目錄名稱。例如:Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.10/
Mac OS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.10/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.10
-
將下載的 gzip 檔案內容解壓縮至混合式基礎目錄。 混合型基礎目錄是重新命名的
apigeectl-v1.10
目錄所在的目錄:Linux
tar xvzf filename.tar.gz -C ./
Mac OS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
根據預設,tar 內容會解壓縮為名稱中含有版本和平台的目錄。例如:
./apigeectl_1.11.2-xxxxxxx_linux_64
。使用下列指令將該目錄重新命名為apigeectl
:Linux
mv apigeectl_1.11.2-xxxxxxx_linux_64 apigeectl
Mac OS
mv apigeectl_1.11.2-xxxxxxx_mac_64 apigeectl
Windows
rename apigeectl_1.11.2-xxxxxxx_windows_64 apigeectl
-
切換至
apigeectl
目錄:cd ./apigeectl
這個目錄是
apigeectl
主目錄。這是apigeectl
可執行指令所在的位置。 - 這些操作說明會使用環境變數
$APIGEECTL_HOME
,用於指向安裝apigeectl
公用程式的檔案系統目錄。如有需要,請變更目錄至apigeectl
目錄,然後使用下列指令定義變數:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Mac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOME
Windows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME%
- 使用
version
指令驗證apigeectl
的版本:./apigeectl version
Version: 1.11.2
- 建立
hybrid-base-directory/hybrid-files
目錄,然後移動至該目錄。hybrid-files
目錄是設定檔的所在位置,例如覆寫檔案、憑證和服務帳戶。例如:Linux
mkdir $APIGEECTL_HOME/../hybrid-files
cd $APIGEECTL_HOME/../hybrid-files
Mac OS
mkdir $APIGEECTL_HOME/../hybrid-files
cd $APIGEECTL_HOME/../hybrid-files
Windows
mkdir %APIGEECTL_HOME%/../hybrid-files
cd %APIGEECTL_HOME%/../hybrid-files
- 使用下列指令,確認
kubectl
已設為正確的內容。應將目前的內容設定為您要升級 Apigee Hybrid 的叢集。kubectl config get-contexts | grep \*
- 在
hybrid-files
目錄中:-
將下列符號連結更新為
$APIGEECTL_HOME
。您可以透過這些連結,從hybrid-files
目錄執行新安裝的apigeectl
指令:ln -nfs
$APIGEECTL_HOME
/tools toolsln -nfs
$APIGEECTL_HOME
/config configln -nfs
$APIGEECTL_HOME
/templates templatesln -nfs
$APIGEECTL_HOME
/plugins plugins -
如要確認符號連結是否已正確建立,請執行下列指令,並確認連結路徑指向正確的位置:
ls -l | grep ^l
-
將下列符號連結更新為
- 進行初始化模擬測試,檢查是否有錯誤:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
其中 OVERRIDES_FILE 是覆寫檔案的名稱,例如
./overrides/overrides.yaml
。 - 如果沒有任何錯誤,請初始化 hybrid 1.11.2:
$APIGEECTL_HOME/apigeectl init -f OVERRIDES_FILE
- 檢查初始化狀態:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
成功之後,輸出內容會顯示:
All containers ready.
kubectl describe apigeeds -n apigee
在輸出內容中,找出
State: running
。 - 使用
--dry-run
標記,執行apply
指令的模擬測試,檢查是否有錯誤:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --dry-run=client
- 如果沒有任何錯誤,請套用覆寫值。請根據安裝作業,選取並遵循正式環境或非正式環境的操作說明。
生產
在實際執行環境中,請個別升級每個混合型元件,並在繼續升級下一個元件前,檢查已升級元件的狀態。
- 確認您位於
hybrid-files
目錄。 - 套用覆寫值來升級 Cassandra:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --datastore
- 檢查完成情況:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
只有在 Pod 就緒時,才繼續執行下一個步驟。
- 套用覆寫值來升級遙測元件,並檢查完成情況:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --telemetry
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 啟動 Redis 元件:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --redis
- 套用覆寫值來升級機構層級元件 (MART、Watcher 和 Apigee Connect),並檢查完成情況:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --org
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 套用覆寫值來升級環境。您有兩種選擇:
- 逐一環境:一次將覆寫值套用至一個環境,並檢查是否完成。針對每個環境重複執行這個步驟:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --env ENV_NAME
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
其中 ENV_NAME 是您要升級的環境名稱。
- 一次套用至所有環境:一次將覆寫值套用至所有環境,並檢查完成情況:
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --all-envs
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 逐一環境:一次將覆寫值套用至一個環境,並檢查是否完成。針對每個環境重複執行這個步驟:
- 套用覆寫值來升級
virtualhosts
元件,並檢查完成情形:$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE --settings virtualhosts
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
非正式環境
在大多數非正式環境、示範或實驗環境中,您可以一次將覆寫值套用至所有元件。如果非正式環境龐大且複雜,或與正式環境非常相似,建議您按照升級正式環境的操作說明進行操作。
- 確認您位於
hybrid-files
目錄。 $APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE
- 查看狀態:
$APIGEECTL_HOME/apigeectl check-ready -f OVERRIDES_FILE
- 確認您位於
安裝 1.11.2-hotfix.3
- 請對 overrides.yaml 檔案進行下列變更,讓
runtime
使用正確的代碼1.11.2-hotfix.3
:runtime: image: url: "gcr.io/apigee-release/hybrid/apigee-runtime" tag: "1.11.2-hotfix.3"
-
使用更新後的覆寫檔案,透過
apigeectl init
安裝修補程式。模擬測試:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client
初始化:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE
-
使用
apigeectl apply
套用 hotfix。模擬測試:
${APIGEECTL_HOME}/apigeectl apply -f OVERRIDES_FILE --all-envs --dry-run=client
套用:
${APIGEECTL_HOME}/apigeectl apply -f OVERRIDES_FILE --all-envs
升級至 1.11.2-hotfix.3 後驗證政策
升級至 Hybrid 1.11.2-hotfix.3 後,請使用這個程序驗證 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
圖表,以便套用變更,在正式環境中啟用安全性檢查。
復原升級
如要還原先前的升級,請按照下列步驟操作:
Helm
如要回溯至先前的版本,請使用先前安裝作業中的圖表和覆寫檔案。
- 建立下列環境變數:
- PREVIOUS_HELM_CHARTS_HOME:安裝先前 Apigee hybrid Helm 資訊套件的目錄。這是您要復原的版本。
- 回復虛擬主機。針對覆寫檔案中提到的每個環境群組重複執行下列指令。
helm upgrade ENV_GROUP_RELEASE_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-virtualhost/ \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_GROUP_RELEASE_NAME 是先前用來安裝
apigee-virtualhost
圖表的名稱。在 hybrid v1.10 中,通常是apigee-virtualhost-ENV_GROUP_NAME
。在 Hybrid 1.11 以上版本中,通常是 ENV_GROUP_NAME。 - 復原環境。針對覆寫檔案中提及的每個環境,重複執行下列指令。
helm upgrade apigee-env-ENV_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f PREVIOUS_OVERRIDES_FILE
ENV_RELEASE_NAME 是先前用來安裝
apigee-env
圖表的名稱。在 hybrid v1.10 中,通常是apigee-env-ENV_NAME
。在 Hybrid 1.11 以上版本中,通常是 ENV_NAME。 - 復原機構:
helm upgrade ORG_NAME $PREVIOUS_HELM_CHARTS_HOME/apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回溯 Ingress Manager:
helm upgrade ingress-manager $PREVIOUS_HELM_CHARTS_HOME/apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回溯 Redis:
helm upgrade redis $PREVIOUS_HELM_CHARTS_HOME/apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回溯 Apigee 遙測資料:
helm upgrade telemetry $PREVIOUS_HELM_CHARTS_HOME/apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回溯 Apigee Datastore (Cassandra 資料庫元件):
helm upgrade datastore $PREVIOUS_HELM_CHARTS_HOME/apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回復 Apigee Controller:
helm upgrade operator $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f PREVIOUS_OVERRIDES_FILE
- 回溯 Apigee Hybrid CRD:
kubectl apply -k $PREVIOUS_HELM_CHARTS_HOME/apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
apigeectl
- 清理混合式執行階段命名空間的已完成工作,其中 NAMESPACE 是覆寫檔案中指定的命名空間 (如果您已指定命名空間)。如未指定,預設命名空間為
apigee
:kubectl delete job -n NAMESPACE \ $(kubectl get job -n NAMESPACE \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 清理
apigee-system
命名空間的已完成工作:kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system \ -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- 變更
APIGEECTL_HOME
變數,讓其指向包含舊版apigeectl
的目錄。例如:export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
- 在要回溯的版本安裝根目錄中執行下列指令。請務必使用原始覆寫檔案,針對您要回溯的版本進行覆寫:
- 在 hybrid-files 目錄中執行
apigeectl apply
:$APIGEECTL_HOME
/apigeectl apply -f ORIGINAL_OVERRIDES_FILE其中 ORIGINAL_OVERRIDES_FILE 是舊版混合安裝的覆寫檔案的相對路徑和檔案名稱,例如
./overrides/overrides1.10.yaml
。 - 請檢查這些 pod 的狀態:
kubectl -n NAMESPACE get pods
其中 NAMESPACE 是 Apigee 混合式命名空間。
- 檢查
apigeeds
的狀態:kubectl describe apigeeds -n apigee
輸出內容應如下所示:
Status: Cassandra Data Replication: Cassandra Pod Ips: 10.8.2.204 Cassandra Ready Replicas: 1 Components: Cassandra: Last Successfully Released Version: Revision: v1-f8aa9a82b9f69613 Version: v1 Replicas: Available: 1 Ready: 1 Total: 1 Updated: 1 State: running Scaling: In Progress: false Operation: Requested Replicas: 0 State: running
只有在
apigeeds
pod 執行時,才能繼續進行下一個步驟。 - 執行下列指令,記下升級後訊息處理器的新複本計數值。如果這些值與先前設定的值不符,請變更覆寫檔案中的值,以符合先前的設定。
apigeectl apply -f ORIGINAL_OVERRIDES_FILE --dry-run=client --print-yaml --env ENV_NAME 2>/dev/null |grep "runtime:" -A 25 -B 1| grep "autoScaler" -A 2
輸出內容應如下所示:
autoScaler: minReplicas: 2 maxReplicas: 10
- 執行
apigeectl init
:$APIGEECTL_HOME
/apigeectl init -f ORIGINAL_OVERRIDES_FILE
- 在 hybrid-files 目錄中執行