Helmによるインストール
本番環境でのアンビエントモードでのIstioインストールには、Helmの使用を推奨します。制御されたアップグレードを可能にするため、コントロールプレーンとデータプレーンコンポーネントは別々にパッケージ化され、インストールされます。(アンビエントデータプレーンは2つのコンポーネント、ztunnelとウェイポイントに分割されているため、アップグレードにはこれらのコンポーネントに対する個別のステップが必要です。)
前提条件
プラットフォーム固有の前提条件を確認してください。
バージョン3.6以上のHelmクライアントをインストールしてください。
Helmリポジトリを設定してください。
$ helm repo add istio https://istio-release.storage.googleapis.com/charts $ helm repo update
コントロールプレーンのインストール
デフォルトの構成値は、1つ以上の--set <パラメーター>=<値>
引数を使用して変更できます。あるいは、--values <ファイル>
引数を使用して、カスタム値ファイルに複数のパラメーターを指定することもできます。
Helmインストールの使用とカスタマイズ方法の詳細については、サイドカーインストールドキュメントを参照してください。
インストールまたは削除するコンポーネントをグループ化するistioctlプロファイルとは異なり、Helmプロファイルは単に構成値のグループを設定します。
基本コンポーネント
base
チャートには、Istioを設定するために必要な基本的なCRDとクラスタロールが含まれています。これは、他のIstioコンポーネントの前にインストールする必要があります。
$ helm install istio-base istio/base -n istio-system --create-namespace --wait
Kubernetes Gateway API CRDのインストールまたはアップグレード
ほとんどのKubernetesクラスタには、Kubernetes Gateway API CRDがデフォルトでインストールされていないため、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は、メッシュ内のトラフィックをルーティングするためにプロキシを管理および構成するコントロールプレーンコンポーネントです。
$ helm install istiod istio/istiod --namespace istio-system --set profile=ambient --wait
CNIノードエージェント
cni
チャートは、Istio CNIノードエージェントをインストールします。これは、アンビエントメッシュに属するポッドを検出し、ポッドとztunnelノードプロキシ(後でインストールされます)間のトラフィックリダイレクトを構成する役割を担います。
$ helm install istio-cni istio/cni -n istio-system --set profile=ambient --wait
データプレーンのインストール
ztunnel DaemonSet
ztunnel
チャートは、Istioのアンビエントモードのノードプロキシコンポーネントであるztunnel DaemonSetをインストールします。
$ helm install ztunnel istio/ztunnel -n istio-system --wait
イングレスゲートウェイ(オプション)
イングレスゲートウェイをインストールするには、以下のコマンドを実行します。
$ 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
デプロイされたポッドの状態は以下のコマンドで確認できます。
$ 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を使用してアンビエントモードをインストールした後、サンプルアプリケーションのデプロイガイドに従ってサンプルアプリケーションとイングレスゲートウェイをデプロイし、その後アプリケーションをアンビエントメッシュに追加できます。
アンインストール
上記でインストールしたチャートをアンインストールすることで、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