第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 カスタマーポータルの以下のサポート範囲を参照してください。

表6.1 サポート表

サービスバインディング OperatorAPI グループとサポート状況OpenShift Versions

バージョン

binding.operators.coreos.com

servicebinding.io

 

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

    APPSVC-1062

  • 仕様によると、ClusterWorkloadResourceMapping リソースを変更する場合、Service Binding Operator は以前のバージョンの ClusterWorkloadResourceMapping リソースを使用して、今まで反映されていたバインディングデータを削除する必要があります。現在、ClusterWorkloadResourceMapping リソースを変更すると、Service Binding Operator は ClusterWorkloadResourceMapping リソースの最新バージョンを使用してバインディングデータを削除します。その結果、{the servicebinding-title} はバインディングデータを誤って削除する可能性があります。回避策として、以下の手順を実施してください。

    1. 対応する ClusterWorkloadResourceMapping リソースを使用する ServiceBinding リソースをすべて削除します。
    2. ClusterWorkloadResourceMapping リソースを変更します。
    3. 手順 1 で削除した ServiceBinding リソースを再適用します。

    APPSVC-1102

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 リソースを getlist、および 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

    APPSVC-1062

  • 現在、ClusterWorkloadResourceMapping リソースを変更すると、Service Binding Operator は正しい動作を実装しません。回避策として、以下の手順を実施してください。

    1. 対応する ClusterWorkloadResourceMapping リソースを使用する ServiceBinding リソースをすべて削除します。
    2. ClusterWorkloadResourceMapping リソースを変更します。
    3. 手順 1 で削除した ServiceBinding リソースを再適用します。

    APPSVC-1102

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

    APPSVC-1062

  • 現在、ClusterWorkloadResourceMapping リソースを変更すると、Service Binding Operator は正しい動作を実装しません。回避策として、以下の手順を実施してください。

    1. 対応する ClusterWorkloadResourceMapping リソースを使用する ServiceBinding リソースをすべて削除します。
    2. ClusterWorkloadResourceMapping リソースを変更します。
    3. 手順 1 で削除した ServiceBinding リソースを再適用します。

    APPSVC-1102

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 カスタマーポータルの以下のサポート範囲を参照してください。

表6.2 サポート表

機能サービスバインディング Operator 1.0.1

binding.operators.coreos.com API グループ

GA

ServiceBinding.io API グループ

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.crttls.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

    APPSVC-1062

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 カスタマーポータルの以下のサポート範囲を参照してください。

表6.3 サポート表

機能サービスバインディング Operator 1.0

binding.operators.coreos.com API グループ

GA

ServiceBinding.io API グループ

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) をサポートする。

6.1.11. 関連情報