配置虚拟主机

本主题讨论 virtualhosts 配置属性。虚拟主机允许 Apigee Hybrid 处理向与环境组关联的主机别名发出的 API 请求。如需了解详情,请参阅环境和环境组简介主题中的路由和基本路径

...
virtualhosts:
  - name: my-env-group
    sslCertPath: ./certs/fullchain.pem
    sslKeyPath: ./certs/privkey.key
...

进行 API 代理调用时,系统会路由到部署 API 代理的环境组的主机别名。

如需了解如何将 virtualhosts 应用于集群,请参阅应用虚拟主机更改。如需了解如何配置 TLS,请参阅在 Istio Ingress 上配置 TLS 和 mTLS

添加多个虚拟主机

virtualhosts[] 属性是一个数组,因此您可以创建多个。

...
virtualhosts:
  - name: my-env-group-1
    sslCertPath: ./certs/fullchain1.pem
    sslKeyPath: ./certs/privkey1.key

  - name: my-env-group-2
    sslCertPath: ./certs/fullchain2.pem
    sslKeyPath: ./certs/privkey2.key
...

如需了解如何配置 TLS,请参阅在 Istio Ingress 上配置 TLS 和 mTLS

正在应用 virtualhosts 更改

如果您只添加或更改 virtualhosts 属性,而未执行其他操作,则可以使用 ‑‑settings 标志来应用这些更改。这仅适用于 apigeectl;对于 Helm,我们会使用相应的变量应用 apigee-virtualhost

Helm

helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
  --namespace apigee \
  --atomic \
  --set envgroup=ENV_GROUP_NAME \
  -f OVERRIDES_FILE.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml ‑‑settings virtualhosts

如果您修改了 virtualhostsenv 设置,则需要在不将 ENV_GROUP_NAME apigee-virtualhost/ 用于 Helm 且不将 ‑‑settings virtualhosts 用于 apigeectl 的情况下应用更改。以下是更新集群的方法:

Helm

为要更新的每个环境运行 helm 升级

helm upgrade ENV_NAME apigee-env/ \
    --namespace apigee \
     --atomic \
     --set env=ENV_NAME \
     -f OVERRIDES_FILE.yaml

然后升级 apigee-virtualhost 图表:

helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
    --namespace apigee \
    --atomic \
    --set envgroup=ENV_GROUP_NAME \
    -f OVERRIDES_FILE.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --env ENV_NAME

或者,如需更新所有环境的组件,请执行以下操作:

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --all-envs

然后,将更改应用于虚拟主机:

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml settings virtualhosts

TLS 密钥和证书

virtualhost 属性需要使用 TLS 密钥和证书。密钥/证书用于提供与 Ingress 网关的安全通信,并且必须与指定环境组中使用的主机别名兼容。

您决定如何为混合配置生成正确的 TLS 证书/密钥对。以下主题仅作为示例提供,主要用于在无法以其他方式获取 TLS 凭据时尝试或测试新的混合安装: