步骤 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 选择器标签(appingress_nameorg)创建 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 端点。
  2. 通过应用 SERVICE_FILENAME.yaml 创建此服务:
    kubectl apply -f SERVICE_FILENAME.yaml
  3. 使用以下命令找到 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
  4. 停用默认 Apigee 入站流量网关服务的负载均衡器:
    1. 在替换文件中将 ingressGateways[].svcType 属性更新为 ClusterIP
      ingressGateways:
        svcType: ClusterIP
    2. 应用更改:

      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 入站流量网关服务停用负载均衡器

  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 记录(通常是 ACNAME 记录)。

使用默认 Kubernetes 服务

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

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

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

  1. 使用以下命令查找默认 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
  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 记录(通常是 ACNAME 记录)。
1 (下一步)步骤 2:部署代理