5.7. バインディングデータのプロジェクション

本セクションでは、バインディングデータを使用する方法について説明します。

5.7.1. バインディングデータの使用

バッキングサービスがバインディングデータを公開した後、ワークロードがこのデータにアクセスして消費するには、バッキングサービスからワークロードにデータをプロジェクションする必要があります。サービスバインディング Operator は、以下のいずれかの方法でデータセットをワークロードに自動的にプロジェクションします。

  1. ファイルとして (デフォルト)。
  2. 環境変数として。(ServiceBinding リソースから .spec.bindAsFiles パラメーターを設定した後)。

5.7.2. ワークロードコンテナー内にバインディングデータをプロジェうションするディレクトリーパスの設定

デフォルトでは、サービスバインディング Operator は、バインディングデータをファイルとしてワークロードリソースの特定のディレクトリーにマウントします。ワークロードが実行されるコンテナーで設定された SERVICE_BINDING_ROOT 環境変数を使用してディレクトリーパスを設定できます。

例: ファイルとしてマウントされるバインディングデータ

$SERVICE_BINDING_ROOT 1
├── account-database 2
│   ├── type 3
│   ├── provider 4
│   ├── uri
│   ├── username
│   └── password
└── transaction-event-stream 5
    ├── type
    ├── connection-count
    ├── uri
    ├── certificates
    └── private-key

1
ルートディレクトリー。
2 5
バインディングデータを保存するディレクトリー。
3
対応するディレクトリーにプロジェクションされるバインディングデータのタイプを識別する必須の ID。
4
オプション: アプリケーションが接続できるバッキングサービスのタイプを識別できるように、プロバイダーを識別するための ID。

バインディングデータを環境変数として使用するには、環境変数の読み取りに使用できる任意のプログラミング言語の組み込み言語機能を使用します。

例: Python クライアントの使用

import os
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")

5.7.2.1. バインディングデータをファイルとしてプロジェクションするための最終パスの計算

以下の表は、ファイルが指定のディレクトリーにマウントされるときに、バインディクデータプロジェクションの最終パスを計算する方法に関する設定をまとめています。

表5.4 最終パスの計算の概要

SERVICE_BINDING_ROOT最終パス

利用不可

/bindings/<ServiceBinding_ResourceName>

dir/path/root

dir/path/root/<ServiceBinding_ResourceName>

1 つ前の表の <ServiceBinding_ResourceName> エントリーは、カスタムリソース (CR) の . metadata.name セクションで設定する ServiceBinding リソースの名前を指定します。

既存の SERVICE_BINDING_ROOT 環境変数内のバインディングデータにアクセスして使用するには、環境変数を読み取れる任意のプログラミング言語の組み込み言語機能を使用します。

例: Python クライアントの使用

from pyservicebinding import binding
try:
    sb = binding.ServiceBinding()
except binding.ServiceBindingRootMissingError as msg:
    # log the error message and retry/exit
    print("SERVICE_BINDING_ROOT env var not set")
sb = binding.ServiceBinding()
bindings_list = sb.bindings("postgresql")

直前の例では、bindings_list 変数には、postgresql データベースサービスタイプのバインディングデータが含まれます。

5.7.3. バインディングデータのプロジェクション

ワークロード要件および環境に応じて、ファイルまたは環境変数としてバインディングデータをプロジェクションすることができます。

前提条件

  • 以下の概念について理解しておく。

    • ワークロードの環境および要件、指定のサービスと連携する方法。
    • ワークロードリソースでのバインディングデータ消費量。
    • デフォルトの方法でデータプロジェクションの最終パスを計算する方法の設定。
  • バインディングデータがバッキングサービスから公開されている。

手順

  1. ファイルとしてバインディングデータをプロジェクションするには、既存の SERVICE_BINDING_ROOT 環境変数がワークロードが実行されるコンテナーで存在することを確認して、宛先フォルダーを決定します。
  2. バインドデータを環境変数としてプロジェクションするには、カスタムリソース (CR) の ServiceBinding リソースから、 .spec.bindAsFiles パラメーターの値を false に設定します。

5.7.4. 関連情報