本頁內容適用於 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_ID
export CLUSTER_NAME=CLUSTER_NAME
export REGION=REGION
export 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_ID
gcloud services enable compute.googleapis.com --project=$PROJECT_ID
gcloud services enable networkservices.googleapis.com --project=$PROJECT_ID
gcloud 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
建立流量服務擴充功能: