升級至 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.gz
Linux 64 位元
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gz
Mac 32 位元:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gz
Linux 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 - /httpbin
virtualhosts: - 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-setup
Pod。使用 pod 的全名,其中包含先前指令傳回的貴機構名稱。例如:kubectl -n namespace delete pod apigee-cps-setup-org
- 刪除同一個命名空間中的
apigee-cps-create-user
Pod: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
回覆「所有容器都已就緒」時,您可以嘗試「模擬」安裝。 執行含有--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