第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-systemnamespace を作成します。oc create namespace istio-system
$ oc create namespace istio-systemCopy 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.yamlCopy 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=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Istio Container Network Interface (CNI) をインストールします。
次のコマンドを実行して、
istio-cninamespace を作成します。oc create namespace istio-cni
$ oc create namespace istio-cniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、
istio-cni.yamlという名前のIstioCNIリソースを作成します。設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow profileフィールドをambientに設定します。次のコマンドを実行して、
IstioCNICR を適用します。oc apply -f istio-cni.yaml
$ oc apply -f istio-cni.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
IstioCNIPod にReadyステータス条件が含まれるまで待ちます。oc wait --for=condition=Ready istios/default --timeout=3m
$ oc wait --for=condition=Ready istios/default --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Ztunnel プロキシーをインストールします。
次のコマンドを実行して、Ztunnel プロキシーの
ztunnelnamespace を作成します。oc create namespace ztunnel
$ oc create namespace ztunnelCopy to Clipboard Copied! Toggle word wrap Toggle overflow ztunnelプロジェクトの namespace 名は、Istio 設定のtrustedZtunnelNamespaceパラメーターと一致する必要があります。次の例のように、
ztunnel.yamlという名前のZtunnelリソースを作成します。設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ZtunnelCR を適用します。oc apply -f ztunnel.yaml
$ oc apply -f ztunnel.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
ZtunnelPod にReadyステータス条件が含まれるまで待ちます。oc wait --for=condition=Ready ztunnel/default --timeout=3m
$ oc wait --for=condition=Ready ztunnel/default --timeout=3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow