使用 Helm 安裝

我們建議在 Ambient 模式的生產環境中使用 Helm 安裝 Istio。為了允許受控的升級,控制平面和資料平面元件會分開打包和安裝。(由於 Ambient 資料平面分散在兩個元件中,即 ztunnel 和航點,因此升級需要為這些元件分別執行步驟。)

前提條件

  1. 檢查平台特定先決條件

  2. 安裝 Helm 用戶端,版本 3.6 或以上。

  3. 設定 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 及其元件。

  1. 列出在 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
    
  2. (選用)刪除任何 Istio 閘道圖表安裝

    $ helm delete istio-ingress -n istio-ingress
    $ kubectl delete namespace istio-ingress
    
  3. 刪除 ztunnel 圖表

    $ helm delete ztunnel -n istio-system
    
  4. 刪除 Istio CNI 圖表

    $ helm delete istio-cni -n istio-system
    
  5. 刪除 istiod 控制平面圖表

    $ helm delete istiod -n istio-system
    
  6. 刪除 Istio base 圖表

    $ helm delete istio-base -n istio-system
    
  7. 刪除 Istio 安裝的 CRD(選用)

    $ kubectl get crd -oname | grep --color=never 'istio.io' | xargs kubectl delete
    
  8. 刪除 istio-system 命名空間

    $ kubectl delete namespace istio-system
    
這項資訊是否有用?
您是否有任何改進建議?

感謝您的意見回饋!