本文件會逐步引導您使用 Helm 圖表安裝 Apigee hybrid 1.10 版。
版本
Apigee Hybrid Helm 圖表適用於 Apigee Hybrid 1.10.x 版。如需混合版本清單,請參閱 Apigee Hybrid 版本記錄。
必要條件
- Apigee Hybrid 1.10.5
- Helm 3.10 以上版本
-
請前往以下網址存取 Apigee Hybrid Helm 資訊套件存放區:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
- gcloud CLI
- Google Cloud Apigee Hybrid 安裝專案。請參閱「 建立及管理專案」
- Apigee Hybrid 安裝作業的 Kubernetes 叢集。請參閱:
範圍
- 這個版本僅支援 Apigee Hybrid 1.10.5 版。
-
此版本支援:
- 新的 Apigee Hybrid 安裝作業。
- 將現有的 Apigee hybrid 安裝升級至 1.10.5 版,並使用 Apigee hybrid Helm 遷移工具遷移至 Helm 管理。
- 此版本支援:
支援的 Kubernetes 平台和版本
平台 | 版本 |
---|---|
GKE | 1.24、1.25、1.26 |
AKS | 1.24、1.25、1.26 |
EKS | 1.24、1.25、1.26 |
OpenShift | 4.11、4.12 |
限制
-
Helm 圖表不完全支援 CRD,因此我們會使用
kubectl -k
指令安裝及升級 CRD。我們希望遵循 Kubernetes 管理方面的社群和 Google 最佳做法。透過 Helm 部署的 CRD 尚未達到社群狀態,因此我們無法提供廣泛支援,也無法提供這類模型的相關要求。因此,請按照本文件所述,使用kubectl
管理 Apigee CRD。 -
在
apigeectl
中,我們使用了overrides.yaml
中的檔案來建立服務帳戶和憑證,但 Helm 不支援參照資訊套件目錄以外的檔案。請為服務帳戶和憑證檔案選取下列其中一個選項:- 將相關檔案的副本放入每個圖表目錄中
-
為每個檔案或資料夾在各個圖表目錄中建立符號連結。Helm 會追蹤圖表目錄中的符號連結,但會輸出以下警告:
apigee-operator/gsa -> ../gsa
-
使用 Kubernetes 密鑰。例如,服務帳戶:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \ -n apigee
-
替換下列項目:
- SECRET_NAME 與您建立的 Kubernetes 密鑰名稱。
- CLOUD_IAM_FILE_NAME.json,名稱為下載的 JSON 檔案名稱。
支援的 Kubernetes 平台和版本
如需支援平台的清單,請參閱 Apigee hybrid 支援平台表格中的 v1.10 欄。
必要權限
下表列出 Kubernetes 和 Apigee 所需的資源和權限。
如要篩選這個表格,請執行下列一或多項操作:選取類別、輸入搜尋字詞,或按一下資料欄標題進行排序。
類別 | 資源 | 資源類型 | Kubernetes RBAC 權限 |
---|---|---|---|
Datastore | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete patch update |
Datastore | certificates.cert-manager.io |
Kubernetes | create delete patch update |
Datastore | cronjobs.batch |
Kubernetes | create delete patch update |
Datastore | jobs.batch |
Kubernetes | create delete patch update |
Datastore | secrets |
Kubernetes | create delete patch update |
Env | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete patch update |
Env | secrets |
Kubernetes | create delete patch update |
Env | serviceaccounts |
Kubernetes | create delete patch update |
Ingress 管理工具 | certificates.cert-manager.io |
Kubernetes | create delete patch update |
Ingress 管理工具 | configmaps |
Kubernetes | create delete patch update |
Ingress 管理工具 | deployments.apps |
Kubernetes | create get delete patch update |
Ingress 管理工具 | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete patch update |
Ingress 管理工具 | issuers.cert-manager.io |
Kubernetes | create delete patch update |
Ingress 管理工具 | serviceaccounts |
Kubernetes | create delete patch update |
Ingress 管理工具 | services |
Kubernetes | create delete patch update |
運算子 | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeedatastores.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeedatastores.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeedeployments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeedeployments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeedeployments.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeeenvironments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeeenvironments.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeeissues.apigee.cloud.google.com |
Apigee | create delete get list watch |
運算子 | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeeorganizations.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeeorganizations.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeeredis.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeeredis.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeeredis.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | get list |
運算子 | apigeeroutes.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeeroutes.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeeroutes.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | apigeetelemetries.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
運算子 | apigeetelemetries.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | apigeetelemetries.apigee.cloud.google.com/status |
Apigee | get list patch update |
運算子 | cassandradatareplications.apigee.cloud.google.com |
Apigee | get list patch update watch |
運算子 | cassandradatareplications.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
運算子 | cassandradatareplications.apigee.cloud.google.com/status |
Apigee | get patch update |
運算子 | *.networking.x.k8s.io |
Kubernetes | get list watch |
運算子 | apiservices.apiregistration.k8s.io |
Kubernetes | create delete get list patch update watch |
運算子 | certificates.cert-manager.io |
Kubernetes | create delete get list patch update watch |
運算子 | certificates.cert-manager.io/finalizers |
Kubernetes | create delete get list patch update watch |
運算子 | certificatesigningrequests.certificates.k8s.io |
Kubernetes | create delete get update watch |
運算子 | certificatesigningrequests.certificates.k8s.io/approval |
Kubernetes | create delete get update watch |
運算子 | certificatesigningrequests.certificates.k8s.io/status |
Kubernetes | create delete get update watch |
運算子 | clusterissuers.cert-manager.io |
Kubernetes | create get watch |
運算子 | clusterrolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
運算子 | clusterroles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
運算子 | configmaps |
Kubernetes | create delete get list patch update watch |
運算子 | configmaps/status |
Kubernetes | get patch update |
運算子 | cronjobs.batch |
Kubernetes | create delete get list patch update watch |
運算子 | customresourcedefinitions.apiextensions.k8s.io |
Kubernetes | get list watch |
運算子 | daemonsets.apps |
Kubernetes | create delete get list patch update watch |
運算子 | deployments.apps |
Kubernetes | get list watch |
運算子 | deployments.extensions |
Kubernetes | get list watch |
運算子 | destinationrules.networking.istio.io |
Kubernetes | create delete get list patch update watch |
運算子 | endpoints |
Kubernetes | get list watch |
運算子 | endpointslices.discovery.k8s.io |
Kubernetes | get list watch |
運算子 | events |
Kubernetes | create delete get list patch update watch |
運算子 | gateways.networking.istio.io |
Kubernetes | create delete get list patch update watch |
運算子 | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete get list patch update watch |
運算子 | ingressclasses.networking.k8s.io |
Kubernetes | get list watch |
運算子 | ingresses.networking.k8s.io/status |
Kubernetes | all verbs |
運算子 | issuers.cert-manager.io |
Kubernetes | create delete get list patch update watch |
運算子 | jobs.batch |
Kubernetes | create delete get list patch update watch |
運算子 | leases.coordination.k8s.io |
Kubernetes | create get list update |
運算子 | namespaces |
Kubernetes | create get list watch |
運算子 | nodes |
Kubernetes | get list watch |
運算子 | peerauthentications.security.istio.io |
Kubernetes | create delete get list patch update watch |
運算子 | persistentvolumeclaims |
Kubernetes | create delete get list patch update watch |
運算子 | persistentvolumes |
Kubernetes | get list watch |
運算子 | poddisruptionbudgets.policy |
Kubernetes | create delete get list patch update watch |
運算子 | pods |
Kubernetes | create delete get list patch update watch |
運算子 | pods/exec |
Kubernetes | create |
運算子 | replicasets.apps |
Kubernetes | create delete get list patch update watch |
運算子 | replicasets.extensions |
Kubernetes | get list watch |
運算子 | resourcequotas |
Kubernetes | create delete get list patch update watch |
運算子 | rolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
運算子 | roles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
運算子 | secrets |
Kubernetes | batch create delete get list patch update watch |
運算子 | securitycontextconstraints.security.openshift.io |
Kubernetes | create get list |
運算子 | serviceaccounts |
Kubernetes | create delete get list patch update watch |
運算子 | services |
Kubernetes | batch create delete get list patch update watch |
運算子 | signers.certificates.k8s.io |
Kubernetes | approve |
運算子 | statefulsets.apps |
Kubernetes | create delete get list patch update watch |
運算子 | subjectaccessreviews.authorization.k8s.io |
Kubernetes | create get list |
運算子 | tokenreviews.authentication.k8s.io |
Kubernetes | create |
運算子 | virtualservices.networking.istio.io |
Kubernetes | create delete get list patch update watch |
機構 | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete patch update |
機構 | secrets |
Kubernetes | create delete patch update |
機構 | serviceaccounts |
Kubernetes | create delete patch update |
Redis | apigeeredis.apigee.cloud.google.com |
Apigee | create delete patch update |
Redis | secrets |
Kubernetes | create delete patch update |
遙測 | apigeetelemetry.apigee.cloud.google.com |
Apigee | create delete patch update |
遙測 | secrets |
Kubernetes | create delete patch update |
遙測 | serviceaccounts |
Kubernetes | create delete patch update |
虛擬主機 | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | create delete patch update |
虛擬主機 | secrets |
Kubernetes | create delete patch update |
另請參閱:
準備安裝
Apigee Hybrid 圖表會託管在 Google Artifact Registry 中:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
提取 Apigee Helm 資訊套件
使用 pull
指令,並使用下列指令將所有 Apigee 混合 Helm 圖表複製到本機儲存空間:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.10.5
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
安裝 Apigee Hybrid
安裝程序總覽
元件的安裝順序為從左到右,如下圖所示。圖中的垂直堆疊元件可一起安裝,安裝順序不拘。安裝任何元件後,您隨時可以個別更新該元件,例如複本、記憶體、CPU 等。
準備使用 Helm 資訊套件安裝 Apigee Hybrid
-
建立要用於
apigee
資源的命名空間。這個值應與overrides.yaml
檔案中的命名空間欄位相符。如果overrides.yaml
中未提供此值,則預設值為apigee
。檢查命名空間是否已存在:
kubectl get namespace apigee
如果命名空間存在,輸出內容會包含:
NAME STATUS AGE apigee Active 1d
-
如果命名空間不存在,請建立一個:
kubectl create namespace apigee
-
建立 Apigee 操作員資源使用的
apigee-system
命名空間。檢查命名空間是否已存在:
kubectl get namespace apigee-system
-
如果命名空間不存在,請建立一個:
kubectl create namespace apigee-system
-
建立服務帳戶,並指派適當的 IAM 角色給這些帳戶。Apigee hybrid 會使用下列服務帳戶:
服務帳戶 IAM 角色 apigee-cassandra
Storage 物件管理員 apigee-logger
記錄寫入者 apigee-mart
Apigee Connect 代理人 apigee-metrics
Monitoring 指標寫入者 apigee-runtime
不需要角色 apigee-synchronizer
Apigee 同步處理工具管理員 apigee-udca
Apigee 數據分析代理人 apigee-watcher
Apigee 執行階段代理人 Apigee 在
apigee-operator/etc/tools
目錄中提供create-service-account
工具:APIGEE_HELM_CHARTS_HOME/ └── apigee-operator/ └── etc/ └── tools/ └── create-service-account
這項工具會建立服務帳戶、為每個帳戶指派 IAM 角色,並下載每個帳戶的 JSON 格式憑證檔案。
- 建立要下載服務帳戶憑證檔案的目錄。您將在以下指令中指定此值,並將其放在 SERVICE_ACCOUNTS_PATH 的位置。
-
您可以使用單一指令搭配下列選項,建立所有服務帳戶:
APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
- 在覆寫檔案中列出服務帳戶名稱:
ls service-accounts
my_project-apigee-cassandra.json my_project-apigee-runtime.json my_project-apigee-logger.json my_project-apigee-synchronizer.json my_project-apigee-mart.json my_project-apigee-udca.json my_project-apigee-metrics.json my_project-apigee-watcher.json
如需詳細資訊,請參閱:
- 安裝前,請查看
overrides.yaml
檔案,確認設定:instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER namespace: apigee # required for Helm charts installation # By default, logger and metrics are enabled and requires below details # Google Cloud project and cluster gcp: projectID: PROJECT_ID region: REGION k8sCluster: name: CLUSTER_NAME region: REGION org: ORG_NAME envs: - name: "ENV_NAME" serviceAccountPaths: runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT" synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT" udca: "PATH_TO_UDCA_SVC_ACCOUNT" ingressGateways: - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389. replicaCountMin: 1 replicaCountMax: 2 svcType: LoadBalancer virtualhosts: - name: ENV_GROUP_NAME selector: app: apigee-ingressgateway ingress_name: GATEWAY_NAME sslSecret: SECRET_NAME mart: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" logger: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT" metrics: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT" udca: serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT" connectAgent: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" watcher: serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"
這與您要用於此 Helm 安裝作業的覆寫設定相同。如需其他設定,請參閱設定屬性參考資料。
如需其他覆寫檔案範例,請參閱「步驟 6:設定混合式執行階段」。
- 啟用同步器存取權。這是安裝 Apigee Hybrid 的必要條件。
-
請使用下列指令,檢查同步器存取權是否已啟用:
export TOKEN=$(gcloud auth print-access-token)
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \ -d ''
輸出內容應如下所示:
{ "identities":[ "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID" ], "etag":"BwWJgyS8I4w=" }
-
如果輸出內容不含服務帳戶 ID,請啟用同步器存取權。您的帳戶必須具備 Apigee 機構管理員 IAM 角色 (
roles/apigee.admin
),才能執行這項工作。curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \ -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
詳情請參閱 Apigee hybrid 安裝說明文件中的「 步驟 7:啟用同步處理工具存取權」。
-
- 使用下列指令安裝 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=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 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 Operator/Controller:
helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f overrides.yaml
確認 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.10.5 1.10.5
確認可用性,確認該服務是否已啟用:
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 \ --atomic \ -f overrides.yaml
檢查
apigeedatastore
的狀態,確認其已啟用並執行:kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
-
安裝 Apigee 遙測:
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
查看狀態,確認服務已啟用及執行:
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
-
安裝 Apigee Redis:
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
查看狀態,確認服務已啟用及執行:
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
-
安裝 Apigee 入口管理工具:
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
確認可用性,確認該服務是否已啟用:
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 \ --atomic \ -f overrides.yaml
檢查相關機構的狀態,確認該機構是否已啟用及運作:
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
-
安裝環境。
您一次只能安裝一個環境。使用
--set env=
ENV_NAME 指定環境:helm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides.yaml
檢查相應環境的狀態,確認環境已啟用並執行:
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- 建立 TLS 憑證。您必須在 Apigee 混合型設定中,為執行階段入口網關提供 TLS 憑證。
-
建立憑證。在實際工作環境中,您必須使用已簽署的憑證。您可以使用憑證和金鑰組合,也可以使用 Kubernetes 密鑰。
為了示範及測試安裝作業,執行階段閘道可接受自行簽署的憑證。在以下範例中,我們使用 openssl 產生自行簽署的憑證:
openssl req -nodes -new -x509 \ -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \ -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \ -subj '/CN='YOUR_DOMAIN'' -days 3650
詳情請參閱「步驟 5:建立 TLS 憑證」。
-
建立 Kubernetes 密鑰以參照憑證:
kubectl create secret generic NAME \ --from-file="cert=PATH_TO_CRT_FILE" \ --from-file="key=PATH_TO_KEY_FILE" \ -n apigee
-
-
安裝虛擬主機。
您必須一次安裝一個環境群組 (虛擬主機)。使用
--set envgroup=
ENV_GROUP_NAME 指定環境群組:# repeat the following command for each env group mentioned in the overrides.yaml file helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
這會建立 ApigeeRouteConfig (ARC),當 Apigee 監控器從控管層擷取環境群組相關詳細資料時,ARC 會在內部建立 ApigeeRoute (AR)。因此,請檢查對應的 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
搭配 Apigee hybrid 使用 Helm 圖表的其他用途
Cassandra 備份與還原
- 如要啟用備份功能,請按照下列步驟操作:
-
更新
overrides.yaml
檔案中的 Cassandra 備份詳細資料:cassandra: backup: enabled: true serviceAccountPath: PATH_TO_GSA_FILE dbStorageBucket: BUCKET_LINK schedule: "45 23 * * 6"
-
在
apigee-datastore
資訊套件上執行 Helm 升級:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
- 同樣地,如要啟用還原功能:
-
更新
overrides.yaml
檔案中的 Cassandra 還原詳細資料:cassandra: restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: PATH_TO_GSA_FILE cloudProvider: "CSI"
-
在
apigee-datastore
資訊套件上執行 Helm 升級:helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
如要進一步瞭解 Cassandra 備份與還原作業,請參閱「Cassandra 備份總覽」。
多區域擴充
使用 Helm 圖表設定多個區域時,需要的先決條件與目前的 apigeectl
程序相同。詳情請參閱多地區部署的
必要條件。
為多區域設定混合式服務的程序,與設定多區域種子主機和 Kubernetes 叢集與情境的現有程序相同。
設定第一個區域
請按照下列步驟設定第一個區域,並準備設定第二個區域:
- 請按照「 為多區域設定 Apigee hybrid」一文中的步驟,在平台上設定多區域種子主機。
-
針對建立的第一個區域,取得 apigee 命名空間中的 Pod:
kubectl get pods -o wide -n apigee
- 找出這個區域中 Cassandra 的多區域種子主機位址,例如
10.0.0.11
。 -
為第二個區域準備
overrides.yaml
檔案,並新增種子主機 IP 位址,如下所示:cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" clusterName: CLUSTER_NAME hostNetwork: false
更改下列內容:
- SEED_HOST_IP_ADDRESS 與種子主機 IP 位址,例如
10.0.0.11
。 - DATACENTER_NAME 與資料中心名稱,例如
dc-2
。 - RACK_NAME 加上機架名稱,例如
ra-1
。 - CLUSTER_NAME 改為 Apigee 叢集的名稱。根據預設,這個值為
apigeecluster
。如果您使用其他叢集名稱,則必須為 cassandra.clusterName 指定值。這個值在所有地區都必須相同。
- SEED_HOST_IP_ADDRESS 與種子主機 IP 位址,例如
設定第二個區域
如要設定新的區域,請按照下列步驟操作:
-
在區域 2 中安裝
cert-manager
:kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
- 將憑證從現有叢集複製到新叢集。
Cassandra 和其他混合式元件會使用新的 CA 根目錄,用於 mTLS。因此,叢集中的憑證必須保持一致。
-
將內容設定為原始命名空間:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
將目前的命名空間設定匯出至檔案:
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
將
apigee-ca
密鑰匯出至檔案:kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
將結構定義設為新區域的叢集名稱:
kubectl config use-context NEW_CLUSTER_NAME
-
將命名空間設定匯入新叢集。如果您在新區域中使用其他命名空間,請務必更新檔案中的命名空間:
kubectl apply -f apigee-namespace.yaml
-
將 Secret 匯入新叢集:
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
接著,使用 Helm 圖表在新的區域安裝 Apigee hybrid,並執行下列 Helm 圖表指令 (如在區域 1 所示):
helm upgrade operator apigee-operator \ --install \ --namespace apigee-system \ --atomic -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- 安裝所有元件後,請在新資料中心的所有 Pod 上設定 Cassandra。如需操作說明,請參閱「 為多區域設定 Apigee hybrid」,選取您的平台,捲動至「設定新的區域」,然後找出步驟 5。
- 資料複製完成並經過驗證後,請更新種子主機:
-
從
overrides-DATACENTER_NAME.yaml
中移除multiRegionSeedHost: 10.0.0.11
。建立資料複製作業後,就不需要
multiRegionSeedHost
項目,且 Pod IP 應會隨時間變更。 -
重新套用變更,更新 apigee 資料儲存庫 CR:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
從
私人代管圖片
您可以選擇不使用公開的 Google Cloud 存放區,改為私下代管圖片。您可以選擇在覆寫值中新增中樞詳細資料,而非覆寫每個元件:
hub: PRIVATE_REPO
舉例來說,如果提供下列中樞,系統會自動解析圖片路徑:
hub: private-docker-host.com
為:
## an example of internal component vs 3rd party containers: - name: apigee-udca image: private-docker-host.com/apigee-udca:1.10.5 imagePullPolicy: IfNotPresent containers: - name: apigee-ingressgateway image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless imagePullPolicy: IfNotPresent
如要在指令列上顯示 Google Cloud 存放區中託管的 Apigee 映像檔清單,請按照下列步驟操作:
./apigee-operator/etc/tools/apigee-pull-push.sh --list
容許條件
如要使用
Kubernetes 的 Taint 和容許值功能,您必須為每個 Apigee 混合元件定義 tolerations
覆寫屬性。下列元件可支援定義容忍度:
ao
apigeeIngressGateway
cassandra
cassandraSchemaSetup
cassandraSchemaValidation
cassandraUserSetup
connectAgent
istiod
logger
mart
metrics
mintTaskScheduler
redis
runtime
synchronizer
udca
Watcher
如要進一步瞭解這些元件,請參閱 設定屬性參考資料。
例如,將容忍度套用至 Apigee 操作員部署作業:
ao: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600
如要將容忍度套用至 Cassandra StatefulSet,請按照下列步驟操作:
cassandra: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600
使用 Helm 解除安裝 Apigee Hybrid
如要解除安裝特定更新或發布,您可以使用 helm [uninstall/delete] RELEASE-NAME -n NAMESPACE
指令。
請按照下列步驟從叢集中完全解除安裝 Apigee Hybrid:
- 刪除 virtualhosts。針對每個虛擬主機執行下列指令:
helm -n apigee delete VIRTUALHOST_RELEASE-NAME
- 刪除環境。針對每個環境執行下列指令:
helm -n apigee delete ENV_RELEASE-NAME
- 刪除 Apigee 機構:
helm -n apigee delete ORG_RELEASE-NAME
- 刪除遙測資料:
helm -n apigee delete TELEMETRY_RELEASE-NAME
- 刪除 Redis:
helm -n apigee delete REDIS_RELEASE-NAME
- 刪除 ingress 管理工具:
helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
- 刪除資料儲存庫:
helm -n apigee delete DATASTORE_RELEASE-NAME
- 刪除運算子。
- 請務必先刪除所有 CR,再執行下列操作:
kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
- 刪除 Apigee Operator:
helm -n apigee-system delete OPERATOR_RELEASE-NAME
- 請務必先刪除所有 CR,再執行下列操作:
- 刪除 Apigee Hybrid CRD:
kubectl delete -k apigee-operator/etc/crds/default/