本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本頁說明安裝及設定 Kubernetes 適用的 Apigee APIM 運算子的必要步驟。如要進一步瞭解使用 APIM Operator 的優點,請參閱 Kubernetes 適用的 Apigee APIM Operator 總覽。
事前準備
開始安裝 APIM Operator 前,請確認您具備完成步驟所需的角色和權限,並已完成「APIM Operator:事前準備」一文所述的前置作業。
必要的角色
如要取得安裝 APIM 運算子所需的權限,請要求管理員在機構中授予下列 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
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
安裝及設定 APIM Operator
下列各節說明安裝及設定 APIM 運算子所需的步驟:
設定環境變數
在包含 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
APIM 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
安裝 APIM Operator 時,會在 apim
命名空間中建立名為 apim-ksa
的必要 Kubernetes 服務帳戶 (KSA)。建立 KSA 時,其中會包含與 APIM 運算子所用工作負載身分建立關聯的必要註解,方便存取必要的 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) 和 APIM 運算子
安裝 Kubernetes 自訂資源定義 (CRD) 和 APIM 運算子:
- 為 APIM 運算子建立命名空間:
kubectl create ns apim
- 安裝 APIM Operator 自訂資源定義 (CRD):
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.0.0 \ --atomic
- 安裝 APIM Operator:
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.0.0 \ --set projectId=$PROJECT_ID \ --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \ --set apigeeOrg=$PROJECT_ID \ --set generateEnv=TRUE \ --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.0.0 1.0.0 apigee-apim-operator apim 1 2025-02-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-1.0.0 1.0.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
,請參閱「排解 APIM 運算子問題」一文,排解安裝問題。
建立 Apigee 環境
如果您在上一個步驟中使用 generateEnv=TRUE
安裝 APIM Operator,則在建立並套用 APIM 擴充功能政策時,這個運算子會建立新的 Apigee 環境。新環境的名稱會加上前置字串:apim-enabled-dep-env
。
如果您使用 generateEnv=FALSE
安裝 APIM Operator,則必須建立新的 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。
疑難排解
如果在安裝 APIM Operator 時遇到問題,請參閱「排解 APIM Operator 問題」,瞭解常見錯誤的解決方案。