第6章 アプリケーションのサービスへの接続
6.1. Service Binding Operator のリリースノート
サービスバインディング Operator は、サービスバインディングのコントローラーおよび付随のカスタムリソース定義 (CRD) で設定されます。サービスバインディング Operator は、ワークロードおよびバッキングサービスのデータプレーンを管理します。サービスバインディングコントローラーは、バッキングサービスのコントロールプレーン提供のデータを読み取ります。次に、ServiceBinding
リソースで指定されるルールに従って、このデータをワークロードに追加します。
サービスバインディング Operator を使用すると、以下を行うことができます。
- ワークロードを Operator 管理のバッキングサービスと共にバインドします。
- バインディングデータの設定を自動化します。
- サービスオペレーターは簡単にサービスへのアクセスのプロビジョニングや管理が行えます。
- クラスター環境の不一致をなくす一貫性がある宣言型サービスバインディングメソッドを使用し、開発ライフサイクルを充実させます。
サービスバインディング Operator のカスタムリソース定義 (CRD) は以下の API をサポートします。
-
Service Binding:
binding.operators.coreos.com
API グループ -
servicebinding.io
API グループを使用した サービスバインディング (仕様 API)。
6.1.1. サポート表
次の表の一部の機能は、テクノロジープレビュー 段階にあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
- TP: テクノロジープレビュー機能
- GA: 一般公開機能
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
サービスバインディング Operator | API グループとサポート状況 | OpenShift Versions | |
---|---|---|---|
バージョン |
|
| |
1.3.3 | GA | GA | 4.9-4.12 |
1.3.1 | GA | GA | 4.9-4.11 |
1.3 | GA | GA | 4.9-4.11 |
1.2 | GA | GA | 4.7-4.11 |
1.1.1 | GA | TP | 4.7-4.10 |
1.1 | GA | TP | 4.7-4.10 |
1.0.1 | GA | TP | 4.7-4.9 |
1.0 | GA | TP | 4.7-4.9 |
6.1.2. 多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。
6.1.3. Service Binding Operator 1.3.3 のリリースノート
Service Binding Operator 1.3.3 は、OpenShift Container Platform 4.9、4.10、4.11、および 4.12 で利用できるようになりました。
6.1.3.1. 修正された問題
-
この更新の前に、Service Binding Operator のセキュリティー脆弱性
CVE-2022-41717
が指摘されていました。この更新により、CVE-2022-41717
エラーが修正され、golang.org/x/net
パッケージが v0.0.0-20220906165146-f3363e06e74c から v0.4.0 に更新されます。APPSVC-1256 - この更新の前は、プロビジョニングされたサービスは、それぞれのリソースに servicebinding.io/provisioned-service: true アノテーションが設定されている場合にのみ検出され、他のプロビジョニングされたサービスは検出されませんでした。この更新により、検出メカニズムは status.binding.name 属性に基づいて、すべてのプロビジョニングされたサービスを正しく識別します。APPSVC-1204
6.1.4. Service Binding Operator 1.3.1 のリリースノート
Service Binding Operator 1.3.1 が OpenShift Container Platform 4.9、4.10、および 4.11 で利用できるようになりました。
6.1.4.1. 修正された問題
-
この更新以前に、Service Binding Operator におけるセキュリティーの脆弱性
CVE-2022-32149
が指摘されていました。この更新により、CVE-2022-32149
のエラーが修正され、golang.org/x/text
パッケージが v0.3.7 から v0.3.8 に更新されます。APPSVC-1220
6.1.5. Service Binding Operator 1.3 のリリースノート
Service Binding Operator 1.3 が OpenShift Container Platform 4.9、4.10、および 4.11 で利用できるようになりました。
6.1.5.1. 削除された機能
- Service Binding Operator 1.3 では、リソースの使用率を向上させるために Operator Lifecycle Manager (OLM) 記述子機能が削除されました。OLM 記述子の代わりに、CRD アノテーションを使用してバインディングデータを宣言できます。
6.1.6. Service Binding Operator 1.2 のリリースノート
Service Binding Operator 1.2 が OpenShift Container Platform 4.7、4.8、4.9、4.10、および 4.11 で利用可能になりました。
6.1.6.1. 新機能
このセクションでは、Service Binding Operator 1.2 の主な新機能について説明します。
-
optional
のフラグ値をtrue
に設定して、Service Binding Operator がアノテーションのオプションフィールドを考慮できるようにします。 -
servicebinding.io/v1beta1
リソースのサポート。 - ワークロードの存在を必要とせずに関連するバインディングシークレットを公開することにより、バインド可能なサービスの検出可能性が向上します。
6.1.6.2. 既知の問題
- 現在、OpenShift Container Platform 4.11 に Service Binding Operator をインストールすると、Service Binding Operator のメモリーフットプリントが予想される制限を超えて増加します。ただし、使用率が低い場合、メモリーフットプリントは環境またはシナリオの予想範囲内にとどまります。OpenShift Container Platform 4.10 と比較すると、負荷がかかると、平均および最大メモリーフットプリントの両方が大幅に増加します。この問題は、Service Binding Operator の以前のバージョンでも明らかです。現在、この問題に対する回避策はありません。APPSVC-1200
-
デフォルトでは、展開されたファイルのアクセス許可は 0644 に設定されています。Service Binding Operator は、サービスが
0600
などの特定の権限を想定している場合に問題を引き起こす Kubernetes のバグにより、特定の権限を設定できません。回避策として、ワークロードリソース内で実行されているプログラムまたはアプリケーションのコードを変更して、ファイルを/tmp
ディレクトリーにコピーし、適切な権限を設定することができます。APPSVC-1127 現時点で、Service Binding Operator を 1 つの namespace インストールモードでインストールする場合に発生する基地の問題があります。適切な namespace スコープのロールベースアクセス制御 (RBAC) ルールがないため、サービスバインディング Operator が自動的に検出およびバインドできる既知の Operator がサポートするいくつかのサービスへのアプリケーションのバインドが正常に行われません。これが発生すると、次の例のようなエラーメッセージが生成されます。
エラーメッセージの例
`postgresclusters.postgres-operator.crunchydata.com "hippo" is forbidden: User "system:serviceaccount:my-petclinic:service-binding-operator" cannot get resource "postgresclusters" in API group "postgres-operator.crunchydata.com" in the namespace "my-petclinic"`
回避策 1:
all namespaces
インストールモードでサービスバインディング Operator をインストールします。その結果、適切なクラスタースコープの RBAC ルールが存在し、バインディングが正常に実行されるようになります。回避策 2: サービスバインディング Operator を
all namespaces
インストールモードでインストールできない場合は、サービスバインディング Operator がインストールされている namespace に以下のロールバインディングをインストールします。例:Crunchy Postgres Operator のロールバインディング
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: service-binding-crunchy-postgres-viewer subjects: - kind: ServiceAccount name: service-binding-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: service-binding-crunchy-postgres-viewer-role
仕様によると、
ClusterWorkloadResourceMapping
リソースを変更する場合、Service Binding Operator は以前のバージョンのClusterWorkloadResourceMapping
リソースを使用して、今まで反映されていたバインディングデータを削除する必要があります。現在、ClusterWorkloadResourceMapping
リソースを変更すると、Service Binding Operator はClusterWorkloadResourceMapping
リソースの最新バージョンを使用してバインディングデータを削除します。その結果、{the servicebinding-title} はバインディングデータを誤って削除する可能性があります。回避策として、以下の手順を実施してください。-
対応する
ClusterWorkloadResourceMapping
リソースを使用するServiceBinding
リソースをすべて削除します。 -
ClusterWorkloadResourceMapping
リソースを変更します。 -
手順 1 で削除した
ServiceBinding
リソースを再適用します。
-
対応する
6.1.7. Service Binding Operator 1.1.1 のリリースノート
Service Binding Operator 1.1.1 が OpenShift Container Platform 4.7、4.8、4.9、4.10 で利用可能になりました。
6.1.7.1. 修正された問題
-
この更新以前に、Service Binding Operator Helm チャートにおけるセキュリティーの脆弱性
CVE-2021-38561
が指摘されていました。この更新により、CVE-2021-38561
のエラーが修正され、golang.org/x/text
パッケージが v0.3.6 から v0.3.7 に更新されます。APPSVC-1124 -
この更新以前は、Developer Sandbox のユーザーには、
ClusterWorkloadResourceMapping
リソースを読み取るための十分なパーミッションがありませんでした。その結果、Service Binding Operator はすべてのサービスバインディングの成功を妨げていました。今回の更新により、Service Binding Operator には、Developer Sandbox ユーザーを含め、認証されたサブジェクトの適切なロールベースのアクセス制御 (RBAC) ルールが含まれるようになりました。これらの RBAC ルールにより、Service Binding Operator は Developer Sandbox ユーザーのClusterWorkloadResourceMapping
リソースをget
、list
、およびwatch
して、サービスバインディングを正常に処理できます。APPSVC-1135
6.1.7.2. 既知の問題
現時点で、Service Binding Operator を 1 つの namespace インストールモードでインストールする場合に発生する基地の問題があります。適切な namespace スコープのロールベースアクセス制御 (RBAC) ルールがないため、サービスバインディング Operator が自動的に検出およびバインドできる既知の Operator がサポートするいくつかのサービスへのアプリケーションのバインドが正常に行われません。これが発生すると、次の例のようなエラーメッセージが生成されます。
エラーメッセージの例
`postgresclusters.postgres-operator.crunchydata.com "hippo" is forbidden: User "system:serviceaccount:my-petclinic:service-binding-operator" cannot get resource "postgresclusters" in API group "postgres-operator.crunchydata.com" in the namespace "my-petclinic"`
回避策 1:
all namespaces
インストールモードでサービスバインディング Operator をインストールします。その結果、適切なクラスタースコープの RBAC ルールが存在し、バインディングが正常に実行されるようになります。回避策 2: サービスバインディング Operator を
all namespaces
インストールモードでインストールできない場合は、サービスバインディング Operator がインストールされている namespace に以下のロールバインディングをインストールします。例:Crunchy Postgres Operator のロールバインディング
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: service-binding-crunchy-postgres-viewer subjects: - kind: ServiceAccount name: service-binding-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: service-binding-crunchy-postgres-viewer-role
現在、
ClusterWorkloadResourceMapping
リソースを変更すると、Service Binding Operator は正しい動作を実装しません。回避策として、以下の手順を実施してください。-
対応する
ClusterWorkloadResourceMapping
リソースを使用するServiceBinding
リソースをすべて削除します。 -
ClusterWorkloadResourceMapping
リソースを変更します。 -
手順 1 で削除した
ServiceBinding
リソースを再適用します。
-
対応する
6.1.8. Service Binding Operator 1.1 のリリースノート
サービスバインディング Operator が OpenShift Container Platform 4.7、4.8、4.9、4.10 で利用可能になりました。
6.1.8.1. 新機能
このセクションでは、Service Binding Operator 1.1 の主な新機能について説明します。
サービスバインディングオプション
- ワークロードリソースマッピング: セカンダリーワークロードに対してバインディングデータを投影する必要がある場所を正確に定義します。
- ラベルセレクターを使用して新しいワークロードをバインドします。
6.1.8.2. 修正された問題
- この更新以前は、ラベルセレクターを使用してワークロードを取得していたサービスバインディングは、指定されたラベルセレクターに一致する新しいワークロードにサービスバインディングデータを投影しませんでした。その結果、Service Binding Operator はそのような新しいワークロードを定期的にバインドできませんでした。今回の更新により、サービスバインディングは、指定されたラベルセレクターに一致する新しいワークロードにサービスバインディングデータを投影するようになりました。Service Binding Operator は、定期的に新しいワークロードを見つけてバインドを試みるようになりました。APPSVC-1083
6.1.8.3. 既知の問題
現時点で、Service Binding Operator を 1 つの namespace インストールモードでインストールする場合に発生する基地の問題があります。適切な namespace スコープのロールベースアクセス制御 (RBAC) ルールがないため、サービスバインディング Operator が自動的に検出およびバインドできる既知の Operator がサポートするいくつかのサービスへのアプリケーションのバインドが正常に行われません。これが発生すると、次の例のようなエラーメッセージが生成されます。
エラーメッセージの例
`postgresclusters.postgres-operator.crunchydata.com "hippo" is forbidden: User "system:serviceaccount:my-petclinic:service-binding-operator" cannot get resource "postgresclusters" in API group "postgres-operator.crunchydata.com" in the namespace "my-petclinic"`
回避策 1:
all namespaces
インストールモードでサービスバインディング Operator をインストールします。その結果、適切なクラスタースコープの RBAC ルールが存在し、バインディングが正常に実行されるようになります。回避策 2: サービスバインディング Operator を
all namespaces
インストールモードでインストールできない場合は、サービスバインディング Operator がインストールされている namespace に以下のロールバインディングをインストールします。例:Crunchy Postgres Operator のロールバインディング
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: service-binding-crunchy-postgres-viewer subjects: - kind: ServiceAccount name: service-binding-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: service-binding-crunchy-postgres-viewer-role
現在、
ClusterWorkloadResourceMapping
リソースを変更すると、Service Binding Operator は正しい動作を実装しません。回避策として、以下の手順を実施してください。-
対応する
ClusterWorkloadResourceMapping
リソースを使用するServiceBinding
リソースをすべて削除します。 -
ClusterWorkloadResourceMapping
リソースを変更します。 -
手順 1 で削除した
ServiceBinding
リソースを再適用します。
-
対応する
6.1.9. Service Binding Operator 1.0.1 のリリースノート
サービスバインディング Operator が OpenShift Container Platform 4.7、4.8 および 4.9 で利用可能になりました。
サービスバインディング Operator 1.0.1 は、以下で実行されている OpenShift Container Platform 4.9 以降をサポートします。
- IBM Power Systems
- IBM Z および LinuxONE
サービスバインディング Operator 1.0.1 のカスタムリソース定義 (CRD) は以下の API をサポートします。
-
Service Binding:
binding.operators.coreos.com
API グループ Service Binding (Spec API テクノロジープレビュー):
servicebinding.io
API グループ重要servicebinding.io
API グループを備えた Service Binding (Spec API テクノロジープレビュー) は、テクノロジープレビュー機能のみでの提供です。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
6.1.9.1. サポート表
現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
- TP: テクノロジープレビュー機能
- GA: 一般公開機能
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
機能 | サービスバインディング Operator 1.0.1 |
---|---|
| GA |
| TP |
6.1.9.2. 修正された問題
-
今回の更新以前は、
postgresql.k8s.enterpriesedb.io/v1
API のCluster
カスタムリソース (CR) からデータ値をバインドすると、CR の.metadata.name
フィールドからhost
バインディング値が収集されていました。収集されたバインディング値は間違ったホスト名であり、正しいホスト名は.status.writeService
フィールドで確認できます。今回の更新により、サービスバインディング Operator がバッキングサービス CR からバインディングデータ値を公開するために使用するアノテーションが変更され、.status.writeService
フィールドからhost
バインディング値を収集するようになりました。サービスバインディング Operator はこれらの変更されたアノテーションを使用して、host
およびprovider
のバインディングに正しいホスト名を反映します。APPSVC-1040 -
今回の更新以前は、
postgres-operator.crunchydata.com/v1beta1
API のPostgresCluster
CR をバインドする際に、バインディングデータ値にデータベース証明書の値が含まれませんでした。その結果、アプリケーションはデータベースへの接続に失敗しました。今回の更新により、サービスバインディング Operator がバッキングサービス CR からバインディングデータを公開するために使用するアノテーションへの変更に、データベース証明書が含まれるようになりました。サービスバインディング Operator はこれらの変更されたアノテーションを使用して、正しいca.crt
、tls.crt
、およびtls.key
証明書ファイルを反映します。APPSVC-1045 -
今回の更新以前は、
pxc.percona.com
API のPerconaXtraDBCluster
カスタムリソース (CR) をバインドする場合、バインディングデータ値にport
およびdatabase
の値が含まれませんでした。アプリケーションがデータベースサービスに正常に接続するには、これらのバインディング値とすでに反映されている他の値が必要です。今回の更新により、サービスバインディング Operator がバッキングサービス CR からバインディングデータ値を公開するために使用するアノテーションが変更され、追加のpor
およびdatabase
バインディング値を反映するようになりました。サービスバインディング Operator はこれらの変更されたアノテーションを使用して、アプリケーションがデータベースサービスに正常に接続するために使用できるバインディング値の完全なセットを反映します。APPSVC-1073
6.1.9.3. 既知の問題
現時点で、単一の namespace インストールモードでサービスバインディング Operator をインストールする際に、適切な namespace スコープのロールベースアクセス制御 (RBAC) ルールがないため、サービスバインディング Operator が自動的に検出およびバインドできる既知の Operator がサポートするいくつかのサービスへのアプリケーションのバインドが正常に行われません。さらに、以下のエラーメッセージが生成されます。
エラーメッセージの例
`postgresclusters.postgres-operator.crunchydata.com "hippo" is forbidden: User "system:serviceaccount:my-petclinic:service-binding-operator" cannot get resource "postgresclusters" in API group "postgres-operator.crunchydata.com" in the namespace "my-petclinic"`
回避策 1:
all namespaces
インストールモードでサービスバインディング Operator をインストールします。その結果、適切なクラスタースコープの RBAC ルールが存在し、バインディングが正常に実行されるようになります。回避策 2: サービスバインディング Operator を
all namespaces
インストールモードでインストールできない場合は、サービスバインディング Operator がインストールされている namespace に以下のロールバインディングをインストールします。例:Crunchy Postgres Operator のロールバインディング
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: service-binding-crunchy-postgres-viewer subjects: - kind: ServiceAccount name: service-binding-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: service-binding-crunchy-postgres-viewer-role
6.1.10. サービスバインディング Operator 1.0 のリリースノート
サービスバインディング Operator が OpenShift Container Platform 4.7、4.8 および 4.9 で利用可能になりました。
サービスバインディング Operator 1.0 のカスタムリソース定義 (CRD) は以下の API をサポートします。
-
Service Binding:
binding.operators.coreos.com
API グループ Service Binding (Spec API テクノロジープレビュー):
servicebinding.io
API グループ重要servicebinding.io
API グループを備えた Service Binding (Spec API テクノロジープレビュー) は、テクノロジープレビュー機能のみでの提供です。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
6.1.10.1. サポート表
現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
- TP: テクノロジープレビュー機能
- GA: 一般公開機能
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
機能 | サービスバインディング Operator 1.0 |
---|---|
| GA |
| TP |
6.1.10.2. 新機能
サービスバインディング Operator 1.0 は、以下で実行されている OpenShift Container Platform 4.9 以降をサポートします。
- IBM Power Systems
- IBM Z および LinuxONE
このセクションでは、サービスバインディング Operator 1.0 の主な新機能について説明します。
サービスからのバインディングデータの公開
- CRD、カスタムリソース (CR)、またはリソースに存在するアノテーションをベースにする。
- Operator Lifecycle Manager(OLM) 記述子にある記述子をベースにする。
- プロビジョニングされたサービスのサポート
ワークロードのプロジェクション
- ボリュームマウントを使用してバインディングデータをファイルとしてプロジェクションする。
- バインディングデータを環境変数としてプロジェクションする。
サービスバインディングオプション
- ワークロード namespace とは異なる namespace でバッキングサービスをバインドする。
- バインディングデータを特定のコンテナーワークロードにプロジェクションする。
- バッキングサービス CR が所有するリソースからバインディングデータを自動的に検出する。
- 公開されるバインディングデータからカスタムバインディングデータを作成する。
-
PodSpec
以外のワークロードリソースをサポートする。
セキュリティー
- ロールベースアクセス制御 (RBAC) をサポートする。