OpenShift Service Mesh 3.0 is a Technology Preview feature only
Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. This documentation is a work in progress and might not be complete or fully tested.1.4. ディスカバリーセレクターによる Service Mesh のスコープ設定
Service Mesh には、次の基準を満たすワークロードが含まれます。
- コントロールプレーンがワークロードを検出した。
- ワークロードには Envoy プロキシーサイドカーが挿入されている。
デフォルトでは、コントロールプレーンはクラスター全体のすべての namespace でワークロードを検出し、次の結果が得られます。
- 各プロキシーインスタンスは、メッシュに登録されていないワークロードなど、すべての namespace の設定を受信する。
- 適切な Pod または namespacde インジェクションラベルを持つワークロードはすべて、プロキシーサイドカーを受信する。
共有クラスターでは、Service Mesh のスコープを特定の namespace のみに制限する必要がある場合があります。このアプローチは、複数のサービスメッシュが同じクラスター内で実行される場合に特に便利です。
1.4.1. ディスカバリーセレクターについて
ディスカバリーセレクターを使用すると、メッシュ管理者はコントロールプレーンがアクセスできる namespace を制御できます。管理者は、Kubernetes ラベルセレクターを使用して、コントロールプレーンに表示される namespace の基準を設定し、指定された基準に一致しない namespace を除外します。
Istiod は常に、すべての namespace に対して OpenShift へのウォッチを開きます。ただし、ディスカバリーセレクターは、非常に初期の処理段階で選択されなかったオブジェクトを無視し、コストを最小限に抑えます。
discoverySelectors
フィールドは、namespace のラベルに適用される Kubernetes セレクターの配列を受け入れます。さまざまなユースケースに合わせて各セレクターを設定できます。
-
カスタムラベル名と値。たとえば、すべての namespace を
istio-discovery=enabled
というラベルで設定します。 -
OR ロジックを使用したセットベースのセレクターを使用した namespace ラベルのリスト。たとえば、
istio-discovery=enabled
またはリージョン=us-east1
を使用して namespace を設定します。 -
namespaces の包含と除外。たとえば、
istio-discovery=enabled
かつラベルapp=helloworld
を使用して namespace を設定します。
ディスカバリーセレクターはセキュリティー境界としては機能しません。discoverySelector
フィールドを設定した場合でも、Istiod はすべての namespace に引き続きアクセスできます。
1.4.2. ディスカバリーセレクターを使用してサービスメッシュのスコープを設定する
サービスメッシュに含める namespace がわかっている場合は、インストール中またはインストール後に、Istio
リソースの meshConfig.discoverySelectors
セクションに必要なセレクターを追加して、discoverySelectors
を設定します。たとえば、istio-discovery=enabled
というラベルの付いた namespace のみを検出するように Istio を設定します。
前提条件
- OpenShift Service Mesh Operator がインストールされている。
- Istio CNI リソースが作成されている。
手順
Istio コントロールプレーンを含む namespace にラベルを追加します (例:
istio-system
システムの namespace)。$ oc label namespace istio-system istio-discovery=enabled
Istio
コントロールプレーンリソースを変更して、同じラベルのdiscoverySelectors
セクションを含めます。kind: Istio apiVersion: sailoperator.io/v1alpha1 metadata: name: default spec: namespace: istio-system values: meshConfig: discoverySelectors: - matchLabels: istio-discovery: enabled
Istio CR を適用します。
$ oc apply -f istio.yaml
-
サービスメッシュの一部となるワークロードを含むすべての namespace に、
discoverySelector
ラベルと、必要に応じて適切な Istio インジェクションラベルの両方があることを確認します。
ディスカバリーセレクターは、1 つのサービスメッシュのスコープを絞り込む場合に役立ちます。また、単一のクラスター内に複数の Istio コントロールプレーンをデプロイすると、それぞれのコントロールプレーンが対象とする範囲を制限するために欠かせない機能です。