使用 HTTP 代理

本文档介绍如何通过 HTTP/HTTPS 代理路由来自 GKE on Azure 的流量。您可以在创建集群时指定代理配置。

概览

GKE on Azure 可以通过代理路由出站互联网流量,原因如下:

  • 通过 Connect 向 Google Cloud 注册集群
  • 需运行 Connect Agent
  • 需从 Container Registry 下载映像

限制

  • httpProxyhttpsProxy 字段不支持以 https:// 开头的网址。您必须使用 http://。 对端口 443 发出的请求使用 HTTPS。
  • 您必须为 httpProxyhttpsProxynoProxy 设置值。
  • 集群的代理配置(资源组 ID 和密钥 ID)是不可变的。您必须创建新的集群和节点池才能更新这些值。
  • 您可能需要向 noProxy 字段添加其他网域、IP 或 CIDR。我们建议默认添加集群的控制层面子网 CIDR(默认添加 Pod 地址 CIDR 和服务地址 CIDR)。

前提条件

本部分介绍在使用代理之前必须要满足的前提条件。

Azure Key Vault 配置

GKE on Azure 将代理配置信息存储在 Azure 密钥保管箱中。如需使用 GKE on Azure 配置代理,您需要拥有在密钥保管库中创建 Secret 的权限。Key Vault 必须可从集群的 VNet 访问。

代理许可名单

为使 GKE on Azure 连接到 Google Cloud 服务,代理服务器必须允许流向特定 Google 和 Microsoft 网域的流量。

.azure.com
.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

GCP_LOCATION 替换为您的 GKE Enterprise 集群所在的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域

子网网络安全组要求

如果您使用网络安全组 (NSG) 来管理发送到子网的流量,则您的 NSG 规则必须允许传出 TCP 流量发往以下目标:

  • AzureCloud:TCP 端口 80 和 443

如需详细了解如何将服务标记与 NSG 配合使用,请参阅 Azure 服务标记

创建代理配置文件

代理配置以 JSON 字符串形式存储在 Azure Key Vault Secret 中。您可以将此配置以文件形式传递给 az 命令行工具。本部分介绍如何创建该文件。

下表介绍了此文件的内容。

字段 说明 示例 必需
httpProxy 代理服务器网址。该值应包含主机名/IP 地址,并可根据需要选择包含端口、用户名和密码。 "http://user:password@10.184.37.42:80"
"10.184.37.42"
httpsProxy 经过加密的 HTTPS 流量的代理网址。如果 httpsProxy 具有空值,则系统将使用 httpProxy 网址。 "http://10.101.16.31:80"
noProxy 要从代理中排除的网址的逗号分隔列表。每个值可以是 IP 地址、CIDR 范围、域名或星号 (*)。如果指定的网域具有前导句点(如“.google.com”),则表示需要子网域。单个星号 * 会忽略所有代理配置。 "1.2.3.4,10.0.0.0/16,example.com,.site.com"
  1. 如需创建配置文件,请创建一个包含 httpProxynoProxy 和可选 httpsProxy 键的值的 JSON 文件。

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    替换以下内容:

    • AUTHENTICATION_URL:包含代理用户名和密码的编码网址
    • NO_PROXY_ADDRESSES:以英文逗号分隔的 CIDR 地址块和网址列表,例如 10.0.0.0/16,http://example.com

    保存该文件以在下一部分使用。

  2. 通过 az 命令行工具使用此 JSON 数据创建一个 Secret 作为 Azure Key Vault 中的 Secret。

    az keyvault secret set --name SECRET_NAME \
    --vault-name KEY_VAULT_NAME \
    --file PROXY_CONFIGURATION_FILE
    

    替换以下内容:

    • SECRET_NAME:新 Secret 的名称
    • KEY_VAULT_NAME:Key Vault 的名称
    • PROXY_CONFIGURATION_FILE:代理配置文件的路径。

      输出包括 Secret 的名称和内容。现在,您可以在创建集群时引用此 Secret。

创建使用代理的集群

如需将 GKE on Azure 配置为使用 HTTP 代理进行出站连接,请执行以下步骤:

按照创建集群和节点池中的步骤操作,并传递 --proxy-resource-group-id--proxy-secret-id 标志。

gcloud container azure clusters create CLUSTER_NAME \
  --proxy-resource-group-id=PROXY_RESOURCE_GROUP_ID \
  --proxy-secret-id=PROXY_SECRET_ID
    ...

替换以下内容:

  • CLUSTER_NAME:您的集群的名称
  • PROXY_RESOURCE_GROUP_ID:托管集群的资源组
  • PROXY_SECRET_ID:包含代理配置的 Secret 的 ID,例如 https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME/SECRET_VERSION

后续步骤