3.3. Service Mesh と Istio の相違点
このドキュメントは、サポートされなくなった Red Hat OpenShift Service Mesh リリースに関するものです。
Service Mesh バージョン 1.0 および 1.1 コントロールプレーンはサポートされなくなりました。Service Mesh コントロールプレーンのアップグレードの詳細は、Service Mesh の アップグレード を参照してください。
特定の Red Hat OpenShift Service Mesh リリースのサポート状況は、製品ライフサイクルページ を参照してください。
Red Hat OpenShift Service Mesh のインストールは、アップストリームの Istio コミュニティー版のインストールとはさまざまな点で異なります。問題を解決したり、追加機能を提供したり、OpenShift Container Platform にデプロイする際の違いに対処したりするために、Red Hat OpenShift Service Mesh への変更が必要になる場合があります。
Red Hat OpenShift Service Mesh の現行リリースは、現在のアップストリームの Istio コミュニティー版リリースと次の点で異なります。
3.3.1. マルチテナントインストール リンクのコピーリンクがクリップボードにコピーされました!
アップストリームの Istio は、シングルテナントのアプローチを採用しています。一方、Red Hat OpenShift Service Mesh は、クラスター内で複数の独立したコントロールプレーンをサポートします。Red Hat OpenShift Service Mesh は、マルチテナント Operator を使用してコントロールプレーンのライフサイクルを管理します。
Red Hat OpenShift Service Mesh は、マルチテナントコントロールプレーンをデフォルトでインストールします。Service Mesh にアクセスできるプロジェクトを指定し、Service Mesh を他のコントロールプレーンインスタンスから分離します。
3.3.1.1. マルチテナンシーとクラスター全体のインストールの比較 リンクのコピーリンクがクリップボードにコピーされました!
マルチテナントインストールとクラスター全体のインストールの主な違いは、istod で使用される権限の範囲です。コンポーネントでは、クラスタースコープのロールベースのアクセス制御 (RBAC) リソース ClusterRoleBinding
が使用されなくなりました。
ServiceMeshMemberRoll
members
リストのすべてのプロジェクトには、コントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding
があり、各コントロールプレーンのデプロイメントはそれらのメンバープロジェクトのみを監視します。各メンバープロジェクトには maistra.io/member-of
ラベルが追加されており、member-of
の値はコントロールプレーンのインストールが含まれるプロジェクトになります。
Red Hat OpenShift Service Mesh は、各メンバープロジェクトに NetworkPolicy
リソースを作成し、他のメンバーとコントロールプレーンからすべての Pod への Ingress を許可します。これにより、メンバープロジェクト自身、コントロールプレーン、および他のメンバープロジェクト間のネットワークアクセスが確保されるように設定されます。Service Mesh からメンバーを削除すると、この NetworkPolicy
リソースがプロジェクトから削除されます。
また、これにより Ingress がメンバープロジェクトのみに制限されます。メンバー以外のプロジェクトの Ingress が必要な場合は、NetworkPolicy
を作成してそのトラフィックを許可する必要があります。
3.3.1.2. クラスタースコープのリソース リンクのコピーリンクがクリップボードにコピーされました!
アップストリーム Istio には、依存するクラスタースコープのリソースが 2 つあります。MeshPolicy
および ClusterRbacConfig
。これらはマルチテナントクラスターと互換性がなく、以下で説明されているように置き換えられました。
- コントロールプレーン全体の認証ポリシーを設定するために、MeshPolicy は ServiceMeshPolicy に置き換えられます。これは、コントロールプレーンと同じプロジェクトに作成する必要があります。
- コントロールプレーン全体のロールベースのアクセス制御を設定するために、ClusterRbacConfig は ServicemeshRbacConfig に置き換えられます。これは、コントロールプレーンと同じプロジェクトに作成する必要があります。
3.3.2. Istio と Red Hat OpenShift Service Mesh の相違点 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service Mesh のインストールは、Istio のインストールとはさまざまな点で異なります。問題を解決したり、追加機能を提供したり、OpenShift Container Platform にデプロイする際の違いに対処したりするために、Red Hat OpenShift Service Mesh への変更が必要になる場合があります。
3.3.2.1. コマンドラインツール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service Mesh のコマンドラインツールは oc です。 Red Hat OpenShift Service Mesh は istioctl をサポートしていません。
3.3.2.2. 自動注入 リンクのコピーリンクがクリップボードにコピーされました!
アップストリームの Istio コミュニティー版インストールでは、ラベルを付けたプロジェクト内の Pod にサイドカーが自動的に注入されます。
Red Hat OpenShift Service Mesh では、Pod にサイドカーが自動的に注入されません。プロジェクトにラベルを付けずに、アノテーションを使用して注入をオプトインする必要があります。この方法で必要となる権限は少なく、ビルダー Pod などの他の OpenShift 機能と競合しません。自動注入を有効にするには、「自動サイドカーインジェクション」セクションで説明されているように、sidecar.istio.io/inject
アノテーションを指定します。
3.3.2.3. Istio ロールベースアクセス制御機能 リンクのコピーリンクがクリップボードにコピーされました!
Istio ロールベースアクセス制御機能 (RBAC) は、サービスへのアクセスを制御するために使用できるメカニズムを提供します。ユーザー名やプロパティーのセットを指定してサブジェクトを特定し、それに応じてアクセス制御を適用できます。
アップストリームの Istio コミュニティーインストールには、ヘッダーの完全一致の実行、ヘッダーのワイルドカードの一致の実行、または特定の接頭辞または接尾辞を含むヘッダーの有無をチェックするオプションが含まれます。
Red Hat OpenShift Service Mesh は、正規表現を使用してリクエストヘッダーを照合する機能を拡張します。request.regex.headers
のプロパティーキーを正規表現で指定します。
アップストリーム Istio コミュニティー版でのリクエストヘッダー照合の例
Red Hat OpenShift Service Mesh での正規表現を使用したリクエストヘッダー照合
3.3.2.4. OpenSSL リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service Mesh では、BoringSSL が OpenSSL に置き換えられています。OpenSSL は、Secure Sockets Layer (SSL) プロトコルおよび Transport Layer Security (TLS) プロトコルのオープンソース実装を含むソフトウェアライブラリーです。Red Hat OpenShift Service Mesh Proxy のバイナリーが、基盤となる Red Hat Enterprise Linux オペレーティングシステムから OpenSSL ライブラリー (libssl および libcrypto) を動的にリンクします。
3.3.2.5. コンポーネントの変更 リンクのコピーリンクがクリップボードにコピーされました!
- すべてのリソースに maistra-version ラベルが追加されました。
- すべての Ingress リソースが OpenShift ルートリソースに変換されました。
- Grafana、トレース (Jaeger)、および Kiali はデフォルトで有効になっており、OpenShift ルート経由で公開されます。
- すべてのテンプレートから Godebug が削除されました。
-
istio-multi
ServiceAccount および ClusterRoleBinding が削除されました。また、istio-reader
ClusterRole も削除されました。
3.3.2.6. Envoy、シークレット検出サービス、および証明書 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat OpenShift Service Mesh は QUIC ベースのサービスをサポートしていません。
- Istio の Secret Discovery Service (SDS) 機能を使用した TLS 証明書のデプロイは、現在 Red Hat OpenShift Service Mesh ではサポートされていません。Istio 実装は、hostPath マウントを使用する nodeagent コンテナーに依存します。
3.3.2.7. Istio Container Network Interface (CNI) プラグイン リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Service Mesh には CNI プラグインが含まれています。これにより、アプリケーション Pod ネットワークを設定するための別の方法が提供されます。CNI プラグインは init-container
ネットワーク設定を置き換えます。これにより、昇格した権限でサービスアカウントおよびプロジェクトに Security Context Constraints (SCC) へのアクセスを付与する必要がなくなります。
3.3.2.8. Istio ゲートウェイのルート リンクのコピーリンクがクリップボードにコピーされました!
Istio Gateway の OpenShift ルートは、Red Hat OpenShift Service Mesh で自動的に管理されます。Istio ゲートウェイが Service Mesh 内で作成され、更新され、削除されるたびに、OpenShift ルートが作成され、更新され、削除されます。
Istio OpenShift Routing (IOR) と呼ばれる Red Hat OpenShift Service Mesh のコントロールプレーンコンポーネントが、ゲートウェイのルートを同期します。詳細は、「自動ルートの作成」を参照してください。
3.3.2.8.1. catch-all ドメイン リンクのコピーリンクがクリップボードにコピーされました!
catch-all ドメイン ("*") はサポートされません。ゲートウェイの定義でこのドメインが見つかった場合、Red Hat OpenShift Service Mesh はルートを 作成します が、デフォルトのホスト名の作成は OpenShift に依存します。つまり、新たに作成されたルートは、catch all ("*") ルート ではなく、代わりに <route-name>[-<project>].<suffix>
形式のホスト名を持ちます。デフォルトのホスト名の仕組みや、クラスター管理者がカスタマイズできる仕組みの詳細は、OpenShift ドキュメントを参照してください。
3.3.2.8.2. サブドメイン リンクのコピーリンクがクリップボードにコピーされました!
サブドメイン (e.g.: "*.domain.com") はサポートされます。ただし、この機能は OpenShift Container Platform ではデフォルトで有効になっていません。そのため、Red Hat OpenShift Service Mesh はサブドメインを使用してルートを 作成します が、そのルートが有効になるのは、OpenShift Container Platform がそのルートを有効にするように設定されている場合だけです。
3.3.2.8.3. Transport Layer Security リンクのコピーリンクがクリップボードにコピーされました!
Transport Layer Security (TLS) がサポートされています。ゲートウェイに tls
セクションが含まれると、OpenShift ルートは TLS をサポートするように設定されます。
関連情報
3.3.3. Kiali とサービスメッシュ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform での Service Mesh を使用した Kiali のインストールは、複数の点でコミュニティーの Kiali インストールとは異なります。以下の変更点は、問題の解決、追加機能の提供、OpenShift Container Platform へのデプロイ時の差異の処理を実行するために必要になることがあります。
- Kiali はデフォルトで有効になっています。
- Ingress はデフォルトで有効になっている。
- Kiali ConfigMap が更新されている。
- Kiali の ClusterRole 設定が更新されている。
-
変更は Service Mesh または Kiali Operator によって上書きされる可能性があるため、ConfigMap を編集しないでください。Kiali Operator が管理するファイルには、
kiali.io/
ラベルまたはアノテーションが付いています。Operator ファイルの更新は、cluster-admin
特権を持つユーザーに制限する必要があります。Red Hat OpenShift Dedicated を使用する場合、Operator ファイルの更新は、dedicated-admin
特権を持つユーザーに制限する必要があります。
3.3.4. 分散トレーシングと Service Mesh リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 上の Service Mesh を使用した Distributed Tracing Platform (Jaeger) のインストールは、コミュニティー版の Jaeger のインストールとはさまざまな点で異なります。以下の変更点は、問題の解決、追加機能の提供、OpenShift Container Platform へのデプロイ時の差異の処理を実行するために必要になることがあります。
- Service Mesh では分散トレーシングがデフォルトで有効になっています。
- Service Mesh では Ingress がデフォルトで有効になっています。
-
Zipkin ポート名が、(
http
から)jaeger-collector-zipkin
に変更されています。 -
Jaeger は、
production
またはstreaming
デプロイメントオプションのいずれかを選択する際に、デフォルトでストレージに Elasticsearch を使用します。 - Istio のコミュニティーバージョンは、汎用的な "tracing" ルートを提供します。Red Hat OpenShift Service Mesh は、Red Hat OpenShift Distributed Tracing Platform (Jaeger) Operator によってインストールされ、すでに OAuth によって保護されている "jaeger" ルートを使用します。
- Red Hat OpenShift Service Mesh は Envoy プロキシーにサイドカーを使用し、Jaeger も Jaeger エージェントにサイドカーを使用します。両者は個別に設定し、混同しないようにしてください。プロキシーサイドカーは、Pod の Ingress および Egress トラフィックに関連するスパンを作成します。エージェントサイドカーは、アプリケーションによって出力されるスパンを受け取り、これらを Jaeger Collector に送信します。