本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本页面介绍了如何在集群中运行的 Google Kubernetes Engine (GKE) 网关上创建 ApigeeBackendService 和所需的流量扩展。
此方法可替代使用 APIMExtensionPolicy 将 Apigee 数据平面标识为 GKE 网关的政策决策点 (PDP)。创建 ApigeeBackendService 时,适用于 Kubernetes 的 Apigee Operator 会自动创建与 ApigeeBackendService 具有相同名称和命名空间的 APIMExtensionPolicy。这是后备 APIMExtensionPolicy。
如果您创建并管理 Cloud Load Balancing 流量扩展程序,并且想要在 流量扩展程序资源中添加 Apigee 作为扩展程序,建议您采用此方法。如果 Apigee 流量扩展程序与其他流量扩展程序协同工作,您必须使用 ApigeeBackendService。
准备工作
在开始此任务之前,请完成以下步骤:
- 确认您的 GKE 实现使用的是 GKE 1.34.x 版或更高版本。
- 确认您的 GKE 集群已配置 Workload Identity。如需了解所需步骤,请参阅创建工作负载身份。
- 确认您的集群已配置 GKE 网关且网关正常运行。如需了解详情,请参阅部署网关。
- 安装适用于 Kubernetes 的 Apigee Operator。如需了解安装说明,请参阅安装适用于 Kubernetes 的 Apigee Operator。
所需的角色
如果您已按照 安装 Apigee Operator for Kubernetes 中所述的方式向服务账号分配了所需的角色,则无需额外的 IAM 角色或权限即可完成这些任务。
您可以使用 Kubernetes 中内置的基于角色的访问权限控制 (RBAC) 机制来授权对 Google Kubernetes Engine 集群中的资源执行的操作。如需了解详情,请参阅使用基于角色的访问权限控制向集群中的操作授权。
创建 ApigeeBackendService 资源
如需在 GKE Gateway 上配置流量 Service Extensions,请创建以下两个主要资源:
- ApigeeBackendService:此自定义资源将 Apigee 数据平面指定为政策决策点 (PDP),并为 Private Service Connect (PSC) 网络端点组 (NEG) 配置网络详细信息。
- GCPTrafficExtension:此 GKE Gateway API 资源定义了扩展链,包括流量如何定向到 ApigeeBackendService。
创建 ApigeeBackendService
ApigeeBackendService 资源将 Apigee 数据平面指定为 GCPTrafficExtension 的 PDP。
如需创建 ApigeeBackendService,请执行以下操作:
- 创建一个名为
apigee-backend-service.yaml的 YAML 文件,其中包含以下内容: - ENV_NAME 是要使用的 Apigee 环境。这类似于
APIMExtensionPolicy中的apigeeEnv字段。对于 Apigee,此字段是可选字段;对于 Hybrid,此字段是必填字段。 - SECURITY_ENABLED(可选)指定是否自动启用用于 API 密钥验证和配额检查的默认 Apigee 政策。如果未指定,则默认为
true。 - REGION_NAME_1 指定部署 GKE 网关的区域。
- NETWORK_NAME_1 和 SUBNET_NAME_1 用于指定创建 PSC NEG 的网络和子网的完整资源 URI。例如,
projects/my-project/global/networks/my-default和projects/my-project/regions/us-central1/subnetworks/my-default。 通常,这些值与 GKE 集群的网络和子网相同。 - REGION_NAME_2、NETWORK_NAME_2 和 SUBNET_NAME_2 是可选的。 如果您在多个区域部署 Apigee 流量扩展服务,则需要这些变量。
- 将 YAML 文件应用到
default命名空间中的集群:kubectl apply -f apigee-backend-service.yaml
- 确认
ApigeeBackendService已成功创建:kubectl get apigeebackendservice
输出应类似如下所示:
NAMESPACE NAME STATE ERRORMESSAGE default default-ext-lb1-apim-policy CREATED
# apigee-backend-service.yaml kind: ApigeeBackendService apiVersion: apim.googleapis.com/v1 metadata: name: my-apigee-extension-backend-service spec: apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid defaultSecurityEnabled: SECURITY_ENABLED locations: # required field - name: REGION_NAME_1 network: NETWORK_NAME_1 subnet: SUBNET_NAME_1 - name: REGION_NAME_2 network: NETWORK_NAME_2 subnet: SUBNET_NAME_2
其中:
创建 ApigeeBackendService 时,适用于 Kubernetes 的 Apigee Operator 会自动创建与 ApigeeBackendService 具有相同名称和命名空间的 APIMExtensionPolicy。
这是后备 APIMExtensionPolicy。
如果 defaultSecurityEnabled 设置为 true,则 Apigee Operator for Kubernetes 会自动将默认 API 密钥和配额政策添加到 APIMExtensionPolicy。如需添加其他政策,请参阅向 GKE 网关添加政策。
创建 GCPTrafficExtension 资源
GCPTrafficExtension 资源定义了 Apigee 的扩展程序,并引用在上一步中创建的 ApigeeBackendService 作为其 backendRef。
如需详细了解如何配置 GCPTrafficExtension,请参阅配置服务扩展程序。
supportedEvents 字段用于指定请求和响应生命周期的哪些部分会向扩展程序公开。适用于 Kubernetes 的 Apigee 操作员支持以下事件:
RequestHeadersRequestBodyRequestTrailersResponseHeadersResponseBodyResponseTrailers
supportedEvents 列表中添加 RequestBody 和 ResponseBody。
如需详细了解受支持的事件,请参阅 Cloud Load Balancing 流量扩展程序文档。
如需创建 GCPTrafficExtension,请执行以下操作:
- 创建一个名为
gcp-traffic-extension.yaml的 YAML 文件,其中包含以下内容:# gcp-traffic-extension.yaml kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-apigee-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME # Replace with your GKE Gateway name extensionChains: - name: EXTENSION_CHAIN_NAME matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: EXTENSION_NAME metadata: # This metadata label must match the name of the ApigeeBackendService apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME failOpen: false supportedEvents: - SUPPORTED_EVENT1 - SUPPORTED_EVENT2 timeout: 1s requestBodySendMode: FullDuplexStreamed backendRef: # References the ApigeeBackendService by
kindandnamekind: ApigeeBackendService name: APIGEE_BACKEND_SERVICE_NAME Port: 443其中:
- GATEWAY_NAME 是扩展程序所应用的 GKE 网关的名称。
- EXTENSION_CHAIN_NAME 是扩展程序链的名称。
- EXTENSION_NAME 是流量服务扩展程序的名称。
- APIGEE_BACKEND_SERVICE_NAME 是之前创建的
ApigeeBackendService的名称。extensions代码块中的此标签必须与之前创建的ApigeeBackendService的metadata.name相匹配。 supportedEvents字段用于指定请求和响应生命周期的哪些部分会向扩展程序公开。Apigee Operator for Kubernetes 支持以下事件:RequestHeadersRequestBodyRequestTrailersResponseHeadersResponseBodyResponseTrailers
supportedEvents列表中添加RequestBody和ResponseBody。 如需详细了解受支持的事件,请参阅 Cloud Load Balancing 流量扩展程序文档。
- 将 YAML 文件应用到您的集群:
kubectl apply -f gcp-traffic-extension.yaml