はじめに
Istioの勉強の一環で、kindで作成したKubernetesクラスタにIstioをインストールしてみます。
Istioとは
Istioは、既存の分散アプリケーションに透過的に組み込めるオープンソースのサービスメッシュです。
アプリケーションコードにほとんど変更を加えることなく、サービスの「保護 (セキュリティ)」「接続 (トラフィック制御)」「監視 (可観測性)」を統一的かつ効率的に実現します。
Istioが提供する主な機能は以下です。
- セキュアなサービス間通信
- 相互TLS (mTLS) 暗号化による通信の保護
- 協力なIDベースの認証および認可
- トラフィック管理と自動負荷分散
- HTTP, gRPC, WebSOcket, TCPトラフィックの自動分散
- 高度なルーティングルール、リトライ、フェイルオーバー、フォールとインジェクション (障害注入) などの詳細なトラフィック制御
- ポリシー制御
- アクセス制御、レートリミット、クォータなどをサポート
- 可観測性 (オブザーバビリティ)の自動化
- クラスタ内およびIngress / Egressの全トラフィックに関するメトリクス、アクセスログ、分散トレーシングの自動収集
環境情報
| Component | Version |
|---|---|
| PC | M1 MacBook Pro |
| OS | macOS 26.6.2 |
| Rancher Desktop | 1.24.0 |
| kind | 0.33.0 |
| Kubernetes | v1.37.0 |
| Istio | 1.30.4 |
| Helm | v4.2.3 |
手順
kindでKubernetesクラスタを作成する
kindコマンドでsandboxというKubernetesクラスタを立ち上げます。
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: sandbox
nodes:
- role: control-plane
- role: worker
上記のyamlファイルを元にKubernetesクラスタを作成します。
kind create cluster --config kind-sandbox.yaml
istioctlでインストール
istioctlというコマンドをインストールします。
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.30.4
export PATH=$PWD/bin:$PATH
istioctl version を実行して、�正しくバージョンが表示されればOKです。
istioctl version
istioctlコマンド経由で、sandboxクラスタにIstioをインストールする
istioctl install --set profile=demo
以下のコマンドでIstio関連のPod、istiod, istio-{ingress,egress}gatewayが立ち上がっていることが確認できればOKです。
k -n istio-system get po
demoは検証用などに使う構成で構築できるプロファイルです。
https://istio.io/latest/docs/setup/additional-setup/config-profiles/
Helmでインストール
istioctlでインストールしたIstioを破棄して、新しくKubernetesクラスタを作成します。
kind delete clusters sandbox
kind create cluster --config kind-sandbox.yaml
今度はHelm経由でIstioをインストールします。
まずはHelmリポジトリを登録します。
helm repo add istio https://blob.istio.io/istio-release/charts
helm repo update
Helm経由で、Istioをインストールします。
コンポーネントごとにインストールしていきます。
helm install istio-base istio/base \
-n istio-system \
--create-namespace \
--set profile=demo \
--wait
helm install istiod istio/istiod \
-n istio-system \
--set profile=demo \
--set meshConfig.accessLogFile=/dev/stdout \
--set meshConfig.defaultConfig.tracing.sampling=100.0 \
--wait
helm install istio-ingressgateway istio/gateway \
-n istio-system \
--set profile=demo \
--wait
helm install istio-egressgateway istio/gateway \
-n istio-system \
--set name=istio-egressgateway \
--set profile=demo \
--set service.type=ClusterIP \
--wait
以下のコマンドで、Istio関連のコンポーネントが表示されればOKです。
helm list -n istio-system
k -n istio-system get po
IstioOperatorでインストール (非推奨)
Istio has deprecated its In-Cluster Operatorの記事にあるように、2024年時点でIstioOperatorは非推奨になっています。
運用の複雑化、特権を持ち続けるリスク、エコシステムに合わせて標準化する流れがあるからのようです。
そういった背景から、本記事ではIstioOperatorでのインストール手順は示しません。
最後に
主にistioctlコマンドとHelm経由でのIstioのインストール方法を紹介しました。