使用 Helm 安裝
我們建議在 Ambient 模式的生產環境中使用 Helm 安裝 Istio。為了允許受控的升級,控制平面和資料平面元件會分開打包和安裝。(由於 Ambient 資料平面分散在兩個元件中,即 ztunnel 和航點,因此升級需要為這些元件分別執行步驟。)
前提條件
檢查平台特定先決條件。
安裝 Helm 用戶端,版本 3.6 或以上。
設定 Helm 儲存庫
$ helm repo add istio https://istio-release.storage.googleapis.com/charts $ helm repo update
安裝控制平面
可以使用一個或多個 --set <parameter>=<value>
引數來變更預設的組態值。或者,您可以使用 --values <file>
引數在自訂值檔案中指定多個參數。
關於如何使用和自訂 Helm 安裝的完整詳細資訊,請參閱Sidecar 安裝文件。
與將要安裝或移除的元件分組在一起的 istioctl 設定檔不同,Helm 設定檔只是設定組態值群組。
基礎元件
base
圖表包含設定 Istio 所需的基本 CRD 和叢集角色。這應該在任何其他 Istio 元件之前安裝。
$ helm install istio-base istio/base -n istio-system --create-namespace --wait
安裝或升級 Kubernetes Gateway API CRD
請注意,Kubernetes Gateway API CRD 在大多數 Kubernetes 叢集上預設不會安裝,因此請確保在使用 Gateway API 之前安裝它們
$ kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \
{ kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml; }
istiod 控制平面
istiod
圖表會安裝 Istiod 的修訂版本。Istiod 是控制平面元件,用於管理和設定 Proxy,以便在網格內路由流量。
$ helm install istiod istio/istiod --namespace istio-system --set profile=ambient --wait
CNI 節點代理程式
cni
圖表會安裝 Istio CNI 節點代理程式。它負責偵測屬於 Ambient 網格的 Pod,並設定 Pod 和 ztunnel 節點 Proxy(稍後將安裝)之間的流量重新導向。
$ helm install istio-cni istio/cni -n istio-system --set profile=ambient --wait
安裝資料平面
ztunnel DaemonSet
ztunnel
圖表會安裝 ztunnel DaemonSet,這是 Istio Ambient 模式的節點 Proxy 元件。
$ helm install ztunnel istio/ztunnel -n istio-system --wait
Ingress 閘道(選用)
若要安裝 Ingress 閘道,請執行以下命令
$ helm install istio-ingress istio/gateway -n istio-ingress --create-namespace --wait
如果您的 Kubernetes 叢集不支援具有正確外部 IP 指派的 LoadBalancer
服務類型 (type: LoadBalancer
),請在執行上述命令時不要使用 --wait
參數,以避免無限期等待。如需有關閘道安裝的深入文件,請參閱安裝閘道。
設定
若要檢視支援的組態選項和文件,請執行
$ helm show values istio/istiod
驗證安裝
驗證工作負載狀態
安裝所有元件後,您可以使用以下命令檢查 Helm 部署狀態
$ helm ls -n istio-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
istio-base istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed base-1.24.0 1.24.0
istio-cni istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed cni-1.24.0 1.24.0
istiod istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-1.24.0 1.24.0
ztunnel istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed ztunnel-1.24.0 1.24.0
您可以使用以下命令檢查已部署 Pod 的狀態
$ kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-cni-node-g97z5 1/1 Running 0 10m
istiod-5f4c75464f-gskxf 1/1 Running 0 10m
ztunnel-c2z4s 1/1 Running 0 10m
使用範例應用程式驗證
使用 Helm 安裝 Ambient 模式後,您可以依照部署範例應用程式指南來部署範例應用程式和 Ingress 閘道,然後您可以將您的應用程式新增至 Ambient 網格。
解除安裝
您可以解除安裝上方安裝的圖表來解除安裝 Istio 及其元件。
列出在
istio-system
命名空間中安裝的所有 Istio 圖表$ helm ls -n istio-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION istio-base istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed base-1.24.0 1.24.0 istio-cni istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed cni-1.24.0 1.24.0 istiod istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed istiod-1.24.0 1.24.0 ztunnel istio-system 1 2024-04-17 22:14:45.964722028 +0000 UTC deployed ztunnel-1.24.0 1.24.0
(選用)刪除任何 Istio 閘道圖表安裝
$ helm delete istio-ingress -n istio-ingress $ kubectl delete namespace istio-ingress
刪除 ztunnel 圖表
$ helm delete ztunnel -n istio-system
刪除 Istio CNI 圖表
$ helm delete istio-cni -n istio-system
刪除 istiod 控制平面圖表
$ helm delete istiod -n istio-system
刪除 Istio base 圖表
$ helm delete istio-base -n istio-system
刪除 Istio 安裝的 CRD(選用)
$ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
刪除
istio-system
命名空間$ kubectl delete namespace istio-system