2.4. ディスカバリーセレクターによる Service Mesh のスコープ設定
Service Mesh には、次の基準を満たすワークロードが含まれます。
- コントロールプレーンがワークロードを検出した。
- ワークロードには Envoy プロキシーサイドカーが挿入されている。
デフォルトでは、コントロールプレーンはクラスター全体のすべての namespace でワークロードを検出し、次の結果が得られます。
- 各プロキシーインスタンスは、メッシュに登録されていないワークロードなど、すべての namespace の設定を受信する。
- 適切な Pod または namespace インジェクションラベルを持つワークロードはすべて、プロキシーサイドカーを受信する。
共有クラスターでは、Service Mesh のスコープを特定の namespace のみに制限する必要がある場合があります。このアプローチは、複数のサービスメッシュが同じクラスター内で実行される場合に特に便利です。
2.4.1. ディスカバリーセレクターについて リンクのコピーリンクがクリップボードにコピーされました!
ディスカバリーセレクターを使用すると、メッシュ管理者はコントロールプレーンがアクセスできる namespace を制御できます。管理者は、Kubernetes ラベルセレクターを使用して、コントロールプレーンに表示される namespace の基準を設定し、指定された基準に一致しない namespace を除外します。
Istiod は常に、すべての namespace に対して OpenShift へのウォッチを開きます。ただし、ディスカバリーセレクターは、非常に初期の処理段階で選択されなかったオブジェクトを無視し、コストを最小限に抑えます。
discoverySelectors
フィールドは、namespace のラベルに適用される Kubernetes セレクターの配列を受け入れます。さまざまなユースケースに合わせて各セレクターを設定できます。
-
カスタムラベル名と値。たとえば、すべての namespace を
istio-discovery=enabled
というラベルで設定します。 -
OR ロジックを使用したセットベースのセレクターを使用した namespace ラベルのリスト。たとえば、
istio-discovery=enabled
またはregion=us-east1
を使用して namespace を設定します。 -
namespaces の包含と除外。たとえば、
istio-discovery=enabled
かつラベルapp=helloworld
を使用して namespace を設定します。
ディスカバリーセレクターはセキュリティー境界としては機能しません。discoverySelector
フィールドを設定した場合でも、Istiod はすべての namespace に引き続きアクセスできます。
2.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
$ oc label namespace istio-system istio-discovery=enabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio
コントロールプレーンリソースを変更して、同じラベルを持つdiscoverySelectors
セクションを含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio CR を適用します。
oc apply -f istio.yaml
$ oc apply -f istio.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
サービスメッシュの一部となるワークロードを含むすべての namespace に、
discoverySelector
ラベルと、必要に応じて適切な Istio インジェクションラベルの両方があることを確認します。
ディスカバリーセレクターは、1 つのサービスメッシュのスコープを絞り込む場合に役立ちます。また、単一のクラスター内に複数の Istio コントロールプレーンをデプロイすると、それぞれのコントロールプレーンが対象とする範囲を制限するために欠かせない機能です。