关于环境

环境为运行 API 代理提供隔离上下文或“沙盒”。在单个组织中,您可以创建多个环境。 如需了解详情,请参阅环境和环境组简介

以下代码展示了定义多个环境的示例替换配置。请注意,prodtest 环境具有不同的主机别名:

namespace: my-namespace
org: my-organization
...
envs:
  - name: test
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json

  - name: prod
    serviceAccountPaths:
      synchronizer: "your_keypath/synchronizer-manager-service-account.json
      udca: "your_keypath/analytic-agent-service-account.json
...
  • 添加 virtualhosts 属性,并将其 routingRules 映射到环境。
    virtualhosts:
      - name: default
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        routingRules:
          - env: test
    virtualhosts:
      - name: external
        hostAliases: ["apiprod.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        routingRules:
          - env: prod

    假设已将基本路径为 /foo1 的代理部署到环境 test。您可以按如下方式调用代理:

    curl -k https://api.example.com/foo1

    当此调用命中入站流量时,入站流量知道将其发送到与处理请求的 test 环境相关联的消息处理器。

    同样,如果也将 foo1 部署到 prod 环境,您可以向主机别名 apiprod.mydomain.net 发出代理请求,如下所示:

    curl -k https://apiprod.example.com/foo1

    入站流量会将调用路由到与该主机关联的 MP。

    反模式:将所有代理部署到一个混合环境中。

    最佳做法:创建多个环境并为每个环境部署有限数量的代理。您可以创建路由规则,以指定将特定 API 代理基本路径路由到的环境。如需了解详情,请参阅虚拟主机配置

    限制代理部署数

    对于 Hybrid,许多环境可以共享同一虚拟主机,因此您必须仔细考虑如何管理任何给定环境的代理部署。在 Hybrid 中,最佳做法是创建多个环境并为每个环境部署有限数量的代理。

    您应该将多少代理部署到环境?这个问题没有固定的答案;但是,下表提供了关于为何最好限制部署到每个环境的代理数量以及在管理代理部署时需要考虑的事项的常规指导:

    要考虑的问题 说明
    消息处理器启动时间 消息处理器 (MP) 启动所需的时间量与部署到该 MP 的代理数有直接关系。在自动扩缩的 Kubernetes 环境中,启动时间增加可能是一个问题。如果需要进行扩缩或重新创建,部署到 MP 的代理越多,该 MP 启动所需的时间就越长。
    扩缩性能 如果您已将多个代理部署到一个环境,并且其中一个代理收到大量流量,因此经常自动扩缩,则该环境中的所有代理都会随之扩缩。随着单个高流量代理而扩缩多个代理造成的性能影响可能是一个问题。
    吵杂邻居 如果将多个代理部署到同一环境,且一个代理崩溃,则 MP 重启时环境中的所有代理都将关闭。通过限制部署到环境的代理数量,可以最大限度地减少单个代理崩溃的影响。

    环境配置参考

    如需了解环境配置元素的完整列表,请参阅配置属性参考中的 envs

    使用环境

    如需详细了解配置,请参阅以下主题: