本页面适用于 Apigee,但不适用于 Apigee Hybrid。
查看 Apigee Edge 文档。
本页面介绍了安装和配置 Apigee APIM Operator for Kubernetes(预览版)所需的步骤。如需详细了解使用 APIM Operator 的优势,请参阅 Apigee APIM Operator for Kubernetes 概览。
准备工作
在开始安装 APIM Operator 之前,请确保您拥有完成相应步骤所需的角色和权限,并且已完成 APIM Operator:准备工作中所述的前提任务。
所需的角色
如需获得安装 APIM Operator 所需的权限,请让您的管理员为您授予组织的以下 IAM 角色:
-
创建和管理 GKE 集群:Container Admin (
roles/container.admin
) -
创建和管理服务账号:Service Account Admin (
roles/iam.serviceAccountAdmin
) -
创建和管理服务扩展:Service Extensions Admin (
roles/networkservices.serviceExtensionsAdmin
) -
创建和管理网络端点组 (NEG):Compute Instance Admin (
roles/compute.instanceAdmin
) -
创建和管理后端服务:Compute Load Balancer Admin (
roles/compute.loadBalancerAdmin
) -
创建和管理 Apigee 资源:Apigee Admin (
roles/apigee.admin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
安装和配置 APIM Operator
以下部分介绍了安装和配置 APIM Operator 所需的步骤:
设置环境变量
在包含 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,请将其启用:
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 资源。
安装自定义资源定义 (CRD) 和 APIM Operator
安装 Kubernetes 自定义资源定义 (CRD) 和 APIM Operator:
- 为 APIM Operator 创建命名空间:
kubectl create ns apim
- 安装 APIM Operator 自定义资源定义 (CRD):
helm install apigee-apim-crds oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds --version 0.6.0 -n apim --atomic
- 安装 APIM Operator:
helm install apigee-apim-operator oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm --version 0.6.0 --set project_id=${PROJECT_ID} --set serviceAccount=apigee-apim-gsa@${PROJECT_ID}.iam.gserviceaccount.com --set apigeeOrg=${PROJECT_ID} --set generateEnv=TRUE --set apigeeMgmtUrl="https://apigee.googleapis.com" -n apim --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-0.6.0 0.6.0 apigee-apim-operator apim 1 2025-02-01 00:15:00.362829981 +0000 UTC deployed apigee-apim-operator-helm-0.6.0 0.6.0
helm
安装会在 apim
命名空间中创建一个名为 apim-ksa
的必需 Kubernetes 服务账号 (KSA)。KSA 包含与下一步中创建的工作负载身份相关联所需的注解。
如需确认 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 Operator 用于访问所需的 Apigee 和 Service Networking 资源的工作负载身份,请将 KSA 与您在检索和配置凭据中创建的 Google 服务账号绑定,并分配 workloadIdentityUser
角色:
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]"
可选:创建 Apigee 环境
这是可选步骤。如果您不想创建 Apigee 环境,APIM Operator 会创建该环境。新环境的名称具有前缀 apim-enabled-dep-env
。
创建 Apigee 环境:
- 设置
curl
命令所需的TOKEN
:export TOKEN=$(gcloud auth print-access-token)
- 使用以下命令之一创建环境:
- 对于 2021 年订阅组织:
curl -X POST "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments" -H \ "Authorization: Bearer $TOKEN" -H "content-type:application/json" \ -d '{ "name": "
ENV_NAME ", "properties": { "apigee-service-extension-enabled":"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" :ENV_TYPE , "properties": { "property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'其中:
ENV_NAME
是要创建的环境的名称。ENV_TYPE
是要创建的环境的类型。例如,INTERMEDIATE
或COMPREHENSIVE
。
- 对于 2021 年订阅组织:
问题排查
如果您在安装 APIM Operator 时遇到问题,请参阅排查 APIM Operator 问题,以了解常见错误的解决方案。