IBM Cloud Docs
配置 Schematics 代理使用代理服务器

配置 Schematics 代理使用代理服务器

许多环境不允许直接连接到公共因特网,但要求连接由安全代理网关进行路由。Schematics 代理程序配置策略允许使用不允许直接访问因特网的代理服务器。 您可以使用 HTTP 或 HTTPS 代理。

在集群中的每个主机上,代理配置必须相同。 因此,在设置或修改代理时,必须更新部署、ConfigMap, 和 NetworkPolicy YAML 规范文件。 然后重新启动部署以应用代理服务器配置。

准备工作

在配置代理服务器访问权之前,请确认满足以下需求。 此处的示例在端口 3128 上使用 squid 代理。

  • 代理服务器,可通过 HTTP 或 HTTPS 访问 Google,可从集群访问。
  • 代理服务器 IP 地址和端口,例如 http://53.25.191.193:3128
  • 集群 pod 上提供了 curl 命令行工具。

配置代理服务器

  1. Kubernetes 集群控制台。 单击 Kubernetes 仪表板

  2. 在名称空间选择下拉框中切换到 schematics-runtime

  3. 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 资源重复此操作。

  4. Cluster 部分下,单击 网络策略 以显示 schematics-runtime 名称空间的策略。

    • 编辑 whitelist-runtime-egress-gen-ports NetworkPolicy 文件以添加 HTTPS/HTTP 代理使用的端口。
    • HTTPS/HTTP 代理端口添加到端口属性。
      - ports:
        - protocol: TCP
          port: 3128
      
  5. 重新启动 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_PROXYHTTPS_PROXY。 如果未列出,请重新检查 configmap 定义。