第4章 Istio アンビエントモード
Istio アンビエントモードは、サイドカーインジェクションなしで Red Hat OpenShift Service Mesh のアーキテクチャーを導入します。このモードは、操作を簡素化し、リソースの使用量を削減するように設計されています。アンビエントモードでは、各アプリケーション Pod にサイドカープロキシーを挿入する代わりに、Layer 4 (L4) 機能には共有ノードレベルプロキシーを使用し、Layer 7 (L7) 機能にはオプションの専用プロキシーを使用します。
Istio アンビエントモードはテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
4.1. Istio アンビエントモードについて リンクのコピーリンクがクリップボードにコピーされました!
Istio アンビエントモードアーキテクチャーを理解するには、次の定義を参照してください。
- ZTunnel プロキシー
- ノード上のすべてのワークロードに対してセキュアで透過的な Transmission Control Protocol (TCP) 接続を管理するノードごとのプロキシー。これは、Layer 4 (L4) で動作し、相互 Transport Layer Security (mTLS) と L4 ポリシーの適用をアプリケーション Pod からオフロードします。
- waypoint プロキシー
- サービスアカウントまたは namespace ごとに実行され、トラフィック管理、ポリシー適用、監視などの高度な Layer 7 (L7) 機能を提供するオプションのプロキシー。L7 機能を選択的に適用して、すべてのサービスに対するサイドカーのオーバーヘッドを回避できます。
- Istio CNI プラグイン
- 各ノード上の Ztunnel プロキシーにトラフィックをリダイレクトし、アプリケーション Pod を変更することなく透過的なインターセプションを可能にします。
Istio アンビエントモードには次の利点があります。
- サイドカーインジェクションを管理する必要性をなくす 簡素化された操作 により、メッシュの導入および操作の複雑さが軽減されます。
-
L4 サービスメッシュ機能を提供するノードごとの Ztunnel プロキシーと、Pod ごとのリソースオーバーヘッドを削減するオプションの
waypoint
プロキシーにより、リソース消費が削減されます。 段階的な導入 により、相互 Transport Layer Security (mTLS) などの L4 機能や、オプションの
waypoint
プロキシーが後で追加された基本ポリシーを使用して、ワークロードがメッシュに参加できるようになり、HTTP (L7) トラフィック管理などの L7 サービスメッシュ機能が使用できるようになります。注記L7 機能では
waypoint
プロキシーをデプロイする必要があり、これにより、一部のサービスに対して最小限の追加オーバーヘッドが発生します。- セキュリティーが強化 され、すべてのメッシュワークロードに対してデフォルトで mTLS を使用したセキュアなゼロトラストネットワーク基盤が提供されます。
アンビエントモードは新しいアーキテクチャーであり、従来のサイドカーモデルとは異なる運用上の考慮事項が必要になる場合があります。
適切に定義されたディスカバリーセレクターを使用すると、サイドカーモードのメッシュと並行してアンビエントモードでデプロイされたサービスメッシュが可能になりますが、このシナリオは十分に検証されていません。潜在的な競合を回避するには、既存の Red Hat OpenShift Service Mesh インストールがないクラスターにのみ Istio アンビエントモードをインストールします。アンビエントモードは引き続きテクノロジープレビュー機能です。
Istio アンビエントモードは、Red Hat OpenShift Service Mesh 2.6 以前を使用するクラスターとは互換性がありません。これらを一緒にインストールしたり使用したりしないでください。
4.1.1. Istio アンビエントモードのインストール リンクのコピーリンクがクリップボードにコピーされました!
必要な Gateway API カスタムリソース定義 (CRD) を使用して、OpenShift Container Platform 4.19 以降および Red Hat OpenShift Service Mesh 3.1.0 以降に Istio アンビエントモードをインストールできます。
前提条件
- クラスターを OpenShift Container Platform 4.19 以降にデプロイしている。
- OpenShift Container Platform クラスターに OpenShift Service Mesh Operator 3.1.0 以降がインストールされている。
-
インストール方法に応じて、
cluster-admin
ロールを持つユーザーとして Web コンソールを使用するか、またはoc login
コマンドを使用して OpenShift Container Platform クラスターにログインしている。 -
Cluster Network Operator の
gatewayConfig
仕様でroutingViaHost
フィールドをtrue
に設定して、OVN-Kubernetes Container Network Interface (CNI) がローカルゲートウェイモードを使用するように設定した。詳細は、「ゲートウェイモードの設定」を参照してください。
手順
Istio コントロールプレーンをインストールします。
次のコマンドを実行して、
istio-system
namespace を作成します。oc create namespace istio-system
$ oc create namespace istio-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、
istio.yaml
という名前のIstio
リソースを作成します。設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要profile
フィールドをambient
に設定し、.spec.values.pilot.trustedZtunnelNamespace
値を、ZTunnel
リソースがインストールされる namespace と一致するように設定する必要があります。次のコマンドを実行して、
Istio
カスタムリソース (CR) を適用します。oc apply -f istio.yaml
$ oc apply -f istio.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Istio コントロールプレーンに
Ready
ステータス条件が含まれるまで待ちます。oc wait --for=condition=Ready istios/default --timeout=3m
$ oc wait --for=condition=Ready istios/default --timeout=3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Istio Container Network Interface (CNI) をインストールします。
次のコマンドを実行して、
istio-cni
namespace を作成します。oc create namespace istio-cni
$ oc create namespace istio-cni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、
istio-cni.yaml
という名前のIstioCNI
リソースを作成します。設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow profile
フィールドをambient
に設定します。次のコマンドを実行して、
IstioCNI
CR を適用します。oc apply -f istio-cni.yaml
$ oc apply -f istio-cni.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
IstioCNI
Pod にReady
ステータス条件が含まれるまで待ちます。oc wait --for=condition=Ready istios/default --timeout=3m
$ oc wait --for=condition=Ready istios/default --timeout=3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ztunnel プロキシーをインストールします。
次のコマンドを実行して、Ztunnel プロキシーの
ztunnel
namespace を作成します。oc create namespace ztunnel
$ oc create namespace ztunnel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ztunnel
プロジェクトの namespace 名は、Istio 設定のtrustedZtunnelNamespace
パラメーターと一致する必要があります。次の例のように、
ztunnel.yaml
という名前のZtunnel
リソースを作成します。設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Ztunnel
CR を適用します。oc apply -f ztunnel.yaml
$ oc apply -f ztunnel.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Ztunnel
Pod にReady
ステータス条件が含まれるまで待ちます。oc wait --for=condition=Ready ztunnel/default --timeout=3m
$ oc wait --for=condition=Ready ztunnel/default --timeout=3m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow