步骤 10:公开 Apigee 入站流量网关

此步骤介绍了如何为 Apigee 入站流量网关设置 Kubernetes 服务。 每个入站流量部署都需要 Kubernetes 服务以获取可公开的 IP 地址。客户端对代理的调用将调用解析为此 IP 地址的主机名。

Apigee 入站流量网关的 Kubernetes 服务选项

您可以通过以下两种方式提供 kubernetes 服务来分配 IP 地址:

创建您自己的 Kubernetes 服务

对于生产环境,Apigee 建议您为每个入站流量网关创建自定义 Kubernetes 服务。

  • Apigee 会删除默认服务,但不会在清理时删除自定义 kubernetes 服务。因此,IP 地址不会在重新安装 Apigee Hybrid 时释放。
  • 对于不在 Google Cloud 上运行的平台(例如 EKS、AKS 和 OpenShift),您需要自定义 Kubernetes 服务以与云服务商搭配使用。因此,建议创建自定义 Kubernetes 服务,而不是使用默认服务,因为 Apigee 并不支持对默认 Kubernetes 服务的所有自定义。

请按照以下步骤设置新的入站流量网关并将流量路由到该网关。

  1. 使用所需的 Pod 选择器标签(app、ingress_name 和 org)创建 Kubernetes 服务。这些标签已存在于 Apigee 入站流量网关 Pod 中。

    使用以下模板创建服务文件:

    apiVersion: v1
    kind: Service
    metadata:
      name: SERVICE_NAME
      namespace: APIGEE_NAMESPACE
    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_NAMESPACE -l app=apigee-ingressgateway

    Apigee 入站流量网关公开以下端口:

    端口 说明
    443 运行时流量。
    15021 健康检查。status-port 公开可与 GKE Ingress 健康检查搭配使用的 /healthz/ready 端点。
  2. 通过应用 SERVICE_FILENAME.yaml 创建此服务:
    kubectl apply -f SERVICE_FILENAME.yaml
  3. 使用以下命令找到 Apigee 入站流量网关的外部 IP:
    kubectl get svc -n APIGEE_NAMESPACE 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
  4. 停用默认 Apigee 入站流量网关服务的负载均衡器:
    1. 在替换文件中将 ingressGateways[].svcType 属性更新为 ClusterIP:
      ingressGateways:
        svcType: ClusterIP
    2. 升级 apigee-org 图表以应用更改:
      helm upgrade ORG_NAME apigee-org/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        -f overrides.yaml
      

    如需了解详情,请参阅为默认 Apigee 入站流量网关服务停用负载均衡器。

  5. 进行健康检查调用以测试入站流量网关。

    curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    位置

    成功后,该命令会返回以下内容:

    Apigee Ingress is healthy
  6. 使用此 IP 地址在您的注册商或 DNS 提供商处更新 DNS 记录(通常是 A 或 CNAME 记录)。

使用默认 Kubernetes 服务

对于非生产环境或如需通过 Apigee 入站流量网关测试初始流量,Apigee Hybrid 为每个入站流量部署提供了默认的 Kubernetes 服务。

您可以在 overrides.yaml 文件中对默认服务进行有限的配置更改。如需了解可用的配置选项,请参阅管理 Apigee 入站流量网关。例如,您可以添加注解。

对于生产环境,建议您为入站流量提供 Kubernetes 服务。请按照创建您自己的 Kubernetes 服务中的步骤操作。

  1. 使用以下命令查找默认 Apigee 入站流量服务的外部 IP:
    kubectl get svc -n APIGEE_NAMESPACE -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
  2. 进行健康检查调用以测试入站流量网关。

    curl -H 'User-Agent: GoogleHC' https://DOMAIN/healthz/ingress -k \
      --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"

    位置

    成功后,该命令会返回以下内容:

    Apigee Ingress is healthy
  3. 使用此 IP 地址在您的注册商或 DNS 提供商处更新 DNS 记录(通常是 A 或 CNAME 记录)。

下一步

1 (下一步)步骤 2:部署代理