本程序說明如何從 Apigee Hybrid 1.9.x 版升級至 1.10.5 版,以及如何從先前的 Hybrid 1.10.x 版升級至 1.10.5 版。
次要版本升級 (例如從 1.9 版升級至 1.10 版) 和修補程式版本升級 (例如從 1.10.0 版升級至 1.10.5 版) 均適用相同程序。
升級至 1.10.5 版總覽
升級 Apigee Hybrid 的程序分為下列幾節:
必要條件
這些升級操作說明假設您已安裝 Apigee Hybrid 1.9.x 版,並想升級至 1.10.5 版。如要從舊版更新,請參閱「將 Apigee Hybrid 升級至 1.9 版」的操作說明。
準備升級至 1.10 版
備份混合式安裝設定 (建議)
- 這些操作說明會使用環境變數 APIGEECTL_HOME,代表您在檔案系統中安裝
apigeectl的目錄。如有需要,請將目錄變更為apigeectl目錄,並使用下列指令定義變數:Linux
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOMEMac OS
export APIGEECTL_HOME=$PWD
echo $APIGEECTL_HOMEWindows
set APIGEECTL_HOME=%CD%
echo %APIGEECTL_HOME% - 建立 1.9 版
$APIGEECTL_HOME/目錄的備份副本。例如:tar -czvf $APIGEECTL_HOME/../apigeectl-v1.9-backup.tar.gz $APIGEECTL_HOME - 按照「Cassandra 備份與復原」一文中的說明,備份 Cassandra 資料庫。
升級 Kubernetes 版本
檢查 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至混合式 1.9 和混合式 1.10 皆支援的版本。如需協助,請參閱相關平台的說明文件。
安裝 Hybrid 1.10.5 執行階段
- 請確認您位於混合式基本目錄 (
apigeectl可執行檔所在目錄的父項):cd $APIGEECTL_HOME/..
-
使用下列指令,下載適用於您作業系統的版本套件。 請務必在下表中選取您的平台:
Linux
Linux 64 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.5/apigeectl_linux_64.tar.gz
Mac OS
Mac 64 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.5/apigeectl_mac_64.tar.gz
Windows
Windows 64 位元:
curl -LO ^ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.10.5/apigeectl_windows_64.zip
- 將目前的
apigeectl/目錄重新命名為備份目錄名稱。例如:Linux
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/
Mac OS
mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.9/
Windows
rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.9
-
將下載的 gzip 檔案內容解壓縮至混合式基本目錄。 混合式基礎目錄是重新命名的
apigeectl-v1.9目錄所在位置:Linux
tar xvzf filename.tar.gz -C ./
Mac OS
tar xvzf filename.tar.gz -C ./
Windows
tar xvzf filename.zip -C ./
-
根據預設,tar 內容會展開至目錄中,且目錄名稱會包含版本和平台。例如:
./apigeectl_1.10.5-xxxxxxx_linux_64。使用下列指令將該目錄重新命名為apigeectl:Linux
mv apigeectl_1.10.5-xxxxxxx_linux_64 apigeectl
Mac OS
mv apigeectl_1.10.5-xxxxxxx_mac_64 apigeectl
Windows
rename apigeectl_1.10.5-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.10.5
- 建立
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
-
將下列符號連結更新為
- 請對 overrides.yaml 檔案進行下列變更,讓
apigee-operator圖表使用正確的代碼1.10.5-hotfix.1:ao: image: url: "gcr.io/apigee-release/hybrid/apigee-operators" tag: "1.10.5-hotfix.1" - 執行模擬初始化作業,檢查是否有錯誤:
${APIGEECTL_HOME}/apigeectl init -f OVERRIDES_FILE --dry-run=client其中 OVERRIDES_FILE 是覆寫檔案的名稱,例如
./overrides/overrides.yaml。 - 如果沒有任何錯誤,請初始化 Hybrid 1.10.5:
$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
- 請確認您位於
復原升級作業
如要復原先前的升級,請按照下列步驟操作:
- 清除混合式執行階段命名空間中已完成的工作,其中 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
- 在要還原的安裝根目錄中,執行
apigeectl apply,檢查 Pod 的狀態,然後執行apigeectl init。請務必使用要復原版本適用的原始覆寫檔案:- 在 hybrid-files 目錄中,執行
apigeectl apply:$APIGEECTL_HOME/apigeectl apply -f ORIGINAL_OVERRIDES_FILE其中 ORIGINAL_OVERRIDES_FILE 是舊版混合式安裝的覆寫檔案相對路徑和檔案名稱,例如
./overrides/overrides1.9.yaml。 - 檢查 Pod 的狀態:
kubectl -n NAMESPACE get pods
其中 NAMESPACE 是 Apigee Hybrid 命名空間。
- 檢查
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
只有在
apigeedsPod 執行時,才能繼續下一個步驟。 - 執行下列指令,記下升級後訊息處理器的全新副本計數值。如果這些值與您先前設定的值不符,請變更覆寫檔案中的值,使其與先前的設定相符。
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 目錄中,執行