本页面适用于 Apigee 和 Apigee Hybrid。
查看 Apigee Edge 文档。
本页面介绍了如何创建 APIMExtensionPolicy
,以便在集群中运行的 Google Kubernetes Engine (GKE) 网关上创建所需的流量扩展。
准备工作
在开始此任务之前,请完成以下步骤:
- 确认您的 GKE 集群已配置 Workload Identity。如需了解所需步骤,请参阅创建工作负载身份。
- 确认您的集群已配置 GKE 网关且网关正常运行。如需了解详情,请参阅部署网关。
- 安装适用于 Kubernetes 的 Apigee Operator。如需了解安装说明,请参阅安装适用于 Kubernetes 的 Apigee Operator。
所需的角色
如果您已按照 安装 Apigee Operator for Kubernetes 中所述的方式向服务账号分配了所需的角色,则无需额外的 IAM 角色或权限即可完成这些任务。
您可以选择使用 Kubernetes 中内置的基于角色的访问控制 (RBAC) 机制来授权对 Google Kubernetes Engine 集群中的资源执行的操作。如需了解详情,请参阅使用基于角色的访问权限控制向集群中的操作授权。
创建 APIMExtensionPolicy
在此步骤中,您将创建 APIMExtensionPolicy
并将其应用于集群中运行的 GKE 网关。此政策会管理通过网关及其关联的 HTTPRoutes
的所有流量,其运作方式与当前 Apigee 中环境级别的 flowhook 类似。
创建 APIM 扩展程序政策:
- 在
apim
命名空间中创建一个名为global-ext-lb1-apim-policy.yaml
的新文件。 - 将以下内容复制到新文件中:
# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default
其中,ENV_NAME 是在安装步骤创建 Apigee 环境中创建的 Apigee 环境的名称。
您可以在 Google Cloud 控制台的 Apigee 环境页面中查看所有可用环境:
- 应用政策:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
应用政策后,Apigee Operator for Kubernetes 会在后台创建网络资源。
- 使用以下命令检查 APIM 扩展程序政策的状态:
kubectl -n apim get APIMExtensionPolicy
输出应类似如下所示,其中
State
为RUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- 使用以下命令向网关发送请求:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
其中:
GATEWAY_IP_ADDRESS
是网关的 IP 地址。 您可以使用以下命令检索网关 IP 地址,其中GATEWAY_NAME
是网关的名称:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
是网关的HTTPRoute
中定义的主机名。
- 该请求应会失败,因为通过在 API 扩展程序政策资源中设置
defaultSecurityEnabled: true
启用了默认安全性。您应该会看到如下所示的响应:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}
这表示 Apigee 扩展程序政策处于有效状态,并且 API 密钥强制执行和访问令牌验证处于有效状态。