此步骤介绍了如何为 Apigee 入站流量网关设置 Kubernetes 服务。 每个入站流量部署都需要 Kubernetes 服务以获取可公开的 IP 地址。客户端对代理的调用将调用解析为此 IP 地址的主机名。
Apigee 入站流量网关的 Kubernetes 服务选项
您可以通过以下两种方式提供 kubernetes 服务来分配 IP 地址:
- 为每个 Apigee 入站流量网关创建自定义 Kubernetes 服务(推荐)。
- 使用默认 Kubernetes 服务。
创建您自己的 Kubernetes 服务
对于生产环境,Apigee 建议您为每个入站流量网关创建自定义 Kubernetes 服务。
- Apigee 会删除默认服务,但不会在清理时删除自定义 kubernetes 服务。因此,IP 地址不会在重新安装 Apigee Hybrid 时释放。
- 对于不在 Google Cloud 上运行的平台(例如 EKS、AKS 和 OpenShift),您需要自定义 Kubernetes 服务以与云服务商搭配使用。因此,建议创建自定义 Kubernetes 服务,而不是使用默认服务,因为 Apigee 并不支持对默认 Kubernetes 服务的所有自定义。
请按照以下步骤设置新的入站流量网关并将流量路由到该网关。
- 使用所需的 Pod 选择器标签(
app
、ingress_name
和org
)创建 Kubernetes 服务。这些标签已存在于 Apigee 入站流量网关 Pod 中。使用以下模板创建服务文件:
apiVersion: v1 kind: Service metadata: name: SERVICE_NAME namespace: apigee spec: ports: - name: status-port port: 15021 protocol: TCP targetPort: 15021 - name: https port: 443 protocol: TCP targetPort: 8443 selector: app: apigee-ingressgateway #required ingress_name: INGRESS_NAME org: ORG_NAME type: LoadBalancer loadBalancerIP: LOAD_BALANCER_IP
- SERVICE_NAME 是用于识别此服务的名称。例如
apigee-prod-1
。 - INGRESS_NAME 是此 Apigee 入站流量网关的名称。它必须与您在
overrides.yaml
文件中为ingressGateways.name
提供的名称匹配。如需了解详情,请参阅配置属性参考文档中的ingressGateways
。 - ORG_NAME 是 Apigee 组织的名称。它必须与您在
overrides.yaml
文件中为org
提供的名称匹配。如需了解详情,请参阅配置属性参考文档中的org
。 - LOAD_BALANCER_IP 是负载均衡器的 IP 地址。
如果您为负载均衡器预留了 IP 地址,请输入该 IP 地址。
如果您没有预留 IP 地址,则可以使用默认 Apigee 入站流量服务返回的 IP 地址。使用以下命令返回的
EXTERNAL-IP
:kubectl get svc -n apigee -l app=apigee-ingressgateway
Apigee 入站流量网关公开以下端口:
端口 说明 443 运行时流量。 15021 健康检查。 status-port
公开可与 GKE Ingress 健康检查搭配使用的/healthz/ready
端点。 - SERVICE_NAME 是用于识别此服务的名称。例如
- 通过应用
SERVICE_FILENAME.yaml
创建此服务:kubectl apply -f SERVICE_FILENAME.yaml
- 使用以下命令查找 Apigee 入站流量网关的外部 IP:
kubectl get svc -n apigee SERVICE_NAME
输出应如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
-
停用默认 Apigee 入站流量网关服务的负载均衡器:
- 在替换文件中将
ingressGateways[].svcType
属性更新为ClusterIP
:ingressGateways: svcType: ClusterIP
-
应用更改:
Helm
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --org
如需了解详情,请参阅为默认 Apigee 入站流量网关服务停用负载均衡器。
- 在替换文件中将
进行健康检查调用以测试入站流量网关。
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
地点
- DOMAIN 是您作为项目和组织设置 - 第 3 步:创建环境组中创建的环境组的主机名提供的网域。
- INGRESS_IP_ADDRESS 是入站流量 IP 地址,例如
233.252.0.123
。
成功后,该命令会返回以下内容:
Apigee Ingress is healthy
- 使用此 IP 地址在您的注册商或 DNS 提供商处更新 DNS 记录(通常是
A
或CNAME
记录)。
使用默认 Kubernetes 服务
对于非生产环境或如需通过 Apigee 入站流量网关测试初始流量,Apigee Hybrid 为每个入站流量部署提供了默认的 Kubernetes 服务。
您可以在 overrides.yaml
文件中对默认服务进行有限的配置更改。如需了解可用的配置选项,请参阅管理 Apigee 入站流量网关。例如,您可以添加注解。
对于生产环境,建议您为入站流量提供 Kubernetes 服务。请按照创建您自己的 Kubernetes 服务中的步骤操作。
- 使用以下命令查找默认 Apigee 入站流量服务的外部 IP:
kubectl get svc -n apigee -l app=apigee-ingressgateway
输出应如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
进行健康检查调用以测试入站流量网关。
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
地点
- DOMAIN 是您作为项目和组织设置 - 第 3 步:创建环境组中创建的环境组的主机名提供的网域。
- INGRESS_IP_ADDRESS 是入站流量 IP 地址,例如
233.252.0.123
。
成功后,该命令会返回以下内容:
Apigee Ingress is healthy
- 使用此 IP 地址在您的注册商或 DNS 提供商处更新 DNS 记录(通常是
A
或CNAME
记录)。