创建和部署新的 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 代理

界面显示您的代理已部署时,您可以尝试使用 cURL 或您选择的 REST 客户端调用该代理。例如:

  1. 将环境组的主机别名导出到变量中:
    $HOSTALIAS=your_host_alias
  2. 调用 API 代理:
    curl -k https://$HOSTALIAS/myproxy

    例如:

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

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

    Hello, Guest!

如果您使用了自签名证书,但收到 TLS/SSL 错误,请尝试执行以下步骤:

  1. 将环境组的主机别名导出到变量中:
    $HOSTALIAS=your_host_alias
  2. 导出 Ingress 主机:
    export INGRESS_HOST=$(kubectl -n istio-system get service \
      istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  3. 导出安全 Ingress 端口号:
    export SECURE_INGRESS_PORT=$(kubectl -n istio-system get \
      service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
  4. 调用 API 代理:
    curl  -H Host:$HOSTALIAS --resolve \
      $HOSTALIAS:$SECURE_INGRESS_PORT:$INGRESS_HOST  \
      https://$HOSTALIAS:$SECURE_INGRESS_PORT/myproxy -k