在叢集內控制層啟用選用功能
本頁面說明如何使用叢集內控制平面,在 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
。asmcli
會透過--option
從 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,請改為設定對等端驗證政策。
無分發套件的 Proxy 映像檔
最佳做法是將容器執行階段的內容限制為僅包含必要的套件。這種方法可改善安全性,並提高常見安全漏洞與資料外洩 (CVE) 掃描器的信號雜訊比。Istio 提供以 distroless 基本映像檔為基礎的 Proxy 映像檔。
以下設定會為整個 Cloud Service Mesh 啟用無發行映像檔。圖片類型變更需要重新啟動每個 Pod,並重新注入才能生效。
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
image:
imageType: distroless
無發行版映像檔不含代理程式以外的任何二進位檔。因此,您無法在容器中exec
殼層,或使用 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.23.6-asm.11
- 受管理的資料層 -
gke.gcr.io/asm/mdp:1.23.6-asm.11
- 前測 -
gke.gcr.io/asm/pilot:1.23.6-asm.11
- Proxyv2 -
gke.gcr.io/asm/proxyv2:1.23.6-asm.11
將圖片新增至私人登錄檔
如要將 Cloud Service Mesh 映像檔推送至私人登錄檔,請完成下列步驟。
-
提取 Cloud Service Mesh 映像檔:
docker pull gke.gcr.io/asm/install-cni:1.23.6-asm.11 docker pull gke.gcr.io/asm/mdp:1.23.6-asm.11 docker pull gke.gcr.io/asm/pilot:1.23.6-asm.11 docker pull gke.gcr.io/asm/proxyv2:1.23.6-asm.11
-
建立私人註冊表網址的變數:
請將export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
PRIVATE_REGISTRY_URL
替換為您的私人註冊表網址。 -
使用私人登錄檔網址標記映像檔:
docker tag gke.gcr.io/asm/install-cni:1.23.6-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.23.6-asm.11 docker tag gke.gcr.io/asm/mdp:1.23.6-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.23.6-asm.11 docker tag gke.gcr.io/asm/pilot:1.23.6-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.23.6-asm.11 docker tag gke.gcr.io/asm/proxyv2:1.23.6-asm.11 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.23.6-asm.11
- 將標記的映像檔推送至私人登錄檔:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.23.6-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.23.6-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.23.6-asm.11 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.23.6-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}/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 標準服務映像檔:
如果您可以從私人登錄檔中提取已標記的映像檔,表示程序已成功。
增加終止耗電時間長度
根據預設,Envoy 會等待五秒 (5s
),讓 Pod 終止時現有連線完成。
Pod terminationGracePeriodSeconds
必須大於 terminationDrainDuration
值。
詳情請參閱「全域網格選項」。
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultConfig:
terminationDrainDuration: 30s
啟用存取記錄
詳情請參閱「啟用 Envoy 的存取記錄功能」。
Cloud Trace
在下列平台上,Cloud Trace 可與 Cloud Service Mesh 安裝程序搭配使用:
- Google Cloud上的 GKE
- 如果您使用 Cloud Service Mesh 憑證授權單位安裝,則為內部部署環境的 GKE Enterprise 叢集
詳情請參閱「存取記錄」。
透過輸出閘道輸出
Istio Container Network Interface
啟用 Istio 容器網路介面 (CNI) 的方式取決於 Cloud Service Mesh 安裝的環境。
選擇符合平台的覆疊檔案。
在 GKE 上啟用 CNI
在內部部署 CNI
為離線Google Cloud啟用流量記錄檔
在 Google Cloud 外部使用 Istio CA 安裝 Cloud Service Mesh 時,預設會回報指標給 Prometheus。使用這個選項,改為啟用記錄流量記錄,或同時啟用 Prometheus 和 Stackdriver,以便使用 Cloud Service Mesh 資訊主頁。
僅限 Stackdriver
Stackdriver 和 Prometheus
啟用內部負載平衡器
建議您按照「安裝及升級閘道」一文所述,安裝插入式閘道,在 GKE 上設定內部負載平衡器。設定閘道服務時,請加入以下註解:networking.gke.io/load-balancer-type: "Internal"
入站閘道上的外部憑證管理
如要瞭解如何使用 Envoy SDS 在入口網關上啟用外部憑證管理功能,請參閱「安全網關」。