啟用叢集內控制層的選用功能
本頁說明如何透過叢內控制層,在 Cloud Service Mesh 中啟用選用功能。
安裝叢集內 Cloud Service Mesh 時,預設啟用的功能會因平台而異。安裝 (或升級) Cloud Service Mesh 時,您可以加入疊加檔案,覆寫預設設定並啟用選用功能。疊加層檔案是 YAML 檔案,內含用於設定控制平面的IstioOperator
自訂資源 (CR)。每個疊加層檔案只能指定一項功能。您可以疊加更多覆疊層,每個覆疊層檔案都會覆寫前幾層的設定。
關於重疊檔案
這個頁面的疊加層檔案位於 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,請改為設定對等互連驗證政策。
Distroless 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.26.0-asm.11
- 代管資料平面 -
gke.gcr.io/asm/mdp:1.26.0-asm.11
- Pilot -
gke.gcr.io/asm/pilot:1.26.0-asm.11
- Proxyv2 -
gke.gcr.io/asm/proxyv2:1.26.0-asm.11
將映像檔新增至私人登錄檔
如要將 Cloud Service Mesh 映像檔推送至私人登錄檔,請完成下列步驟。
-
提取 Cloud Service Mesh 映像檔:
docker pull gke.gcr.io/asm/install-cni:1.26.0-asm.11 docker pull gke.gcr.io/asm/mdp:1.26.0-asm.11 docker pull gke.gcr.io/asm/pilot:1.26.0-asm.11 docker pull gke.gcr.io/asm/proxyv2:1.26.0-asm.11
-
為私人登錄檔網址建立變數:
將export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
PRIVATE_REGISTRY_URL
替換為您的私人登錄檔網址。 -
使用私人登錄檔網址標記映像檔:
docker tag gke.gcr.io/asm/install-cni:1.26.0-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.26.0-asm.11 docker tag gke.gcr.io/asm/mdp:1.26.0-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.26.0-asm.11 docker tag gke.gcr.io/asm/pilot:1.26.0-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.26.0-asm.11 docker tag gke.gcr.io/asm/proxyv2:1.26.0-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.26.0-asm.11
- 將加上標記的映像檔推送至私人登錄檔:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.26.0-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.26.0-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.26.0-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.26.0-asm.11
- (選用) 如果您使用標準服務,請將標準服務映像檔新增至私人登錄檔。
- 提取 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}/gcr.io/kubebuilder/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 叢集
詳情請參閱「存取追蹤記錄」。
透過輸出閘道輸出
建議您按照「安裝與升級閘道」一文所述,安裝注入式閘道。 注入或自動注入是指在建立 Pod 時,使用變異 Webhook 修改 Pod 規格。您可以使用注入功能,為網格服務新增 Envoy Proxy 補充設定,或設定閘道的 Envoy Proxy。
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 閘道上啟用外部憑證管理功能,請參閱「安全閘道」。