6.2. サービスバインディング Operator
アプリケーション開発者は、ワークロードをビルドして接続するバッキングサービスへのアクセスが必要です。ワークロードをバッキングサービスに接続するのは、提案するシークレットにアクセスしてワークロードで消費する方法がサービスプロバイダーごとに異なるので、困難です。さらにワークロードのバインドおよびサービスのバッキングを手動で設定して保守する場合には、プロセスが煩雑で効率が悪く、エラーが発生しやすくなります。
サービスバインディング Operator を使用すると、アプリケーション開発者は、手作業でバインディング接続を設定する手順なしに、オペレーターが管理するバッキングサービスとワークロードを簡単にバインドできます。
6.2.1. サービスバインディングの用語
このセクションでは、サービスバインディングで使用される基本用語の概要を説明します。
| サービスバインディング | サービスに関する情報をワークロードに提供するアクションの表現。たとえば、Java アプリケーションと必要なデータベース間で認証情報の交換を確立することなどです。 | 
| バッキングサービス | アプリケーションが通常の操作の一部としてネットワーク経由で使用するサービスまたはソフトウェア。たとえば、データベース、メッセージ、REST エンドポイント、イベントストリーム、アプリケーション、アプリケーションパフォーマンスモニター (APM)、またはハードウェアセキュリティーモジュール (HSM) が含まれます。 | 
| ワークロード (アプリケーション) | コンテナー内で実行されているプロセス。たとえば、Sprsh Boot アプリケーション、NodeJS Express アプリケーション、Ruby on Rails アプリケーションなどが含まれます。 | 
| バインディングデータ | クラスター内で他のリソースの動作を設定するのに使用するサービスに関する情報。たとえば、認証情報、接続の詳細、ボリュームマウント、またはシークレットが含まれます。 | 
| バインディング接続 | バインド可能なバッキングサービスとそのバッキングサービスを必要とするアプリケーションなど、接続されたコンポーネント間の相互作用を確立する接続。 | 
6.2.2. サービスバインディング Operator
					サービスバインディング Operator は、サービスバインディングのコントローラーおよび付随のカスタムリソース定義 (CRD) で設定されます。サービスバインディング Operator は、ワークロードおよびバッキングサービスのデータプレーンを管理します。サービスバインディングコントローラーは、バッキングサービスのコントロールプレーン提供のデータを読み取ります。次に、ServiceBinding リソースで指定されるルールに従って、このデータをワークロードに追加します。
				
これにより、サービスバインディング Operator は、ワークロードとのバインディングデータを自動的に収集して共有することで、サービスはバッキングサービスまたは外部サービスを使用できます。このプロセスには、バッキングサービスをバインド可能にして、ワークロードとサービスをバインドすることが含まれます。
6.2.2.1. Operator の管理するサービスをバインド可能にする
サービスをバインド可能にするには、Operator プロバイダーは、ワークロードに必要なバインドデータを公開して Operator が提供するサービスとバインドする必要があります。バインディングデータは、バッキングサービスを管理する Operator の CRD で、アノテーションか、記述子として指定できます。
6.2.2.2. ワークロードをバッキングサービスとバインドする
						サービスバインディング Operator を使用して、アプリケーション開発者はバインディング接続を確立する意思を宣言する必要があります。バッキングサービスを参照する ServiceBinding CR を作成する必要があります。このアクションにより、サービスバインディング Operator がトリガーされ、公開されたバインディングデータがワークロードにプロジェクションされます。サービスバインディング Operator は、宣言された意図を受けとり、バッキングサービスとワークロードをバインドします。
					
サービスバインディング Operator の CRD は以下の API をサポートします。
- 
								Service Binding: binding.operators.coreos.comAPI グループ
- 
								servicebinding.ioAPI グループを使用した サービスバインディング (仕様 API)。
サービスバインディング Operator を使用すると、以下を行うことができます。
- ワークロードを Operator 管理のバッキングサービスとバインドします。
- バインディングデータの設定を自動化します。
- サービスへのアクセスをプロビジョニングおよび管理するためのロータッチな管理エクスペリエンスをサービス Operator に提供します。
- クラスター環境の不一致をなくす一貫性がある宣言型サービスバインディングメソッドを使用し、開発ライフサイクルを充実させます。
6.2.3. 主な特長
- サービスからのバインディングデータの公開 - CRD、カスタムリソース (CR)、またはリソースに存在するアノテーションをベースにする。
 
- ワークロードのプロジェクション - ボリュームマウントを使用してバインディングデータをファイルとしてプロジェクションする。
- バインディングデータを環境変数としてプロジェクションする。
 
- サービスバインディングオプション - ワークロード namespace とは異なる namespace でバッキングサービスをバインドする。
- バインディングデータを特定のコンテナーワークロードにプロジェクションする。
- バッキングサービス CR が所有するリソースからバインディングデータを自動的に検出する。
- 公開されるバインディングデータからカスタムバインディングデータを作成する。
- 
									PodSpec以外のワークロードリソースをサポートする。
 
- セキュリティー - ロールベースアクセス制御 (RBAC) をサポートする。
 
6.2.4. API の違い
サービスバインディング Operator の CRD は以下の API をサポートします。
- 
							Service Binding: binding.operators.coreos.comAPI グループ
- 
							servicebinding.ioAPI グループを使用した サービスバインディング (仕様 API)。
これらの API グループは両方とも類似した機能を持っていますが、完全に同一ではありません。これらの API グループ間の相違点の完全なリストを次に示します。
| 機能 | binding.operators.coreos.comAPI グループによるサポート | servicebinding.ioAPI グループによるサポート | 注意 | 
|---|---|---|---|
| プロビジョニングされたサービスへのバインド | はい | はい | 該当なし (該当なし) | 
| ダイレクトシークレットプロジェクション | はい | はい | 該当なし (該当なし) | 
| ファイルとしてバインド | はい | はい | 
 | 
| 環境変数としてバインド | はい | はい | 
 | 
| ラベルセレクターを使用したワークロードの選択 | はい | はい | 該当なし (該当なし) | 
| 
									Detecting binding resources ( | はい | いいえ | 
									 | 
| 命名ストラテジー | はい | いいえ | 
									 | 
| コンテナーパス | はい | 部分使用 | 
									 | 
| コンテナー名のフィルタリング | いいえ | はい | 
									 | 
| Secret path | はい | いいえ | 
									 | 
| 代替バインディングソース (たとえば、アノテーションからのバインディングデータ) | はい | サービスバインディング Operator によって許可される | この仕様では、プロビジョニングされたサービスとシークレットからバインディングデータを取得するためのサポートが必要です。ただし、仕様を厳密に読むと、他のバインディングデータソースのサポートが許可されていることが示唆されます。この事実を利用して、Service Binding Operator はさまざまなソースからバインディングデータを取得できます (たとえば、アノテーションからバインディングデータを取得するなど)。Service Binding Operator は、両方の API グループでこれらのソースをサポートします。 |