本程序說明如何從 Apigee Hybrid 1.15.x 版升級至 1.16.0 版。
Apigee Hybrid 1.15 版的變更
請注意下列異動:
-
Seccomp 設定檔:
從1.16 版開始,
Apigee Hybrid 現在可將 Seccomp 設定檔套用至執行階段元件,
大幅提升部署作業的安全性。Apigee 管理員和安全團隊可透過這項功能,限制容器化程序可對主機核心發出的系統呼叫。將容器限制為僅使用必要的系統呼叫,可達到下列目的:
- 提升安全性:降低容器跳脫和權限提升的風險。
- 強制執行最低權限:確保元件只能存取運作所需的確切系統呼叫。
- Meet 法規遵循:提供重要控管機制,協助您滿足嚴格的安全性法規遵循要求。
- 移除 Apigee Hybrid 中的 UDCA: 在 Apigee Hybrid 1.16 版中,已移除 Unified Data Collection Agent (UDCA) 元件。現在,將分析、追蹤和部署狀態資料傳送至 Apigee 控制平面的工作,會透過以 Google Cloud Pub/Sub 為基礎的資料管道處理。自 Apigee Hybrid 1.14.0 版起,系統預設使用以 Pub/Sub 為基礎的資料管道做為資料收集機制。
-
apigee-guardrails服務帳戶: 在 1.16.0 版中,Apigee Hybrid 導入了apigee-guardrailsGoogle IAM 服務帳戶。安裝期間,apigee-operator圖表會使用這項功能,檢查專案中是否已啟用所有必要的 API。請參閱:
-
支援 cert-manager 1.18 和 1.19 版:
Apigee Hybrid 1.16 版支援 cert-manager 1.18 版和 1.19 版。在 cert-manager 1.18 版中,
Certificate.Spec.PrivateKey.rotationPolicy的預設值有所變更,可能會影響流量。如果您要從舊版 Apigee Hybrid 升級,且要升級至 cert-manager 1.18 以上版本,請按照本指南中的「升級 cert-manager」程序操作。
如要進一步瞭解 Hybrid 1.16 版的功能,請參閱 Apigee Hybrid 1.16.0 版版本資訊。
必要條件
升級至 Hybrid 1.16 版前,請確認您的安裝項目符合下列需求:
- 如果混合式安裝作業執行的版本舊於 v1.15,請務必先升級至 1.15 版,再升級至 1.16 版。請參閱「將 Apigee Hybrid 升級至 1.15 版」。
- Helm 版本 v3.14.2 以上。
kubectl:與 Kubernetes 平台版本相容的kubectl版本。請參閱「支援的平台和版本:kubectl」。- cert-manager:支援的 cert-manager 版本。請參閱「支援的平台和版本:cert-manager」。如有需要,請按照下方的「準備升級至 1.16 版」一節,升級 cert-manager。
升級至 1.16.0 版前 - 限制和重要注意事項
Apigee Hybrid 1.16.0 推出新的環境專屬 Proxy 限制,可讓您在單一環境中部署更多 Proxy 和共用流程。請參閱「限制:API Proxy」一文,瞭解每個環境可部署的 Proxy 和共用流程數量限制。這項功能僅適用於新建立的混合式機構,無法套用至升級的機構。如要使用這項功能,請重新安裝 Hybrid 1.16.0,並建立新機構。
這項功能僅適用於 2024 年訂閱方案,且須符合該方案的授權資格。如要進一步瞭解這項功能,請參閱「提升每個環境的 Proxy 限制」。
升級至 Apigee Hybrid 1.16 版可能需要停機。
將 Apigee 控制器升級至 1.16.0 版時,所有 Apigee 部署作業都會進行輪流重新啟動。如要在輪流重新啟動期間,盡量減少實際工作環境混合式環境的停機時間,請確保您至少執行兩個叢集 (位於相同或不同區域/資料中心)。將所有正式版流量轉移至單一叢集,並將即將升級的叢集離線,然後繼續進行升級程序。針對每個叢集重複執行上述程序。
Apigee 建議您開始升級後,應盡快升級所有叢集,以減少對正式環境造成影響的機率。第一個叢集升級後,其餘叢集沒有升級時間限制。不過,在所有剩餘叢集升級前,Cassandra 備份和還原功能無法與混合版本搭配運作。舉例來說,您無法使用 Hybrid 1.15 的備份檔還原 Hybrid 1.16 執行個體。
升級期間不需要完全暫停管理平面變更。 如需暫時停止管理平面變更,請參閱下方的升級說明。
升級至 1.16.0 版總覽
Apigee Hybrid 升級程序分為下列幾節:
準備升級至 1.16 版
備份混合式安裝作業
- 這些操作說明會使用環境變數 APIGEE_HELM_CHARTS_HOME,代表您在檔案系統中安裝 Helm 圖表的目錄。視需要切換至這個目錄,然後使用下列指令定義變數:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - 備份 1.15 版
$APIGEE_HELM_CHARTS_HOME/目錄。你可以使用任何備份程序。舉例來說,您可以使用下列指令,建立整個目錄的tar檔案:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - 按照「Cassandra 備份與復原」一文中的說明,備份 Cassandra 資料庫。
-
請確認 TLS 憑證和金鑰檔案 (
.crt、.key和/或.pem) 位於$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/目錄中。
升級 Kubernetes 版本
檢查 Kubernetes 平台版本,並視需要將 Kubernetes 平台升級至混合式 1.15 和混合式 1.16 支援的版本。如需協助,請參閱相關平台的說明文件。
提取 Apigee Helm 資訊套件。
Apigee Hybrid 圖表託管於 Google Artifact Registry:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
使用 pull 指令,將所有 Apigee Hybrid Helm 圖表複製到本機儲存空間,指令如下:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.16.0helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
編輯自訂 Apigee 命名空間的 kustomization.yaml
如果 Apigee 命名空間不是 apigee,請編輯 apigee-operator/etc/crds/default/kustomization.yaml 檔案,並將 namespace 值替換為 Apigee 命名空間。
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
如果您使用 apigee 做為命名空間,則不需要編輯檔案。
-
執行下列指令,使用
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 檔案中自訂節點集區標籤。
詳情請參閱「設定專屬節點集區」。
設定 apigee-guardrails 服務帳戶
從 Hybrid 1.16 版開始,升級 apigee-operator 圖表時必須使用 apigee-guardrails 服務帳戶。
在下列程序中,請選取您使用的服務帳戶驗證類型。
-
確認你可以執行
create-service-account。如果您剛下載圖表,create-service-account檔案可能不是可執行模式。在 APIGEE_HELM_CHARTS_HOME 目錄中執行下列指令:./apigee-operator/etc/tools/create-service-account --help
如果輸出內容顯示
permission denied,您需要讓檔案可執行,例如在 Linux、MacOS 或 UNIX 中使用chmod,或在 Windows 檔案總管中,或在 Windows 中使用icacls指令。例如:chmod +x ./apigee-operator/etc/tools/create-service-account
-
建立
apigee-guardrails服務帳戶:Kubernetes Secret
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
這項指令會建立
apigee-guardrails服務帳戶,並將金鑰下載至service-accounts/目錄。JSON 檔案
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir ./apigee-operator/
這項指令會建立
apigee-guardrails服務帳戶,並將金鑰下載至apigee-operator/圖表目錄。保管箱
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
這項指令會建立
apigee-guardrails服務帳戶,並將金鑰下載至service-accounts/目錄。GKE 的 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
這項指令會建立
apigee-guardrails服務帳戶,並將金鑰下載至apigee-operator/etc/tools/service-accounts/目錄。您不需要下載的金鑰檔案,可以刪除。在其他平台使用 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
這項指令會建立
apigee-guardrails服務帳戶,並將金鑰下載至service-accounts/目錄。 -
設定
apigee-guardrails服務帳戶的驗證:Kubernetes Secret
使用
service-accounts/目錄中的apigee-guardrails服務帳戶金鑰檔案建立 Kubernetes 密鑰:kubectl create secret generic apigee-guardrails-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \ -n $APIGEE_NAMESPACE請將以下內容新增到您的
overrides.yaml檔案中:guardrails: serviceAccountRef: apigee-guardrails-svc-account
JSON 檔案
在
overrides.yaml檔案中新增下列內容,並使用apigee-operator/目錄中apigee-guardrails服務帳戶金鑰檔案的路徑:guardrails: serviceAccountPath: $PROJECT_ID-apigee-guardrails.json
保管箱
- 更新 Vault 密鑰
secret/data/apigee/orgsakeys,新增guardrails項目,並填入apigee-guardrails服務帳戶金鑰檔案的內容。vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
-
防護措施的 Kubernetes 服務帳戶 (KSA) 名稱為
apigee-operator-guardrails-sa。將 Guardrails KSA 新增至與 Vault 中apigee-orgsakeys角色繫結的機構專屬服務帳戶。- 取得目前的 KSA 繫結清單:
vault read auth/kubernetes/role/apigee-orgsakeys
輸出內容應採用下列格式:
Key Value --- ----- alias_name_source serviceaccount_uid bound_service_account_names BOUND_SERVICE_ACCOUNT_NAMES bound_service_account_namespace_selector n/a bound_service_account_namespaces APIGEE_NAMESPACE
在輸出內容中,
BOUND_SERVICE_ACCOUNT_NAMES是以半形逗號分隔的服務帳戶名稱清單。將apigee-operator-guardrails-sa新增至名稱清單。例如 (為方便閱讀而新增換行符):apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa, apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0 44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect- agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee- telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod- 2d0221c,apigee-operator-guardrails-sa
- 使用更新後的服務帳戶名稱清單,更新
apigee-orgsakeys角色的繫結:vault write auth/kubernetes/role/apigee-orgsakeys \ bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \ bound_service_account_namespaces=APIGEE_NAMESPACE \ policies=apigee-orgsakeys-auth \ ttl=1m
- 取得目前的 KSA 繫結清單:
-
在
SecretProviderClass中新增「guardrails」- 編輯
spc-org.yaml檔案。 - 在
spec.parameters.objects下方新增約束機制項目:- objectName: "guardrails" secretPath: "" secretKey: "" - 更新
SecretProviderClass:kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
- 編輯
GKE 的 WIF
防護措施的 Kubernetes 服務帳戶 (KSA) 名稱為
apigee-operator-guardrails-sa。使用下列指令,為apigee-guardrailsGoogle 服務帳戶 (GSA) 建立繫結:gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \ --project $PROJECT_ID請將以下內容新增到您的
overrides.yaml檔案中:guardrails: gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com
在其他平台使用 WIF
安全防護措施的 Kubernetes 服務帳戶 (KSA) 名稱為
apigee-operator-guardrails-sa。 您需要授予安全防護措施 KSA 模擬apigee-guardrailsGoogle 服務帳戶 (GSA) 的存取權,並設定覆寫項目以使用憑證設定檔。- 使用下列指令授予 KSA 模擬 GSA 的存取權:
範本
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
範例
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@my-project.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
其中:
PROJECT_ID:您的 Google Cloud 專案 ID。PROJECT_NUMBER:您建立 Workload Identity Pool 的專案專案編號。POOL_ID:Workload Identity Pool ID。APIGEE_NAMESPACE:安裝 Apigee Hybrid 的命名空間。
- 為
apigee-guardrails服務帳戶建立憑證設定檔:gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \ --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=apigee-guardrails-credential-configuration.json其中
WORKLOAD_PROVIDER_ID是 workload identity pool 提供者 ID。 - 請使用下列任一方法,設定
apigee-guardrails以搭配 Workload Identity Federation 使用:WIF:秘密
-
為每個憑證設定檔,使用憑證來源檔案建立新的 Kubernetes 密鑰。
kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
-
將
serviceAccountRef的值替換為新密鑰:guardrails: serviceAccountRef: guardrails-workload-identity-secret
WIF:檔案
將產生的
apigee-guardrails-credential-configuration.json檔案移至apigee-operator/圖表目錄。請將以下內容新增到您的
overrides.yaml檔案中:guardrails: serviceAccountPath: apigee-guardrails-credential-configuration.json
WIF:保管箱
在 Vault 中,使用對應的憑證來源檔案更新
guardrails的服務帳戶金鑰:SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"
-
為每個憑證設定檔,使用憑證來源檔案建立新的 Kubernetes 密鑰。
- 更新 Vault 密鑰
升級 cert-manager
Apigee Hybrid 1.16 支援 cert-manager 1.16 至 1.19 版。cert-manager 1.18 的變更可能會導致流量問題。在 cert-manager 1.18 版中,Certificate.Spec.PrivateKey.rotationPolicy 的預設值已從 Never 變更為 Always。如果是升級後的 Apigee Hybrid 安裝作業,這可能會導致流量問題。從舊版升級至混合式 1.16 版時,您必須編輯 apigee-ca 憑證,以補償這項變更,或將 cert-manager 版本維持在 1.17.x 版或更低版本。
將 cert-manager 升級至 1.18 或 1.19 版前,請按照下列步驟編輯 apigee-ca 憑證,將 Certificate.Spec.PrivateKey.rotationPolicy 的值設為 Never。
-
檢查
apigee-ca憑證的內容,確認是否已設定rotationPolicy:kubectl get certificate apigee-ca -n cert-manager -o yaml
在輸出內容中尋找
spec.privateKey下的值:... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA # Note: rotationPolicy would appear here if it is set. size: 256 secretName: apigee-ca ... -
如果未設定
rotationPolicy或設為Always,請編輯apigee-ca憑證,將rotationPolicy的值設為Never:- 請先執行模擬測試:
kubectl patch Certificate \ --dry-run=server \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca - 修補憑證:
kubectl patch Certificate \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca
- 請先執行模擬測試:
-
確認
rotationPolicy的值現在已設為Never:kubectl get certificate apigee-ca -n cert-manager -o yaml
輸出內容應如下所示:
... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA rotationPolicy: Never size: 256 secretName: apigee-ca ... -
升級 cert-manager。下列指令會下載並安裝 cert-manager v1.19.2:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml
如需支援的版本清單,請參閱「支援的平台和版本:cert-manager」。
請參閱:
安裝 Hybrid 1.16.0 執行階段
- 如果沒有,請前往
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.16.0 1.16.0
檢查可用性,確認該服務是否正常運作:
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 Ingress 管理工具:
模擬測試:
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-my-org-my-env 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 說明文件中的「三個重要概念」。 - ENV_NAME 是您要升級的環境名稱。
- OVERRIDES_FILE 是 v.1.16.0 的新覆寫檔案
升級圖表:
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-my-org-my-env 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 監控程式從控制層提取環境群組相關詳細資料後,ARC 會在內部建立 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-123abc 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
還原至先前版本
如要復原至先前的版本,請使用舊版圖表,以相反順序復原升級程序。請先從 apigee-virtualhost 開始,然後逐步返回 apigee-operator,再還原 CRD。
- 將所有圖表從
apigee-virtualhost還原至apigee-datastore。下列指令假設您使用的是舊版 (v1.15.x) 的圖表。針對每個環境群組執行下列指令:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.15_OVERRIDES_FILE
針對每個環境執行下列指令:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f 1.15_OVERRIDES_FILE
還原
apigee-operator以外的其餘圖表。helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_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.15_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
- 部分叢集範圍資源 (例如
clusterIssuer) 會在解除安裝operator時刪除。使用下列指令重新安裝:helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f 1.15_OVERRIDES_FILE