升級至 1.2.0 版
請按照下列步驟將 Apigee Hybrid 升級至 1.2.0 版:
步驟 1:升級 Kubernetes 並下載發布套件
- 請按照下列步驟升級 Kubernetes 平台。如需協助,請參閱相關平台的說明文件:
平台 升級至 GKE 1.14.x Anthos 1.2 AKS 1.14.x 根據所用的作業系統下載發布套件:
Mac 64 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_64.tar.gzLinux 64 位元
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gzMac 32 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gzLinux 32 位元
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_32.tar.gz
步驟 2:重新設定安裝目錄
- 找出您最初安裝 Apigee Hybrid 時建立的基本安裝目錄。基本目錄是
$APIGEEGTL_HOME目錄所在的目錄。在以下範例中,基本目錄為/Users/myhome/hybrid:echo $APIGEECTL_HOME /Users/myhome/hybrid/apigeectl
-
將下載的 gzip 檔案內容解壓縮至 Apigee Hybrid 根目錄:
tar xvzf filename.tar.gz -C path-to-base-directory
cd至基本目錄。-
根據預設,tar 內容會展開至目錄中,且目錄名稱會包含版本和平台。例如:
./apigeectl_1.2.0-f7b96a8_linux_64。 - 重新命名目前的
apigeectl目錄。舉例來說,如果目前版本是 1.1.1,請將apigeectl目錄重新命名為apigeectl_1.1.1。 -
將新解壓縮的安裝目錄重新命名為
apigeectl。現在環境$APIGEECTL_HOME會指向這個位置。
步驟 3:更新覆寫檔案
- 複製覆寫檔案,並小心儲存舊檔案,以防需要還原。在接下來的步驟中,您將對覆寫檔案進行必要變更,然後再套用至叢集。
請按照下列說明更新覆寫檔案:
以下是您必須對覆寫檔案進行的設定變更摘要。完整範例請見摘要後方的表格。如您所見,
envs[]屬性與先前的版本相比有顯著變化:envs[].hostAlias屬性已移除,並替換為新的virtualhosts.hostAliases[]屬性。- 您必須新增必要設定屬性
virtualhosts。 - 您必須將
envs[].sslCertPath和envs[].sslKeyPath屬性從envs移至virtualhosts。 - 您必須新增
virtualhosts.routingRules設定段落。virtualhosts.routingRules屬性會取代先前的envs[].paths屬性。如果覆寫檔案中有envs[].paths,請務必移除。如要進一步瞭解虛擬主機設定,請參閱「設定虛擬主機」。
下表說明 1.1.1 覆寫檔案與 1.2.0 版檔案之間的差異。這個範例旨在強調您需要為 1.2.0 版進行的變更類型:
1.1.x 版設定 v1.2.0 設定 envs: - name: test1 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /orders - /items - name: test2 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /v0/hello - /httpbinvirtualhosts: - name: default hostAliases: ["api.example.com"] sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem routingRules: - paths: - /orders - /items env: test1 - paths: - /v0/hello - /httpbin env: test2 envs: - name: test1 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json - name: test2 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json
步驟 4:將升級套用至叢集
- 如果您在 1.1.1 版安裝中啟用 Apigee Connect,請務必移除部署作業:
- 首先,列出 Apigee 部署作業:
kubectl -n namespace get ad
- 刪除 Apigee Connect 部署作業:
kubectl -n namespace delete ad apigee-connect-name
- 首先,列出 Apigee 部署作業:
- 列出 Pod:
kubectl get pods -n namespace
- 從叢集中刪除
apigee-cps-setupPod。請使用 Pod 的全名 (包括機構名稱),如先前指令傳回的名稱。例如:kubectl -n namespace delete pod apigee-cps-setup-org
- 刪除同一個命名空間中的
apigee-cps-create-userPod:kubectl -n namespace delete pod apigee-cps-create-user
- 清除混合式執行階段命名空間的已完成工作,其中 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}') - 清除
istio-system命名空間中已完成的工作:kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') cd至./hybrid-files目錄:- 為新版本初始化
apigeectl:$APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
- 檢查以判斷初始化何時完成:
$APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
- 如果
check-ready回覆「All containers are ready」,您就可以嘗試「試執行」安裝作業。 執行加上--dry-run=true旗標的apply指令。進行模擬執行可讓您在叢集進行任何變更前,檢查是否有錯誤:$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
-
如果沒有錯誤,您可以將 Apigee 專屬的執行階段元件套用至叢集:
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
- 重新執行
check-ready,判斷升級完成時間。
復原升級作業
如要復原先前的升級,請按照下列步驟操作:
- 清除混合式執行階段命名空間的已完成工作,其中 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}') - 清除
istio-system命名空間中已完成的工作:kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}') - 刪除 Apigee Operators 部署作業。這項作業不會對執行階段流量造成任何影響:
kubectl -n apigee-system delete deployment apigee-controller-manager
- 變更
$APIGEECTL_HOME變數,指向包含原始apigeectl版本的目錄。例如:export APIGEECTL_HOME=path-to-original-apigeectl-directory
- 在要復原的安裝目錄根目錄中,執行
apigeectl init,然後執行apigeectl apply。請務必使用要復原版本的原始覆寫檔案:$APIGEECTL_HOME/apigeectl init -f overrides/original-overrides.yaml$APIGEECTL_HOME/apigeectl apply -f overrides/original-overrides.yaml