1.3. サービスメッシュと Istio の相違点
Red Hat OpenShift Service Mesh のインストールは、多くの点でアップストリームの Istio コミュニティーインストールとは異なります。Red Hat OpenShift Service Mesh の変更点は、問題の解決、追加機能の提供、OpenShift Container Platform へのデプロイ時の差異の処理を実行するために必要になることがあります。
Red Hat OpenShift Service Mesh の現行リリースは、以下の点で現在のアップストリーム Istio コミュニティーのリリースとは異なります。
1.3.1. Red Hat OpenShift Service Mesh のマルチテナントインストール
アップストリームの Istio は単一テナントのアプローチをとりますが、Red Hat OpenShift Service Mesh はクラスター内で複数の独立したコントロールプレーンをサポートします。Red Hat OpenShift Service Mesh はマルチテナント Operator を使用して、コントロールプレーンのライフサイクルを管理します。
Red Hat OpenShift Service Mesh は、デフォルトでマルチテナントコントロールプレーンをインストールします。Service Meshにアクセスできるプロジェクトを指定し、Service Meshを他のコントロールプレーンインスタンスから分離します。
1.3.1.1. マルチテナンシーとクラスター全体のインストールの比較
マルチテナントインストールとクラスター全体のインストールの主な違いは、コントロールプレーンのデプロイメント (Galley や Pilot など) で使用される権限の範囲です。コンポーネントでは、クラスタースコープのロールベースのアクセス制御 (RBAC) リソース ClusterRoleBinding
が使用されなくなりました。
ServiceMeshMemberRoll
members
一覧のすべてのプロジェクトには、コントロールプレーンのデプロイメントに関連付けられた各サービスアカウントの RoleBinding
があり、各コントロールプレーンのデプロイメントはそれらのメンバープロジェクトのみを監視します。各メンバープロジェクトには maistra.io/member-of
ラベルが追加されており、member-of
の値はコントロールプレーンのインストールが含まれるプロジェクトになります。
Red Hat OpenShift Service Mesh は各メンバープロジェクトを設定し、それ自体、コントロールプレーン、および他のメンバープロジェクト間のネットワークアクセスを確保できるようにします。詳細な設定は、OpenShift SDN (Software-defined Networking) の設定方法によって異なります。詳細は、OpenShift SDN についてを参照してください。
OpenShift Container Platform クラスターが SDN プラグインを使用するように設定されている場合:
NetworkPolicy
: Red Hat OpenShift Service Mesh は、各メンバープロジェクトでNetworkPolicy
リソースを作成し、他のメンバーおよびコントロールプレーンからのすべての Pod に対する Ingress を許可します。Service Meshからメンバーを削除すると、このNetworkPolicy
リソースがプロジェクトから削除されます。注記また、これにより Ingress がメンバープロジェクトのみに制限されます。メンバー以外のプロジェクトの Ingress が必要な場合は、
NetworkPolicy
を作成してそのトラフィックを許可する必要があります。-
Multitenant: Red Hat OpenShift Service Mesh は、各メンバープロジェクトの
NetNamespace
をコントロールプレーンプロジェクトのNetNamespace
に追加します (oc adm pod-network join-projects --to control-plane-project member-project
の実行と同じです)。Service Meshからメンバーを削除すると、そのNetNamespace
はコントロールプレーンから分離されます (oc adm pod-network isolate-projects member-project
の実行と同じです)。 - Subnet: 追加の設定は実行されません。
1.3.1.2. クラスタースコープのリソース
アップストリーム Istio には、依存するクラスタースコープのリソースが 2 つあります。MeshPolicy
および ClusterRbacConfig
。これらはマルチテナントクラスターと互換性がなく、以下で説明されているように置き換えられました。
- コントロールプレーン全体の認証ポリシーを設定するために、MeshPolicy は ServiceMeshPolicy に置き換えられます。これは、コントロールプレーンと同じプロジェクトに作成する必要があります。
- コントロールプレーン全体のロールベースのアクセス制御を設定するために、ClusterRbacConfig は ServicemeshRbacConfig に置き換えられます。これは、コントロールプレーンと同じプロジェクトに作成する必要があります。