設定 Schematics 代理使用代理伺服器

許多環境不容許直接連線至公用網際網路,但需要由安全 Proxy 閘道遞送連線。Schematics 代理程式配置原則容許使用不容許直接存取網際網路的 Proxy 伺服器。 您可以使用 HTTP 或 HTTPS 代理。

在叢集中的每一部主機上,Proxy 配置必須相同。 因此,在設定或修改代理程式時,必須更新部署、ConfigMap,和NetworkPolicy YAML 規範檔案。 然後重新啟動部署,以套用 Proxy 伺服器配置。

開始之前

在配置 Proxy 伺服器存取權之前,請確認下列需求已備妥。 這裡的範例在埠 3128 上使用 squid Proxy。

  • 可使用 HTTP 或 HTTPS 連接 Google 且可從群集存取的代理伺服器。
  • Proxy 伺服器 IP 位址及埠,例如 http://53.25.191.193:3128
  • 叢集 Pod 上提供 curl 指令行工具。

配置 Proxy 伺服器

  1. 從 Kubernetes 叢集主控台。 按一下 Kubernetes 面板

  2. 在名稱空間選擇下拉方框中切換至 schematics-runtime。

  3. 在 Config and Storage 區段下,按一下 配置對映,以顯示 schematics-runtime 名稱空間的對映。

    • 按一下 schematics-runtime-job-config configmap 資源,然後選取鉛筆圖示來編輯 YAML 檔,以新增 HTTPS/HTTP Proxy 陳述式。

    • 在檔案下半部的 data 內容下新增 HTTPS/HTTP Proxy 項目:

      data:
        HTTPS_PROXY: http://<ipaddress>:<port>
        HTTP_PROXY: http://<ipaddress>:<port>
      
    • 按一下更新以儲存 configmap,並確認新的 Proxy 項目顯示在檔案清單中。

    • 針對 schematics-runtime-ansible-job-config configmap 資源重複執行。

  4. 在 Cluster 區段下,按一下 網路原則 以顯示 Schematics-runtime 名稱空間的原則。

    • 編輯 whitelist-runtime-egress-gen-ports NetworkPolicy 檔案,以新增 HTTPS/HTTP Proxy 所使用的埠。
    • 將 HTTPS/HTTP Proxy 埠新增至埠內容。
      - ports:
        - protocol: TCP
          port: 3128
      
  5. 重新啟動 schematics-runtime 部署,並驗證所有 Pod 都在執行中。

    • 在 Workloads 區段下,按一下 部署,以顯示 Schematics-runtime 名稱空間的現行部署。
    • 選取 runtime-job 資源,然後重新啟動 Pod。
    • 選取 runtime-ansible-job 資源,然後重新啟動 Pod。

驗證 Proxy 伺服器存取權

驗證叢集 Pod 可以透過 Proxy 伺服器存取網際網路。

  • 登入 schematics-runtime Pod,並執行下列 curl 指令,以驗證是否在儲存器中正確地設定 Proxy 環境變數。

  • 在 Workloads > Pods 下,選取第一個 job-runtime,並在其中輸入 Exec。

    curl --head https://www.google.com
    

如果 Proxy 適用於 HTTPS,curl 指令會傳回 200 OK HTTP response。

如果 curl 指令無法連接,請驗證可從叢集存取 Proxy,並可遞送存取目標網站。 搭配使用下列 curl 指令與 Proxy 選項,以驗證 Proxy 是否可存取。

```curl {: codeblock}
curl --proxy http://<ipaddress>:<port> --head https://www.google.com
```

如果無法使用 Proxy 參數來存取網站,請驗證已正確設定叢集的網路輸出規則,且有 Proxy 的網路存取權。

如果可以使用 Proxy 參數來存取網站,請驗證已正確更新 configmap,並透過執行 env 指令來設定 HTTPS/HTTP Proxy 環境變數。

環境變數 HTTP_PROXY 和 HTTPS_PROXY 應該列在輸出中。 如果未列出,請重新檢查 configmap 定義。