啟用代管控制層的選用功能
本頁說明如何啟用代管型 Cloud Service Mesh 的選用功能。如要瞭解叢集內控制層,請參閱「在叢集內控制層上啟用選用功能」。
佈建代管 Cloud Service Mesh 時,支援的功能會因控制層實作方式而異,且某些功能僅適用於許可清單。詳情請參閱「支援的功能」。如果您目前使用以 IstioOperator 為基礎的設定,
無 Distro 的 Proxy 映像檔
如果您直接透過代管
TRAFFIC_DIRECTOR控制層實作加入 Cloud Service Mesh,則僅支援 Distroless 映像檔類型。而且無法變更。如果車隊原本使用
ISTIOD控制層實作,並已遷移至TRAFFIC_DIRECTOR實作,則遷移期間映像檔類型不會變更,您可以自行將映像檔類型變更為無發行版本。
最佳做法是將容器執行階段的內容限制為僅包含必要套件。這種做法可提升安全性,並改善常見安全漏洞與弱點 (CVE) 掃描器的訊號雜訊比。Istio 提供以 distroless 基本映像檔為基礎的 Proxy 映像檔。
無發行版本代理伺服器映像檔不含代理伺服器以外的任何二進位檔。
因此無法 exec shell,也無法在容器內使用 curl、ping 或其他偵錯公用程式。不過,您可以使用暫時性容器附加至執行中的工作負載 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。
sidecar.istio.io/proxyImageType: debug
使用註解變更部署作業的映像檔類型後,應重新啟動部署作業。
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。
下列設定會將
outboundTrafficPolicy設為REGISTRY_ONLY:apiVersion: v1 kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system data: mesh: |- outboundTrafficPolicy: mode: REGISTRY_ONLY其中 release-channel 是您的發布版本 (
asm-managed、asm-managed-stable或asm-managed-rapid)。您可以使用下列指令,在 configmap 中進行先前必要的設定變更:
kubectl edit configmap istio-release-channel -n istio-system -o yaml
執行下列指令來查看 configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
如要確認
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