如果您的组织使用 HTTP 代理来处理互联网流量,则您需要相应地配置 GKE 关联集群。本文档介绍如何执行此配置。
准备工作
GKE 关联集群需要连接到各种 Google Cloud 服务。请确保您的代理服务器允许流量到达以下网域:
.gcr.iocloudresourcemanager.googleapis.comcontainer.googleapis.comgkeconnect.googleapis.comgkehub.googleapis.comoauth2.googleapis.comsecuretoken.googleapis.comstorage.googleapis.comsts.googleapis.comwww.googleapis.comservicecontrol.googleapis.comlogging.googleapis.commonitoring.googleapis.comopsconfigmonitoring.googleapis.comGCP_LOCATION-gkemulticloud.googleapis.com
将 GCP_LOCATION 替换为您的集群所在的 Google Cloud 区域。请指定 us-west1 或其他受支持的区域。
为 GKE 关联集群配置代理支持
如需为 GKE 关联集群配置代理支持,请按以下步骤操作:
创建一个代理配置文件,其中包含
httpProxy、noProxy和httpsProxy键的值:{ "httpProxy": HTTP_PROXY_AUTHENTICATION_URL, "httpsProxy": HTTPS_PROXY_AUTH_URL, "noProxy": NO_PROXY_ADDRESSES }替换以下内容:
HTTP_PROXY_AUTHENTICATION_URL:代理服务器网址,由主机名/IP 地址以及端口、用户名和密码(可选)组成。例如:http://user:password@192.0.2.0:80或只是198.51.100.255。HTTPS_PROXY_AUTH_URL:加密 HTTPS 流量的代理网址,由主机名/IP 地址以及(可选)端口、用户名和密码组成。NO_PROXY_ADDRESSES:可以绕过代理的网址、CIDR 块和 DNS 名称的英文逗号分隔列表。这会指示 GKE 关联集群避免将代理用于指定的资源。请注意以下几点:- 值可以是单个 IP 地址、CIDR 范围、域名,甚至是星号 (*)。在
noProxy字段中使用单个星号 (*) 可指示 GKE 关联集群跳过所有流量的代理。 - 以点开头的网域(例如
.google.com)指向其所有子网域。例如,.google.com包含mail.google.com和drive.google.com等地址,但不包括google.com。 - 请务必添加
kubernetes.default.svc.cluster.local和kubernetes.default.svc网域,以便正确进行日志记录。示例如下:198.51.100.0,192.0.2.0/16,examplepetstore.com,.altostrat.com,kubernetes.default.svc.cluster.local, kubernetes.default.svc
- 值可以是单个 IP 地址、CIDR 范围、域名,甚至是星号 (*)。在
创建代理配置文件时,请遵循以下准则:
httpProxy和httpsProxy字段不接受https://前缀。即使实际代理服务器地址以https://开头,也请使用http://。例如,将https://proxy.example.com:3128表示为http://proxy.example.com:3128。- 为所有三个字段提供值:
httpProxy、httpsProxy和noProxy。 - 请考虑将其他网域、IP 地址或 CIDR 附加到
noProxy列表。我们建议您添加 VPC IP 范围。
运行以下命令,创建包含代理配置的 Kubernetes Secret:
kubectl create secret generic SECRET_NAME \ --from-file=PROXY_CONFIGURATION_FILE替换以下内容:
SECRET_NAME:Kubernetes Secret 的名称PROXY_CONFIGURATION_FILE:您在第 1 步中创建的代理配置的路径。
通过将 Kubernetes Secret 的
immutable字段设置为true,将其标记为immutable:kubectl edit secret SECRET_NAME将
SECRET_NAME替换为 Kubernetes Secret 的名称。配置新集群或现有集群以使用代理:
新集群
如需注册新集群并应用代理配置,请使用
gcloud container attached clusters register命令。请务必提供可选参数--proxy-secret-name和--proxy-secret-namespace:gcloud container attached clusters register CLUSTER_NAME \ --proxy-secret-name=SECRET_NAME \ --proxy-secret-namespace=SECRET_NAMESPACE请替换以下内容:
CLUSTER_NAME:集群的名称SECRET_NAME:包含代理配置的 Kubernetes Secret 的名称SECRET_NAMESPACE:存储 Secret 的 Kubernetes 命名空间
如需了解注册集群时可以使用的所有参数,请参阅
gcloud container attached clusters register命令。现有集群
如需使用新的代理配置更新先前注册的集群,请使用
gcloud container attached clusters update命令。请务必提供可选参数--proxy-secret-name和--proxy-secret-namespace:gcloud container attached clusters update CLUSTER_NAME \ --proxy-secret-name=SECRET_NAME \ --proxy-secret-namespace=SECRET_NAMESPACE请替换以下内容:
CLUSTER_NAME:集群的名称SECRET_NAME:包含代理配置的 Kubernetes Secret 的名称SECRET_NAMESPACE:存储 Secret 的 Kubernetes 命名空间
如果代理服务器详细信息已更改,或者初始集群注册忽略了代理要求,则需要执行此步骤。
如需了解更新集群时可以使用的所有参数,请参阅
gcloud container attached clusters update命令。
执行这些步骤后,GKE 关联集群会使用配置文件中指定的代理服务器处理出站互联网流量。