本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本頁面說明如何安裝及設定 Kubernetes 適用的 Apigee 運算子。如要進一步瞭解使用 Apigee Operator for Kubernetes 的優點,請參閱 Apigee Operator for Kubernetes 總覽。
事前準備
安裝 Kubernetes 適用的 Apigee Operator 前,請確認您具備完成步驟所需的角色和權限,並已完成「Kubernetes 適用的 Apigee Operator:事前準備」一文所述的前置作業。
必要的角色
如要取得安裝 Kubernetes 適用的 Apigee Operator 所需的權限,請要求管理員在機構中授予下列 IAM 角色:
-
建立及管理 GKE 叢集:
容器管理員 (
roles/container.admin) -
建立及管理服務帳戶:
服務帳戶管理員 (
roles/iam.serviceAccountAdmin) -
建立及管理服務擴充功能:
Service Extensions 管理員 (
roles/networkservices.serviceExtensionsAdmin) -
建立及管理網路端點群組 (NEG):
Compute 執行個體管理員 (
roles/compute.instanceAdmin) -
建立及管理後端服務:
Compute 負載平衡器管理員 (
roles/compute.loadBalancerAdmin) -
建立及管理 Apigee 資源:
Apigee 管理員 (
roles/apigee.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
安裝及設定 Kubernetes 適用的 Apigee 運算子
下列各節說明如何安裝及設定 Kubernetes 適用的 Apigee Operator:
- 設定環境變數。
- 啟用必要的 API。
- 擷取及設定憑證。
- 安裝 Kubernetes 適用的 Apigee 運算子。
- 建立工作負載身分。
- 建立 Apigee 環境。
- 驗證 GKE Gateway 設定。
設定環境變數
在包含 Apigee 執行個體的 Google Cloud 專案中,使用下列指令設定環境變數:
export PROJECT_ID=PROJECT_IDexport CLUSTER_NAME=CLUSTER_NAMEexport REGION=REGIONexport APIGEE_ORG=APIGEE_ORG
其中:
PROJECT_ID是 Apigee 執行個體所屬專案的 ID。CLUSTER_NAME是 GKE 叢集的名稱。REGION是 GKE 叢集的區域。APIGEE_ORG設為與PROJECT_ID相同的值。
如要確認環境變數設定正確無誤,請執行下列指令:
echo $PROJECT_ID $CLUSTER_NAME $REGION $APIGEE_ORG
啟用必要的 API
Kubernetes 適用的 Apigee Operator 需要存取下列 API:
| 名稱 | 標題 |
|---|---|
apigee.googleapis.com |
Apigee API |
compute.googleapis.com |
Compute Engine API |
networkservices.googleapis.com |
Network Services API |
container.googleapis.com |
Google Kubernetes Engine API |
使用下列指令確認必要的 API 已啟用:
gcloud services list --project=$PROJECT_ID
如果指令輸出中未列出必要的 API,請啟用這些 API:
gcloud services enable apigee.googleapis.com --project=$PROJECT_IDgcloud services enable compute.googleapis.com --project=$PROJECT_IDgcloud services enable networkservices.googleapis.com --project=$PROJECT_IDgcloud services enable container.googleapis.com --project=$PROJECT_ID
擷取及設定憑證
擷取叢集憑證並建立服務帳戶,以便連線至 Google Cloud 服務:
使用下列指令取得叢集憑證:
gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID
這些憑證會與先決條件步驟中建立的 GKE 叢集通訊。
- 設定服務帳戶憑證,以便連線至 Google Cloud 服務:
gcloud iam service-accounts create apigee-apim-gsa
- 使用下列指令,將必要角色和權限授予您建立的服務帳戶:
- Apigee 管理員角色:建立及管理 Apigee 資源時必須具備此角色。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/apigee.admin"
- 服務擴充功能管理員角色:建立及管理服務擴充功能時必須具備此角色。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/networkservices.serviceExtensionsAdmin"
- 網路管理員角色:使用服務擴充功能管理 Apigee 存取權時,必須具備此角色。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/compute.networkAdmin"
- 負載平衡器管理員角色:管理網路端點群組 (NEG) 與後端服務之間的存取權時,需要這個角色。
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/compute.loadBalancerAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/iam.workloadIdentityUser"
- Apigee 管理員角色:建立及管理 Apigee 資源時必須具備此角色。
建立工作負載身分
在下一個步驟中,helm 安裝 Kubernetes 適用的 Apigee Operator 時,會在 apim 命名空間中建立名為 apim-ksa 的必要 Kubernetes 服務帳戶 (KSA)。建立 KSA 時,其中會包含註解,用於與 Apigee Operator for Kubernetes 所用的工作負載身分建立關聯,以便存取必要的 Apigee 和 Service Networking 資源。
如要建立工作負載身分,請使用下列指令:
gcloud iam service-accounts add-iam-policy-binding apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:$PROJECT_ID.svc.id.goog[apim/apim-ksa]"
這項指令會將 KSA 與您在「擷取及設定憑證」中建立的 Google 服務帳戶繫結,並指派 workloadIdentityUser 角色。
工作負載身分識別變更可能需要幾分鐘 (最多 7 分鐘) 才能全面套用到系統。
如要確認是否已建立工作負載身分,請使用下列指令:
gcloud config set project $PROJECT_ID
kubectl run --rm -it --image google/cloud-sdk:slim \ --namespace apim workload-identity-test \ --overrides='{ "spec": { "serviceAccountName": "apim-ksa" } }' \ -- gcloud auth list
輸出內容應如下所示:
Credentialed Accounts ACTIVE ACCOUNT * GSA@$PROJECT_ID.iam.gserviceaccount.com
安裝自訂資源定義 (CRD) 和 Kubernetes 適用的 Apigee 運算子
安裝 Kubernetes 自訂資源定義 (CRD) 和 Kubernetes 適用的 Apigee 運算子:
- 為 Kubernetes 適用的 Apigee Operator 建立命名空間:
kubectl create ns apim
- 安裝 Kubernetes CRD 適用的 Apigee 運算子:
helm install apigee-apim-crds -n apim \ oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds \ --version 1.1.0 \ --atomic
- 安裝 Kubernetes 適用的 Apigee 運算子:
helm install apigee-apim-operator -n apim \ oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm \ --version 1.1.0 \ --set projectId=$PROJECT_ID \ --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \ --set apigeeOrg=$PROJECT_ID \ --set generateEnv=ENV_GENERATION_MODE \ --atomic
- 確認安裝作業是否順利完成:
helm list -n apim
輸出內容應如下所示:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION apigee-apim-crds apim 1 2025-02-01 00:17:03.399810627 +0000 UTC deployed apigee-apim-operator-crds-1.1.0 1.1.0 apigee-apim-operator apim 1 2025-02-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-1.1.0 1.1.0
- 確認 KSA 是使用必要註解建立:
kubectl describe serviceaccounts apim-ksa -n apim
輸出內容應如下所示:
Name: apim-ksa Namespace: apim ... Annotations: iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.iam.gserviceaccount.com
- 確認 APIM 運算子是否在叢集的 Pod 中啟動並執行:
kubectl get pods -n apim
輸出內容應如下所示:
NAME READY STATUS RESTARTS AGE apigee-apim-operator-8559d4994b-h55fl 1/1 Running 0 8m34s
如果
STATUS不是Running,或READY未顯示1/1,請參閱「排解 Kubernetes 適用的 Apigee Operator 問題」,排解安裝問題。
如要讓運算子在安裝 Kubernetes 適用的 Apigee 運算子時建立新的 Apigee 環境,請將 ENV_GENERATION_MODE 替換為 TRUE。如要在安裝運算子後手動建立環境,請將 ENV_GENERATION_MODE 設為 FALSE。詳情請參閱「建立 Apigee 環境」。
建立 Apigee 環境
如果您在上一個步驟中generateEnv=TRUE安裝了 Kubernetes 適用的 Apigee Operator,當建立並套用 APIM 擴充功能政策時,這個運算子就會建立新的 Apigee 環境。新環境的名稱前置字串為:apim-enabled-dep-env。
如果您使用 generateEnv=FALSE 安裝 Kubernetes 適用的 Apigee 運算子,則必須建立新的 Apigee 環境:
- 為
curl指令設定TOKEN:export TOKEN=$(gcloud auth print-access-token)
- 使用下列任一指令建立環境:
- 2021 年訂閱方案機構:
curl -X POST "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H \ "Authorization: Bearer $TOKEN" -H "content-type:application/json" \ -d '{ "name": "ENV_NAME", "displayName": "ENV_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
其中
ENV_NAME是要建立的環境名稱。 - 適用於 2024 年訂閱方案和即付即用機構:
curl -i -X POST -H "Authorization: Bearer $TOKEN" "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H "Content-Type:application/json" -d '{ "name": "ENV_NAME", "displayName": "ENV_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "type" : "COMPREHENSIVE", "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
其中:
ENV_NAME是要建立的環境名稱。ENV_TYPE是要建立的環境類型。例如INTERMEDIATE或COMPREHENSIVE。
如要確認環境是否已成功建立,請執行下列步驟:
curl -i -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"
- 2021 年訂閱方案機構:
- 將環境連結至 Apigee 執行個體:
curl -i -X POST -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/instances/INSTANCE_NAME/attachments" \ -H "Content-Type:application/json" -d '{"environment": "ENV_NAME"}'
其中:
INSTANCE_NAME是 Apigee 執行個體的名稱。ENV_NAME是您在前一個步驟建立的環境名稱。
如要查看環境附件作業的狀態:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/operations/OPERATION_ID"
其中
OPERATION_ID是環境附件作業的 ID。
疑難排解
如果在安裝 Kubernetes 適用的 Apigee Operator 時發生問題,請參閱「排解 Kubernetes 適用的 Apigee Operator 問題」,瞭解常見錯誤的解決方法。
後續步驟
使用 APIMExtensionPolicy 或 ApigeeBackendService 建立流量服務擴充功能: