在叢集內控制層啟用選用功能
本頁面說明如何使用叢集內控制平面,在 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.25.2-asm.3
- 受管理的資料層 -
gke.gcr.io/asm/mdp:1.25.2-asm.3
- 前測 -
gke.gcr.io/asm/pilot:1.25.2-asm.3
- Proxyv2 -
gke.gcr.io/asm/proxyv2:1.25.2-asm.3
將圖片新增至私人登錄檔
如要將 Cloud Service Mesh 映像檔推送至私人登錄檔,請完成下列步驟。
-
提取 Cloud Service Mesh 映像檔:
docker pull gke.gcr.io/asm/install-cni:1.25.2-asm.3 docker pull gke.gcr.io/asm/mdp:1.25.2-asm.3 docker pull gke.gcr.io/asm/pilot:1.25.2-asm.3 docker pull gke.gcr.io/asm/proxyv2:1.25.2-asm.3
-
建立私人註冊表網址的變數:
請將export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
PRIVATE_REGISTRY_URL
替換為您的私人註冊表網址。 -
使用私人登錄檔網址標記映像檔:
docker tag gke.gcr.io/asm/install-cni:1.25.2-asm.3 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.25.2-asm.3 docker tag gke.gcr.io/asm/mdp:1.25.2-asm.3 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.25.2-asm.3 docker tag gke.gcr.io/asm/pilot:1.25.2-asm.3 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.25.2-asm.3 docker tag gke.gcr.io/asm/proxyv2:1.25.2-asm.3 \ ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.25.2-asm.3
- 將標記的映像檔推送至私人登錄檔:
docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.25.2-asm.3 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.25.2-asm.3 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.25.2-asm.3 docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.25.2-asm.3
- (選用) 如果您使用標準服務,請將標準服務映像檔新增至私人註冊資料庫。
- 提取 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 叢集
詳情請參閱「存取記錄」。
透過輸出閘道輸出
建議您按照「安裝與升級閘道」一節所述安裝注入式閘道。插入或自動插入是指在建立時使用變異 webhook 修改 Pod 規格。您可以使用插入功能為網狀網路服務新增 Envoy Proxy 補充設定,或設定閘道的 Envoy Proxy。
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 在入口網關上啟用外部憑證管理功能,請參閱「安全網關」。