托管的目标参考

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

环境变量限制

托管目标会限制您可以在托管目标运行时环境中设置的环境变量的大小和数量。

  • 1000:单个环境变量的最大长度。
  • 100:您可以设置的环境变量数上限。

如需了解如何设置环境变量,请参阅清单文件

应用运行时中设置的环境变量

部署 Hosted Target 应用时,将设置以下环境变量,并在运行时供您的应用使用:

  • APIGEE_ENVIRONMENT - 部署了 Hosted Target 代理的环境。
  • APIGEE_ORGANIZATION - 部署了 Hosted Target 代理的组织。
  • PORT - Hosted Target 应用必须监听的端口。

系统资源分配

每个 Hosted Target 实例都会收到以下资源:

  • 256 MB 内存
  • 1.2 GHz CPU

扩缩

本部分介绍 Hosted Target 应用如何根据您拥有的 Edge 帐号类型进行扩缩。
  • Apigee Edge 的试用版仅限每个代理使用一个 Hosted Target 实例。
  • 付费 Apigee Edge 帐号可接收根据请求速率、响应延迟时间和每个代理的其他应用指标自动扩缩的功能。
  • 部署在付费版和试用版 Apigee Edge 中的 Hosted Target 应用会在不活动期间缩减至零。 在这种情况下,您可能会发现短时间内响应速度变慢。另请参阅已知问题

清单文件

为了收集构建和部署托管应用的运行时信息,Edge 会在 resources/managed 目录中查找名为 app.yaml 的清单文件。此文件包含构建和部署 Hosted Target 应用所需的信息。

Manfiest 文件语法

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

清单文件元素

app.yaml 清单文件包含以下元素:

  • runtime -(必需)指定要部署的应用类型。 您必须指定 node
  • runtimeVersion -(可选)应用使用的运行时版本。默认值:Node.js LTS (v10.x)。如需了解其他选项,请参阅 Node 的 Docker 官方代码库
  • command -(可选)可让您指定要运行的命令,而非用于启动应用的默认命令。默认:Node.js=npm
  • args -(可选)要传递给应用的命令行参数数组(以标准 YAML 数组语法指定)。通常情况下,这些命令会添加到默认命令中。 默认值为 start。例如,默认情况下,系统会向 Node.js 应用传递 npm start 命令。
  • env -(可选)要在 Hosted Target 运行时环境中设置的环境变量(名称/值对)数组。这些变量可用于已部署的 Hosted Target 应用。
    • name:变量名称。
    • value | valueRef - 您有两种选择。您可以设置字面量值或引用键值对映射中存储的值。键值对映射必须已存在于 Edge 环境中。请参阅使用键值对映射
      • 如果使用 value,则必须指定变量 name 和字面量 value。例如:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • 如果使用 valueRef,则必须提供之前在 Edge 中创建的键值对映射 (KVM) 的名称。 例如:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    清单文件示例

    本部分包含 Node.js 应用的示例清单文件。部署 Hosted Target 应用需要一个清单文件,并且清单文件必须位于 apiproxy/resources/hosted 目录中,且文件名必须为 app.yaml

    以下是 Node.js 应用的 app.yaml(清单)文件示例。

    指定字面量环境变量的示例:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    包含启动命令、命令行参数和环境变量的示例。

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    指定键值对映射 (KVM) 引用的示例:

    如需详细了解 KVM 访问权限,请参阅清单文件

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub 上的托管目标应用示例

    Apigee 在 GitHub 上提供了使用 Node.js 编写的 Hosted Target 应用的示例代理。您可以克隆此代码库,并按照 README 说明部署任何代理。

    前提条件

    如需部署示例,您必须在系统上安装两个工具:

    • apigeetool - 用于部署 Edge 代理的命令行工具。
    • get_token - 用于获取 apigeetool 所需的授权令牌的命令行工具。

    如果要在本地测试示例,您还必须安装 Node.js。

    获取示例代码库

    1. 在浏览器中,转到 https://github.com/apigee/api-platform-samples
    2. 点击克隆或下载,然后使用您首选的方法将代码库拉取到本地系统。
    3. cd<your install dir>/api-platform-samples/doc-samples/managed-targets
    4. 下载代码库后,您可以通过 cd 命令到任何示例目录,然后按照 README 说明将示例代理部署到 Edge。deploy 命令如下所示。只需将所示参数替换为您的 Apigee 帐号的参数即可:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    示例:执行示例应用

    克隆示例代码库

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    在本地测试应用

    您必须安装 Node.js 才能执行此本地测试。

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    输出示例:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    部署代理

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    测试部署

    部署可能需要几分钟才能完成。如果您收到部署错误,请再次执行 deploy 命令。

    curl http://myorg-test.apigee.net/node-hosted-hello

    输出示例:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    已知问题

    • 网络延迟 - 由于 Node.js 应用不再在 MP 的 JVM 中运行,MP 和部署之间现在会有网络跃点。当然,这需要付出代价,但初始基准数据表明,这一情况会远在合理的范围内
    • API 响应速度缓慢 - 运行应用的基础架构会根据需要自动扩缩。这意味着您的应用实际上可以缩减至零个实例,如果是这种情况,下一个 API 请求将比典型的 API 请求稍长一点,因为基础架构会启动实例来处理请求。
    • 部署错误 - 如果您在部署 Hosted Target 代理时收到部署错误,请尝试重新部署该代理。在某些情况下,部署可能会超时,如果您重新部署,问题将自行解决。