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 コミュニティー版でのリクエストヘッダー照合の例

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.headers[<header>]: "value"
Copy to Clipboard Toggle word wrap

Red Hat OpenShift Service Mesh での正規表現を使用したリクエストヘッダー照合

apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
  name: httpbin-client-binding
  namespace: httpbin
spec:
  subjects:
  - user: "cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    properties:
      request.regex.headers[<header>]: "<regular expression>"
Copy to Clipboard Toggle word wrap

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 に送信します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat