第5章 アプリケーションのサービスへの接続
5.1. Service Binding Operator のリリースノート
サービスバインディング Operator は、サービスバインディングのコントローラーおよび付随のカスタムリソース定義 (CRD) で設定されます。サービスバインディング Operator は、ワークロードおよびバッキングサービスのデータプレーンを管理します。サービスバインディングコントローラーは、バッキングサービスのコントロールプレーン提供のデータを読み取ります。次に、ServiceBinding
リソースで指定されるルールに従って、このデータをワークロードに追加します。
サービスバインディング Operator を使用すると、以下を行うことができます。
- ワークロードを Operator 管理のバッキングサービスと共にバインドします。
- バインディングデータの設定を自動化します。
- サービスオペレーターは簡単にサービスへのアクセスのプロビジョニングや管理が行えます。
- クラスター環境の不一致をなくす一貫性がある宣言型サービスバインディングメソッドを使用し、開発ライフサイクルを充実させます。
5.1.1. 多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。
5.1.2. 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 のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.1.2.1. サポート表
現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
- TP: テクノロジープレビュー機能
- GA: 一般公開機能
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
機能 | サービスバインディング Operator 1.0.1 |
---|---|
| GA |
| TP |
5.1.2.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
5.1.2.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
5.1.3. サービスバインディング 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 のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.1.3.1. サポート表
現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
- TP: テクノロジープレビュー機能
- GA: 一般公開機能
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
機能 | サービスバインディング Operator 1.0 |
---|---|
| GA |
| TP |
5.1.3.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) をサポートする。