使用 HTTP 代理
本文档介绍如何通过 HTTP/HTTPS 代理路由来自 GKE on Azure 的流量。您可以在创建集群时指定代理配置。
概览
GKE on Azure 可出于以下原因通过代理路由出站互联网流量:
- 通过 Connect 向 Google Cloud 注册集群
- 需运行 Connect Agent
- 需从 Container Registry 下载映像
限制
httpProxy
和httpsProxy
字段不支持以https://
开头的网址。您必须使用http://
。 对端口 443 发出的请求使用 HTTPS。- 您必须为
httpProxy
、httpsProxy
和noProxy
设置值。 - 集群的代理配置(资源组 ID 和密钥 ID)是不可变的。您必须创建新的集群和节点池才能更新这些值。
- 您可能需要向
noProxy
字段添加其他网域、IP 或 CIDR。我们建议默认添加集群的控制层面子网 CIDR(默认添加 Pod 地址 CIDR 和服务地址 CIDR)。
前提条件
本部分介绍在使用代理之前必须要满足的前提条件。
Azure Key Vault 配置
GKE on Azure 将代理配置信息存储在 Azure Key Vault 中。如需为 GKE on Azure 配置代理,您需要拥有在 Key Vault 中创建 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" |
有 |
如需创建配置文件,请创建一个包含
httpProxy
、noProxy
和可选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
保存该文件以在下一部分使用。
通过
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
后续步骤
- 阅读有关如何创建集群的其他信息。