Knative 用の Istio のインストール¶
このガイドでは、Knative で使用するために Istio を手動でインストールおよびカスタマイズする方法について説明します。
クラウドプラットフォームでマネージド Istio インストールが提供されている場合は、インストールをカスタマイズする必要がない限り、その方法で Istio をインストールすることをお勧めします。
始める前に¶
以下が必要です。
- 作成済みの Kubernetes クラスター。
istioctl
がインストール済み。- Knative Serving がインストール済み(Istio の後でもインストール可能)。
サポートされている Istio バージョン¶
テスト済みの最新 Istio バージョンは、Knative Net Istio リリースページで確認できます。
Istio のインストール¶
Istio をインストールするときには、目標に応じていくつかのオプションがあります。ほとんどの Knative ユースケースに適した基本的な Istio インストールについては、istioctl を使用した基本インストールの手順に従ってください。Istio に精通しており、どのようなインストールが必要か分かっている場合は、オプションを読み、ニーズに合ったインストールを選択してください。
istioctl を使用した基本インストール¶
-
istioctl
を使用すると、Istio のインストールを簡単にインストールおよびカスタマイズできます。istioctl install -y
-
Istio を Knative Serving と統合するには、次のコマンドを実行して Knative Istio コントローラーをインストールします。
kubectl apply -f https://github.com/knative/net-istio/releases/download/knative-v1.16.0/net-istio.yaml
ヒント
Knative Serving のインストールとDNS の構成も忘れずに行ってください。
サービスメッシュの形成¶
Istio サービスメッシュには、いくつかの利点があります。
-
クラスター内のサービス間トラフィックを保護する相互 TLS を有効にできます。
-
Istio 認証ポリシーを使用することで、Istio サービスロールに基づいて各 Knative サービスへのアクセスを制御できます。
Istio をサービスメッシュとして使用する場合は、サービスメッシュの一部にする必要があるすべての pods
に Istio サイドカーが注入されていることを確認する必要があります。これを実現するには、次の 2 つの方法があります。
-
自動サイドカーインジェクションを使用し、サービスメッシュの一部にする必要があるすべての
namespaces
にistio-injection=enabled
ラベルを設定します。 -
サービスメッシュの一部にする必要があるすべての
pods
で手動サイドカーインジェクションを使用します。
Knative での Istio mTLS 機能の使用¶
knative-serving
名前空間とサービスが実行されている名前空間の間にはいくつかのネットワーク通信があるため、mTLS が有効な環境では追加の準備が必要です。
注意
knative-serving
のすべての pods
に手動でサイドカーを注入することを避けるために、自動サイドカーインジェクションを使用することを強くお勧めします。
-
knative-serving
システム名前空間でサイドカーインジェクションを有効にします。kubectl label namespace knative-serving istio-injection=enabled
-
次のテンプレートを使用して YAML ファイルを作成し、
knative-serving
システム名前空間でPeerAuthentication
をPERMISSIVE
に設定します。apiVersion: "security.istio.io/v1beta1" kind: "PeerAuthentication" metadata: name: "default" namespace: "knative-serving" spec: mtls: mode: PERMISSIVE
-
次のコマンドを実行して YAML ファイルを適用します。
ここで、kubectl apply -f <filename>.yaml
<filename>
は前のステップで作成したファイルの名前です。
インストールの構成¶
デフォルト以外のローカルゲートウェイを使用するように config-istio
configmap を更新する¶
knative-local-gateway
以外の名前でローカルゲートウェイ用のカスタムサービスとデプロイメントを作成する場合は、knative-serving
名前空間の下にあるゲートウェイ configmap config-istio
を更新する必要があります。
-
config-istio
configmap を編集します。kubectl edit configmap config-istio -n knative-serving
-
local-gateways
フィールドをカスタムサービスで置き換えます。例として、istio-system
名前空間の下でサービスとデプロイメントの両方にcustom-local-gateway
という名前を付ける場合は、次のように更新する必要があります。local-gateways: | - name: knative-local-gateway namespace: knative-serving service: custom-local-gateway.istio-system.svc.cluster.local
例として、カスタムサービスとデプロイメントの両方が、デフォルトの istio: knative-local-gateway
ではなく custom: custom-local-gateway
というラベルが付いている場合は、knative-serving
名前空間のゲートウェイインスタンス knative-local-gateway
を更新する必要があります。
kubectl edit gateway knative-local-gateway -n knative-serving
ラベルセレクターをサービスのラベルで置き換えます。
istio: knative-local-gateway
前述のサービスの場合、次のように更新する必要があります。
custom: custom-local-gateway
サービスポート(knative-local-gateway
のポートと比較して)に変更がある場合は、それに応じてゲートウェイのポート情報を更新してください。
Istio インストールの検証¶
Istio インストールのステータスを表示して、インストールが成功したことを確認します。istioctl
を使用してインストールを検証できます。
istioctl verify-install
Istio リソース¶
-
公式の Istio インストールガイドについては、Istio Kubernetes スタートガイドを参照してください。
-
istioctl
で Istio をインストールする際に利用可能な構成の完全なリストについては、Istio インストールオプションのリファレンスを参照してください。
Istio のクリーンアップ¶
Istio のアンインストールを参照してください。
次のステップ¶
- Knative Serving ドキュメントを参照してください。
- Knative Serving のコードサンプルを試してください。