在託管控制層上啟用選購功能

本頁說明如何啟用代管型 Cloud Service Mesh 的選用功能。有關叢集內控制層的信息,請參閱啟用叢集內控制層的選用功能

在配置託管 Cloud Service Mesh 時,支援的功能會根據控制層實現的不同而有所差異,某些功能只能透過許可清單獲得。有關詳細信息,請參閱 supported features。 如果您目前使用以 IstioOperator 為基礎的設定,

Distroless 代理圖片

  • 直接加入叢集(直接加入受管TRAFFIC_DIRECTOR 控制層的叢集):僅支援distroless鏡像類型。這項設定無法變更。系統不支援 default 圖片。

  • 遷移的叢集 (從 ISTIOD 遷移至 TRAFFIC_DIRECTOR 控制層的叢集):映像檔類型預設為 default 映像檔 (內含偵錯二進位檔)。您可以自行明確選擇啟用 distroless 圖片,提升安全性。

建議使用 Distroless 映像檔類型,以提升安全性。最佳做法是將容器執行階段的內容限制為僅包含必要套件。這種做法可提升安全性,並改善常見安全漏洞與弱點 (CVE) 掃描器的訊號雜訊比。Istio 提供以 distroless 基本映像檔為基礎的 Proxy 映像檔。

無發行版本代理伺服器映像檔不含代理伺服器以外的任何二進位檔。因此,您無法在容器內 exec shell 或使用 curlping 或其他偵錯公用程式。不過,您可以將暫時性容器附加至執行中的工作負載 Pod,以便檢查並執行自訂指令。例如,請參閱「收集 Cloud Service Mesh 記錄」。

下列設定會為整個 Cloud Service Mesh 啟用無發行版本映像檔。 如要變更映像檔類型,每個 Pod 都必須重新啟動並重新注入,變更才會生效。

     apiVersion: v1
     kind: ConfigMap
     metadata:
       name: istio-release-channel
       namespace: istio-system
     data:
       mesh: |-
         defaultConfig:
           image:
             imageType: distroless

您可以使用下列 Pod 註解覆寫 imageType。請注意,如果是使用受管理 TRAFFIC_DIRECTOR 控制層的叢集,系統只支援 distroless 做為明確的覆寫值 (不允許 debug 或其他非 Distroless 映像檔類型)。

sidecar.istio.io/proxyImageType: distroless

使用註解變更部署的鏡像類型後,應重新啟動部署。如要還原為預設圖片,請從 MeshConfig 中移除 sidecar.istio.io/proxyImageType 註解或 imageType 欄位,然後重新啟動部署作業。

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

由於不需要偵錯基礎映像檔,大多數類型的 Proxy 偵錯都應使用 gcloud beta container fleet mesh debug proxy-status / proxy-config (詳細資料)。

傳出流量政策

根據預設,outboundTrafficPolicy 會設為 ALLOW_ANY。在這個模式下,系統會允許所有前往外部服務的流量。如要控管及限制流量,只允許流向已定義服務項目的外部服務,您可以將 ALLOW_ANY 的預設行為變更為 REGISTRY_ONLY

  1. 下列設定會將 outboundTrafficPolicy 設為 REGISTRY_ONLY

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: istio-release-channel
      namespace: istio-system
    data:
      mesh: |-
        outboundTrafficPolicy:
          mode: REGISTRY_ONLY
    

    其中 release-channel 是您的發布管道 (asm-managedasm-managed-stableasm-managed-rapid)。

  2. 您可以使用下列指令,在 configmap 中進行先前必要的設定變更:

    kubectl edit configmap istio-release-channel -n istio-system -o yaml
    
  3. 執行下列指令來查看 configmap:

    kubectl get configmap istio-release-channel -n istio-system -o yaml
    
  4. 如要確認 outboundTrafficPolicy 已透過 REGISTRY_ONLY 啟用,請確認 mesh: 區段中是否顯示下列幾行。

    ...
    apiVersion: v1
    data:
      mesh: |
        outboundTrafficPolicy:
         mode: REGISTRY_ONLY
    ...
    

使用者驗證

您可以設定代管 Cloud Service Mesh 使用者驗證,以便透過瀏覽器驗證使用者身分,並控管已部署工作負載的存取權。詳情請參閱「設定 Cloud Service Mesh 使用者驗證」。

為工作負載設定最低 TLS 版本

如果您直接採用代管TRAFFIC_DIRECTOR 控制層實作加入 Cloud Service Mesh,則無法變更這項設定。

您可以使用 minProtocolVersion 欄位,為工作負載之間的 TLS 連線指定最低 TLS 版本。如要進一步瞭解如何設定最低 TLS 版本及檢查工作負載的 TLS 設定,請參閱「Istio Workload Minimum TLS Version Configuration」(Istio 工作負載最低 TLS 版本設定)。

以下範例顯示 ConfigMap 將工作負載的最低 TLS 版本設為 1.3:

apiVersion: v1
kind: ConfigMap
metadata:
  name: istio-release-channel
  namespace: istio-system
data:
  mesh: |-
    meshMTLS:
      minProtocolVersion: TLSV1_3