啟用叢集內控制層的選用功能
本頁說明如何使用叢內控制層,在 Cloud Service Mesh 中啟用選用功能。
安裝叢集內 Cloud Service Mesh 時,預設啟用的功能會因平台而異。安裝 (或升級) Cloud Service Mesh 時,您可以加入疊加檔案,覆寫預設設定並啟用選用功能。疊加檔案是包含 IstioOperator 自訂資源 (CR) 的 YAML 檔案,您可使用該檔案設定控制平面。每個疊加層檔案只能指定一項功能。您可以疊加更多覆疊,每個覆疊檔案都會覆寫前幾層的設定。
關於重疊檔案
這個頁面上的疊加層檔案位於 GitHub 的 anthos-service-mesh 套件中。這些檔案包含預設設定的常見自訂項目。您可以直接使用這些檔案,或視需要進行其他變更。
使用 asmcli 指令碼安裝 Cloud Service Mesh 時,可以透過 --option 或 --custom_overlay 選項指定一或多個疊加檔案。如果不需要變更 anthos-service-mesh 存放區中的任何檔案,可以使用 --option,腳本會為您從 GitHub 擷取檔案。否則,您可以變更疊加層檔案,然後使用 --custom_overlay 選項將其傳遞至 asmcli。
| 請勿在一個重疊檔案中加入多個 CR | 為每個 CR 分別建立疊加層檔案 |
|---|---|
![]() |
![]() |
如何啟用選用功能
下列範例經過簡化,僅顯示如何使用自訂疊加層啟用選用功能。將 OTHER_FLAGS 替換為必要安裝旗標。
asmcli install 指令提供兩種啟用選用功能的方式。使用的方法取決於是否需要變更疊加檔案。
如果不需要對疊加檔案進行任何變更,請使用
--option。使用--option時,asmcli會從 GitHub 存放區擷取檔案,因此您必須連上網際網路。./asmcli install \ OTHER_FLAGS \ --option OPTION_NAME將
OPTION_NAME替換為要啟用的選項。請務必省略 .yaml 副檔名,只加入疊加檔案的名稱,例如iap-operator和attached-cluster。如需選項清單,請參閱anthos-service-mesh套件。如要自訂疊加層檔案,請使用
--custom_overlay。./asmcli install \ OTHER_FLAGS \ --custom_overlay PATH_TO_FILE將
PATH_TO_FILE替換為要使用的疊加層檔案路徑。
選用功能的 YAML
以下各節提供 YAML,可啟用選用和支援的功能。
mTLS STRICT 模式
為避免升級問題,並提供更彈性的安裝方式,我們已從 IstioOperator
CR 中移除 global.mtls.enabled 設定。如要啟用 STRICT mTLS,請改為設定對等互連驗證政策。
無 Distro 的 Proxy 映像檔
最佳做法是將容器執行階段的內容限制為僅包含必要套件。這種做法可提升安全性,並改善常見安全漏洞與揭露 (CVE) 掃描器的訊號雜訊比。 Istio 提供以 distroless 基本映像檔為基礎的 Proxy 映像檔。
下列設定會為整個 Cloud Service Mesh 啟用無發行版本映像檔。如要變更映像檔類型,每個 Pod 都必須重新啟動並重新注入,變更才會生效。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
image:
imageType: distroless
無發行項映像檔不含任何二進位檔 (Proxy 除外)。因此,您無法 exec shell,也無法在容器內使用 curl、ping 或其他偵錯公用程式。
如果您執行 curl 指令,會看到下列錯誤訊息:
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: unable to start container process: exec: "curl": executable file not found in $PATH: unknown
如果您執行 Shell 指令,會看到下列錯誤訊息:
error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "sh": executable file not found in $PATH: unknown
如要存取特定 Pod 的這些工具,可以透過下列 Pod 註解覆寫 imageType。
sidecar.istio.io/proxyImageType: debug
透過註解變更部署作業的圖片類型後,請重新啟動部署作業。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
對於大多數類型的 Proxy 偵錯,應使用 istioctl proxy-cmd,這不需要偵錯基本映像檔。
使用自訂疊加層進行自訂登錄
您可以為自訂登錄檔使用自訂疊加層,例如需要從自訂容器登錄檔安裝 Cloud Service Mesh 時。例如:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
hub: {private_registry_url}
以下是 Cloud Service Mesh 的映像檔清單,您需要將這些映像檔鏡像到自訂容器登錄:
- Install-cni -
gke.gcr.io/asm/install-cni:1.21.5-asm.34 - 代管資料層 -
gke.gcr.io/asm/mdp:1.21.5-asm.34 - Pilot -
gke.gcr.io/asm/pilot:1.21.5-asm.34 - Proxyv2 -
gke.gcr.io/asm/proxyv2:1.21.5-asm.34
將映像檔新增至私人登錄檔
如要將 Cloud Service Mesh 映像檔推送至私人登錄檔,請完成下列步驟。
-
提取 Cloud Service Mesh 映像檔:
docker pull gke.gcr.io/asm/install-cni:1.21.5-asm.34 docker pull gke.gcr.io/asm/mdp:1.21.5-asm.34 docker pull gke.gcr.io/asm/pilot:1.21.5-asm.34 docker pull gke.gcr.io/asm/proxyv2:1.21.5-asm.34
-
為私人登錄檔網址建立變數:
將export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
PRIVATE_REGISTRY_URL替換成您的私人登錄檔網址。 -
使用私人登錄檔網址標記映像檔:
docker tag gke.gcr.io/asm/install-cni:1.21.5-asm.34 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.21.5-asm.34 docker tag gke.gcr.io/asm/mdp:1.21.5-asm.34 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.21.5-asm.34 docker tag gke.gcr.io/asm/pilot:1.21.5-asm.34 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.21.5-asm.34 docker tag gke.gcr.io/asm/proxyv2:1.21.5-asm.34 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.21.5-asm.34 - 將加上標記的映像檔推送至私人登錄檔:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.21.5-asm.34 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.21.5-asm.34 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.21.5-asm.34 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.21.5-asm.34 - (選用) 如果您使用標準服務,請將標準服務映像檔新增至私人登錄檔。
- 提取 Cloud Service Mesh 標準服務映像檔:
docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 docker pull gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 - 使用私人登錄檔網址標記映像檔:
docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 \ ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 docker tag gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 - 將加上標記的映像檔推送至私人登錄檔:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/kube-rbac-proxy:v0.13.1 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
- 提取 Cloud Service Mesh 標準服務映像檔:
如果可以從私人登錄檔提取已標記的映像檔,表示程序成功。
延長終止排空時間
根據預設,當 Pod 終止時,Envoy 會等待現有連線完成作業五秒 (5s)。
Pod terminationGracePeriodSeconds 必須大於 terminationDrainDuration 值。
詳情請參閱「全域網格選項」。
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
terminationDrainDuration: 30s
啟用存取記錄
詳情請參閱「啟用 Envoy 的存取記錄」。
Cloud Trace
在下列平台上安裝 Cloud Service Mesh 時,即可使用 Cloud Trace:
- GKE on Google Cloud
- 如果您使用 Cloud Service Mesh 憑證授權單位安裝,則為地端的 GKE Enterprise 叢集
詳情請參閱「存取追蹤記錄」。
透過輸出閘道輸出
Istio 容器網路介面
啟用 Istio 容器網路介面 (CNI) 的方式,取決於 Cloud Service Mesh 的安裝環境。
選擇與平台相符的覆疊檔案。
在 GKE 上啟用 CNI
在內部部署環境中啟用 CNI
為離線Google Cloud啟用流量記錄
在 Google Cloud 外部安裝 Cloud Service Mesh 時,預設會向 Prometheus 報告指標。使用這個選項可啟用流量記錄回報功能,或同時啟用 Prometheus 和 Stackdriver,以便使用 Cloud Service Mesh 資訊主頁。
僅限 Stackdriver
Stackdriver 和 Prometheus
啟用內部負載平衡器
建議您按照「安裝及升級閘道」一文所述,安裝注入式閘道,在 GKE 上設定內部負載平衡器。設定閘道服務時,請加入註解:networking.gke.io/load-balancer-type: "Internal"
在 Ingress 閘道上管理外部憑證
如要瞭解如何使用 Envoy SDS 在 Ingress 閘道上啟用外部憑證管理,請參閱「安全閘道」。

