如果您的组织使用 HTTP 代理来处理互联网流量,则您需要相应地配置 GKE 关联集群。本文档介绍如何执行此配置。
准备工作
GKE 关联集群需要连接到各种 Google Cloud 服务。请确保您的代理服务器允许流量到达以下网域:
.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
替换为您的集群所在的 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
,将其标记为不可变: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 关联集群会使用配置文件中指定的代理服务器处理出站互联网流量。