Helm で Istio をインストールしてカスタマイズする
本番環境で Istio を動かすために公式に推奨される方法と、削除された Istio Operator に代わるもの。
istioctl install は、学習やローカルテストのためにメッシュを動かす最も手早い方法ですが、長期的に管理、バージョン管理、カスタマイズしていく本番のインストールには、Helm が Istio の公式に推奨する方法です。このガイドでは Helm で Istio をインストールし、古い資料が案内する、きめ細かなカスタマイズに関して、Istio Operator に代わるものを説明します。
始める前に:Istio Operator はもうない
Istio には以前、クラスター内の Istio Operator が含まれていました。IstioOperator カスタムリソースを監視し、クラスターをそれに一致するよう調整するコントローラーです。プロファイルを IstioOperator の YAML ファイルにダンプして適用することを中心に据えたチュートリアル、認定資格の教材、古いドキュメントを見たことがあるなら、それが説明しているものです。クラスター内の operator は Istio 1.23 で非推奨となり、1.24 で完全に削除されました。 現在の Istio のリリースには存在しません。
それに代わるものは、より直接的です。Helm の values ファイルです。かつて IstioOperator リソースを通じて行われていたのと同じカスタマイズ、つまりゲートウェイの有効化、リソース要求の調整、コンポーネントの設定変更が、Helm の values として表現され、他の Helm チャートをカスタマイズするのと同じように、helm install や helm upgrade で適用されます。Operator を不可欠なものとして扱う資料で学んでいる場合は、根底にある概念(ファイルで設定をカスタマイズし、適用すると Istio がそれに一致するよう調整する)は今でも有効だと考えつつ、仕組みを Helm に読み替えてください。
3 つの中核チャートをインストールする
Istio の Helm によるインストールは 3 つのチャートに分かれており、順番にインストールします。
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update
# 1. CRD とクラスターレベルのリソース
helm install istio-base istio/base -n istio-system --create-namespace
# 2. コントロールプレーン (istiod)
helm install istiod istio/istiod -n istio-system --wait
# 3. ingress ゲートウェイ(任意。外部トラフィックの入口が必要な場合)
helm install istio-ingressgateway istio/gateway -n istio-system
istio-base は、他のすべてが依存する CustomResourceDefinition とクラスターレベルの RBAC リソースをインストールするもので、最初に行う必要があります。istiod はコントロールプレーンそのものです。ゲートウェイのチャートは、管理された ingress(または egress)ゲートウェイが必要な場合にのみ必要です。サイドカー同士のトラフィックだけのメッシュなら、省略できます。
kubectl get pods -n istio-system
helm list -n istio-system
istiod と、インストールした場合はゲートウェイが Running になっているはずで、helm list には 3 つのリリースすべてが表示されるはずです。
values で設定をカスタマイズする
各チャートは独自の values を受け付け、他の Helm チャートと同じ方法で確認できます。
helm show values istio/istiod > istiod-values.yaml
ファイルを編集してから、それを使ってインストール(またはアップグレード)します。
helm upgrade istiod istio/istiod -n istio-system -f istiod-values.yaml
一般的なカスタマイズは次のとおりです。istiod やゲートウェイのリソース requests と limits、egress ゲートウェイの有効化(ほとんどのプロファイルでデフォルトは無効)、meshConfig 配下のメッシュ全体の設定の調整などです。Istio Operator が spec.components や spec.meshConfig で設定できたものはすべて、Helm の values に相当するものがあります。実行しているバージョンで、どの values がどの動作に対応するかの正確な情報は、Istio 自身の Helm インストールのドキュメントが正式なリファレンスです。
変更を適用する
helm upgrade istiod istio/istiod -n istio-system -f istiod-values.yaml
他の Helm のアップグレードと同じパターンです。values を編集し、helm upgrade を再実行すると、Helm が稼働中のリソースを調整して一致させます。古い資料が説明する「operator の設定を適用する」という別のステップはありません。helm upgrade 自体が適用のステップです。
アンインストール
helm uninstall istio-ingressgateway -n istio-system
helm uninstall istiod -n istio-system
helm uninstall istio-base -n istio-system
kubectl delete namespace istio-system
1 つのコマンドですべてを削除する istioctl uninstall --purge とは異なり、Helm のアプローチでは、後のチャートが基本チャートの作成したリソースに依存する場合があるため、インストールの順序のほぼ逆の順序で、各リリースを個別にアンインストールします。
人気のガイド
-
Istio のアーキテクチャ:サイドカー、データプレーン、コントロールプレーン istiod が実際に何をするのか、Envoy サイドカーがどう組み込まれるのか、そしてアプリもそのマニフェストも Istio の存在を知る必要がない理由。 -
istioctl で Istio をインストールし、サイドカー注入を有効にする ローカルクラスターでメッシュを動かし、正常であることを確認し、最初のワークロードにサイドカーを注入します。 -
istioctl で Istio のインストールを検証してデバッグする 設定ミスを事前に見つけます。analyze、validate、proxy-status、そしてメッシュが黙って依存している 1 つのラベル。 -
メッシュを観測する:Prometheus、Grafana、トレーシング、Kiali すべてのサイドカーはすでにメトリクスとトレースを出力しています。それを実際に見られるものに変えるアドオンをインストールします。