创建和部署新的 API 代理

现在,您已经配置了 Google Cloud 和 Hybrid 界面,并且安装和配置了运行时,接下来您将了解它们如何协同工作。

本部分将向您介绍下列内容:

  1. 使用 API 代理向导在 Apigee 界面中创建新的 API 代理
  2. 使用界面将新代理部署到集群

1.使用 Hybrid 界面创建新的 API 代理

本部分介绍了如何使用 API 代理向导在该界面中创建新的 API 代理。

如需使用 API 代理向导创建简单的 API 代理,请执行以下操作

  1. 在浏览器中打开 Apigee 界面
  2. 在主视图中依次选择开发 > API 代理
  3. 环境下拉列表中选择要在其中创建新的 API 代理的环境。本部分假设环境的名称是“test”。 您在第 5 步:添加环境中已创建了至少一个环境。

    Hybrid 界面会显示该环境的 API 代理列表。如果您尚未创建任何代理,则列表为空。

  4. 点击右上角的 +代理。 API 代理向导启动。
  5. 选择反向代理(最常见的方式),然后点击下一步

    系统将显示代理详细信息视图。

  6. 使用以下设置配置代理:
    • 代理名称:输入“myproxy”。本部分的其余步骤假定这是代理的 ID。
    • 代理基本路径:自动设置为“/myproxy”。代理基本路径是用于向 API 发出请求的网址的一部分。Edge 使用网址来匹配传入的请求并将其路由到相应的 API 代理。
    • (可选)说明:为您的新 API 代理输入说明,例如“使用简单代理测试 Apigee Hybrid”。
    • 目标(现有 API):输入“https://mocktarget.apigee.net”。此操作会定义 Apigee 在向 API 代理发送的请求上调用的目标网址。mocktarget 服务托管在 Apigee 上,并返回简单的数据。它不需要 API 密钥或访问令牌。

    您的 API 代理的详细信息应如下所示:

  7. 点击下一步
  8. 政策屏幕上,选择直通(无授权) (Pass through (no authorization)) 作为安全选项。
  9. 点击下一步
  10. 摘要屏幕上,点击创建

    Hybrid 会生成代理(有时称为代理软件包):

  11. 点击 Go to proxy list

    Hybrid 会显示代理视图,其中显示 API 代理列表。新代理应位于列表顶部,并带有灰色状态指示器,表示该代理尚未部署。

2. 使用 Hybrid 界面将代理部署到集群

创建新代理后,您必须对其进行部署以便试用。本部分介绍如何使用 Hybrid 界面部署新的代理。

要在 Hybrid 界面中部署 API 代理,请执行以下操作

  1. 在 Hybrid 界面中,依次选择开发 > API 代理

    确保选择“test”环境。

    界面会在代理列表中显示您的新代理:

  2. 点击“myproxy”代理。

    界面显示该代理的 API 代理概览标签页。

    请注意,在部署下,修订版本列将显示“未部署”。

  3. 修订版本列中,展开下拉选择器以选择要部署的修订版本。

    此下拉列表仅显示“1”和“取消部署”。

  4. 从下拉列表中选择“1”(您要部署的修订版本)。

    界面会提示您确认部署:

  5. 点击部署

    界面会开始将新代理的修订版本 1 部署到集群的过程。

    请注意,部署不是即时过程。Hybrid 的“最终一致性”部署模型意味着在短时间内将新部署发布到集群,而不是立即生效。

您可以通过多种方法在界面中检查代理的部署状态,接下来的两个步骤介绍如何调用您刚刚部署的 API 代理以及如何调用 Apigee API 来检查部署状态。

3.调用 API 代理

按照以下步骤操作,具体取决于您是否可以更新用于创建环境组的主机名的 DNS 记录。

如果您无法更新主机名的 DNS

如果您的环境组主机名未注册或者您无法更新其 DNS 记录,请按照以下步骤操作。在这些步骤中,您将获取入站流量 IP,并在带有 --resolve 标志的 cURL 调用中直接使用该 IP:

  1. 导出入站流量 IP:
    export INGRESS_IP=$(kubectl -n istio-system get service \
      istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  2. 导出安全入站流量端口号:
    export SECURE_INGRESS_PORT=$(kubectl -n istio-system get \
      service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
  3. 环境组的主机别名导出到变量中:
    export HOSTALIAS=your_host_alias
  4. 调用 API 代理。利用 cURL 上的 --resolve 标志,您可以直接指定入站流量 IP:
    curl  -H Host:$HOSTALIAS --resolve \
      $HOSTALIAS:$SECURE_INGRESS_PORT:$INGRESS_IP  \
      https://$HOSTALIAS:$SECURE_INGRESS_PORT/myproxy -k

如果您可以更新主机名的 DNS

如果您在创建环境组时使用的主机名已注册,则可以按照以下步骤进行操作,更新其 DNS 记录使其指向外部入站流量 IP:

  1. 将入站流量的外部 IP 导出到变量:
    export INGRESS_IP=$(kubectl -n istio-system get service \
      istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  2. 检查变量中是否包含 IP 地址。例如:
    echo $INGRESS_IP
    34.118.196.202
  3. 使用此 IP 地址在您的注册商或 DNS 提供商处更新 DNS 记录(通常是 A 或 CNAME 记录)。DNS 记录更改最长可能需要一个小时才能传播。
  4. 环境组的主机别名导出到变量中:
    export HOSTALIAS=your_host_alias
  5. 调用 API 代理:
    curl -k https://$HOSTALIAS/myproxy

    例如:

    curl -v -k https://apitest.acme.com/myproxy

    如果调用成功,您将看到以下输出:

    Hello, Guest!