安装 Apigee APIM Operator for Kubernetes

本页面适用于 Apigee,但不适用于 Apigee Hybrid

查看 Apigee Edge 文档。

本页面介绍了安装和配置 Apigee APIM Operator for Kubernetes(预览版)所需的步骤。如需详细了解使用 APIM Operator 的优势,请参阅 Apigee APIM Operator for Kubernetes 概览

准备工作

在开始安装 APIM Operator 之前,请确保您拥有完成相应步骤所需的角色和权限,并且已完成 APIM Operator:准备工作中所述的前提任务。

所需的角色

如需获得安装 APIM Operator 所需的权限,请让您的管理员为您授予组织的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

安装和配置 APIM Operator

以下部分介绍了安装和配置 APIM Operator 所需的步骤:

  1. 设置环境变量
  2. 启用所需的 API
  3. 检索和配置凭据
  4. 安装 APIM Operator
  5. 创建工作负载身份
  6. 可选:创建 Apigee 环境
  7. 验证 GKE 网关设置

设置环境变量

在包含 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 服务:

  1. 使用以下命令获取集群凭据:

    gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION} --project=${PROJECT_ID}

    这些凭据用于与在前提步骤中创建的 GKE 集群进行通信。

  2. 设置服务账号凭据以连接到 Google Cloud 服务:
    gcloud iam service-accounts create apigee-apim-gsa
  3. 使用以下命令向您创建的服务账号授予所需的角色和权限:
    • 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"

安装自定义资源定义 (CRD) 和 APIM Operator

安装 Kubernetes 自定义资源定义 (CRD) 和 APIM Operator:

  1. 为 APIM Operator 创建命名空间:
    kubectl create ns apim
  2. 安装 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
  3. 安装 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 环境:

  1. 设置 curl 命令所需的 TOKEN
    export TOKEN=$(gcloud auth print-access-token)
  2. 使用以下命令之一创建环境:
    • 对于 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 是要创建的环境的类型。例如,INTERMEDIATECOMPREHENSIVE

问题排查

如果您在安装 APIM Operator 时遇到问题,请参阅排查 APIM Operator 问题,以了解常见错误的解决方案。

后续步骤