配置 Schematics 代理使用代理服务器
许多环境不允许直接连接到公共因特网,但要求连接由安全代理网关进行路由。Schematics 代理程序配置策略允许使用不允许直接访问因特网的代理服务器。 您可以使用 HTTP 或 HTTPS 代理。
在集群中的每个主机上,代理配置必须相同。 因此,在设置或修改代理时,必须更新部署、ConfigMap, 和 NetworkPolicy YAML 规范文件。 然后重新启动部署以应用代理服务器配置。
准备工作
在配置代理服务器访问权之前,请确认满足以下需求。 此处的示例在端口 3128 上使用 squid 代理。
- 代理服务器,可通过 HTTP 或 HTTPS 访问 Google,可从集群访问。
- 代理服务器 IP 地址和端口,例如
http://53.25.191.193:3128
- 集群 pod 上提供了 curl 命令行工具。
配置代理服务器
-
从 Kubernetes 集群控制台。 单击 Kubernetes 仪表板
-
在名称空间选择下拉框中切换到 schematics-runtime。
-
在
Config and Storage
部分下,单击 配置映射 以显示schematics-runtime
名称空间的映射。-
单击
schematics-runtime-job-config
configmap 资源,然后选择画笔图标以编辑 YAML 文件以添加HTTPS/HTTP
代理语句。 -
在文件的下半部分中的
data
属性下添加HTTPS/HTTP
代理条目:data: HTTPS_PROXY: http://<ipaddress>:<port> HTTP_PROXY: http://<ipaddress>:<port>
-
单击“更新”以保存 configmap 并确认新代理条目显示在文件列表中。
-
对
schematics-runtime-ansible-job-config
configmap 资源重复此操作。
-
-
在
Cluster
部分下,单击 网络策略 以显示 schematics-runtime 名称空间的策略。- 编辑
whitelist-runtime-egress-gen-ports
NetworkPolicy 文件以添加HTTPS/HTTP
代理使用的端口。 - 将
HTTPS/HTTP
代理端口添加到端口属性。- ports: - protocol: TCP port: 3128
- 编辑
-
重新启动
schematics-runtime
部署,并验证所有 pod 是否正在运行。- 在
Workloads
部分下,单击 部署 以显示 schematics-runtime 名称空间的当前部署。 - 选择
runtime-job
资源并重新启动 pod。 - 选择
runtime-ansible-job
资源并重新启动 pod。
- 在
验证代理服务器访问权
验证集群 pod 是否可以通过代理服务器访问因特网。
-
登录到
schematics-runtime
pod 并运行以下curl
命令,以验证是否在容器中正确设置了代理环境变量。 -
在
Workloads > Pods
下,选择第一个job-runtime
,并将Exec
放入其中。curl --head https://www.google.com
如果代理正在为 HTTPS
工作,那么 curl
命令将返回 200 OK HTTP response
。
如果 curl 命令无法连接,请验证该代理是否可从集群访问,并可将访问路由到目标 Web 站点。 使用带有 proxy 选项的以下 curl
命令来验证代理是否可访问。
curl --proxy http://<ipaddress>:<port> --head https://www.google.com
如果无法使用 proxy 参数访问 Web 站点,请验证是否正确设置了集群的网络出口规则,以及是否存在对该代理的网络访问权。
如果可使用代理参数访问 Web 站点,请验证是否正确更新了 configmap,并通过运行 env
命令来设置 HTTPS/HTTP
代理环境变量。
应在输出中列出环境变量 HTTP_PROXY
和 HTTPS_PROXY
。 如果未列出,请重新检查 configmap 定义。