通过域名提供 API

本页面介绍如何通过您拥有的自定义网域(例如 example.com)提供 API。

您也可以不使用自己的域名,而是使用由 Google 管理的域名。如需了解详情,请参阅使用由 Google 管理的网域

准备工作

将您的 API 项目配置为使用您的域名

请按照相应标签页中的说明操作。

Compute Engine

要通过 Compute Engine 实例提供 API,建议在实例组之间使用负载均衡器。您需要为域名预留一个外部 IP 地址,并将该外部 IP 地址用于负载平衡器。

要通过域名提供 API,请执行以下操作:

  1. 在您的项目中至少预留一个静态外部 IP 地址:

    转到“外部 IP 地址”页面

    1. 为预留的 IP 地址任意指定一个您想使用的名称。
    2. 对于类型,点击全球
    3. 对于附加到,点击。稍后将 IP 地址附加到负载平衡器。
  2. 访问您的域名提供商账号并修改您的域名设置。您必须创建包含您的 API 名称的 A 记录,例如将外部 IP 地址包含在数据字段中的 myapi.example.com
  3. 创建一个实例组,其中包含运行 API 和 Extensible Service Proxy (ESP) 的实例:

    转到“创建新实例组”页面

    1. 为该实例组任意指定一个您想使用的名称并添加说明。
    2. 地区列表中,点击您的 API 实例使用的地区。
    3. 实例定义列表中,点击选择现有实例
    4. 虚拟机实例字段中,添加运行 API 的虚拟机实例。
    5. 点击创建
  4. 创建并配置 HTTP(S) 负载均衡器:

    转到“创建新 HTTP(S) 负载平衡器”页面

    1. 点击定义后端服务 > 创建或选择后端服务
      后端配置
    2. 为此后端服务配置任意指定一个您想使用的名称并添加说明。
    3. 协议字段中,选择要通过负载平衡器支持的协议:HTTPHTTPS
    4. 实例组列表中,点击您的实例组。
    5. 端口号字段中,输入 8080
    6. 点击健康检查以配置健康检查:
      • 输入健康检查配置的名称。
      • 分配端口 8080
      • 要接受其余的默认值,请点击保存
    7. 现在先接受其余配置的默认值。 以后您可以根据需要加以更改,例如使用更多端口。
    8. 您不需要在主机和路径规则中进行任何设置;您可以使用默认的任何不匹配的项过滤条件将所有内容转发到后端 API。 这意味着所有进入负载平衡器的流量都将被定向到上述步骤中定义的端口 8080(默认端口)上的 API。
    9. 点击前端配置
      前端配置
      • 协议字段中,选择要通过负载平衡器支持的协议:HTTPHTTPS
      • IP 列表中,点击您之前创建的外部 IP 地址。
      • 对于 HTTPS 协议,您需要使用 SSL。在证书列表中,点击所需的证书。
      • (可选)如果您要支持其他协议,请点击添加前端 IP 和端口,指定协议、相同的外部 IP 地址和其他端口。
    10. 要创建配置完整的负载平衡器,请点击创建。如果创建按钮未启用,请检查刚刚配置的组件:每个配置组件旁边都应显示一个对勾标记。如果缺少对勾标记,则表示您尚未完成配置。
    11. 您的 DNS 更改生效后,系统会使用负载平衡器将请求发送到您的 API。

GKE

要通过网域为 Google Kubernetes Engine (GKE) 提供 API,您需要将返回的外部 IP 地址用于您的网域的 DNS 设置,从而将 ESP 作为服务公开提供。请注意,GKE 会自动为您平衡负载。

要将 API 作为服务公开提供,请执行以下操作:

  1. 如果您还没有 Kubernetes 服务,请为您的 API 后端配置一个 Kubernetes 服务。 创建服务配置文件 service.yaml,内容如下所示:
                apiVersion: v1
                kind: Service
                metadata:
                  name: echo
                spec:
                  ports:
                  - port: 80
                    targetPort: 8081
                    protocol: TCP
                  selector:
                    app: echo-app
                  type: LoadBalancer
                  
    • 更改 selector 标签以与您的后端标签(在此示例中为 app: echo-app)匹配。
    • 确保 targetPort 与 API 后端中配置的 ESP 使用的端口匹配。ESP 默认使用端口 8081
  2. 部署 Kubernetes 服务:
                kubectl apply -f service.yaml
                
  3. 查看分配给公开服务的外部 IP 地址:
                kubectl get services
                
    输出中会显示一个如下所示的 EXTERNAL-IP 地址:
                NAME         CLUSTER-IP     EXTERNAL-IP      PORT(S)    AGE
                hello-node   10.X.XXX.202   10X.XXX.XX.123   8080/TCP   1m
          
  4. 将生成的外部 IP 从临时改为静态。

    转到“外部 IP 地址”页面

    1. 从列表中选择您的外部 IP 地址。
    2. 类型列表中,点击静态
  5. 访问您的域名提供商账号并修改您的域名设置。您必须创建包含您的 API 名称的 A 记录,例如将外部 IP 地址包含在数据字段中的 myapi.example.com

后续步骤