This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第6章 サービスカタログコンポーネント
6.1. サービスカタログ リンクのコピーリンクがクリップボードにコピーされました!
6.1.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
マイクロサービスベースのアプリケーションを開発して、クラウドネイティブのプラットフォームで実行する場合には、サービスプロバイダーやプラットフォームに合わせて、異なるリソースをプロビジョンして、その従属、認証情報、設定を共有する方法は多数あります。
開発者がよりシームレスに作業できるように、OpenShift Container Platform には Kubernetes 向けの Open Service Broker API (OSB API) の実装である サービスカタログ が含まれています。これにより、OpenShift Container Platform にデプロイされているアプリケーションを、さまざまな種類のサービスブローカーに接続できるようになります。
サービスカタログでは、クラスター管理者が 1 つの API 仕様を使用して、複数のプラットフォームを統合できます。OpenShift Container Platform web コンソールは、サービスカタログで提供されるサービスブローカーが提供するクラスターサービスカタログを表示するので、これらのサービスを検出、インスタンス化して、アプリケーションで使用できるようにします。
このように、サービスユーザーは異なるプロバイダーが提供する異なるタイプのサービスを簡単かつ一貫性を保ちながら使用できるという利点が得られます。また、サービスプロバイダーは、複数のプラットフォームにアクセスできる統合ポイントから利点を得られます。
6.1.2. 設計 リンクのコピーリンクがクリップボードにコピーされました!
サービスカタログの設計は基本的なワークフローに基づいています。
以下の新規の用語は「概念および用語」でさらに定義されています。
- クラスター管理者は、1 つまたは複数の クラスターサービスブローカー を OpenShift Container Platform クラスターに登録します。これは、デフォルトで提供されているサービスブローカーでインストール時に自動的に行うことも、手動で行うことも可能です。
- 各サービスブローカーは、ユーザーに提供すべき クラスターサービスクラス セットと、これらのサービスのバリエーション (サービスプラン) を、OpenShift Container Platform に指定します。
- OpenShift Container Platform web コンソールまたは CLI を使用して、ユーザーは利用可能なサービスを検出します。たとえば、クラスターサービスクラスは、BestDataBase と呼ばれる database-as-a-service などの、サービスクラスが利用できる可能性があります。
- ユーザーは、クラスターサービスクラスを選択して、自身の新しい インスタンス を要求します。たとえば、サービスは
my_db
という名前の BestDataBase インスタンスなどです。 - ユーザーは、サービスを pod セット (アプリケーション) にリンクまたは バインド します。たとえば、
my_db
サービスインスタンスは、my_app
と呼ばれるユーザーアプリケーションにバインドできます。
ユーザーがリソースのプロビジョニングおよびプロビジョニング解除を要求すると、この要求はサービスカタログに送信され、次に適切なクラスターサービスブローカーに要求が送信されます。サービスによっては、provision
、deprovision
および update
などの操作に時間がかかる可能性があります。クラスターサービスブローカーが利用できない場合には、サービスカタログはこの操作の再試行を続けます。
このインフラストラクチャーでは、OpenShift Container Platform で実行中のアプリケーションと、それが使用するサービスの間で疎結合することができます。こうすることで、これらのサービスを使用するアプリケーションが独自のビジネスロジックにフォーカスし、サービスの管理をプロバイダーに任せることができます。
6.1.2.1. リソースの定義 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーがサービスを使用し終えた場合 (または、請求しなくてもいい場合) には、このサービスインスタンスは削除できます。サービスインスタンスを削除するには、サービスのバインドを先に削除する必要があります。サービスのバインドの削除は、バインド解除 と呼ばれます。削除のプロセスで、削除予定のサービスバインディングを参照するシークレットも削除します。
サービスバインディングが削除されると、サービスインスタンスを削除できあす。サービスインスタンスの削除は プロビジョニング解除 として知られています。
サービスバインディングやサービスインスタンスが含まれるプロジェクトや namespace を削除する場合は、サービスカタログは先にクラスターサービスブローカーに、関連のインスタンスとバインディングを削除するように要求する必要があります。これにより、サービスカタログは、クラスターのサービスブローカーと通信して、プロビジョニング解除を行うまで待つ必要があるので、実際のプロジェクトや namespace の削除が遅延してしまうことが予想されます。通常の状況では、サービスにより異なりますが、数分以上かかる場合があります。
デプロイメントで使用されるサービスバインディングを削除する場合、デプロイメントからバインディングの参照を削除する必要もあります。そうしないと、次のロールアウトは失敗します。
6.1.3. 概念および用語 リンクのコピーリンクがクリップボードにコピーされました!
- クラスターサービスブローカー
クラスターサービスブルーカー は、OSB API 仕様に準拠し、1 つ以上のサービスのセットを管理するサーバーです。ソフトウェアが独自の OpenShift Container Platform クラスター内またはその他の場所でホストされる可能性があります。
クラスター管理者は、クラスターサービスブローカーを表す
ClusterServiceBroker
API リソースを作成して、OpenShift Container Platform クラスターに登録できます。これにより、クラスター管理者はクラスター内で利用可能なクラスターサービスブローカーを使用して新しい種類の管理済みサービスを作成できるようになります。ClusterServiceBroker
リソースは、クラスターサービスブローカーの接続詳細と、サービスセット (およびこれらのサービスのバリエーション) を OpenShift Container Platform に指定すると、ユーザーに提供できるはずです。authInfo
セクションには、クラスターサービスブローカーの認証に使用するデータが含まれている点に特に注意してください。ClusterServiceBroker
リソースの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスターサービスクラス
また、サービスカタログのコンテキストで「サービス」と類義の クラスターサービスクラス は、特定のクラスターサービスブローカーが提供する管理サービスの 1 種です。新しいクラスターサービスブローカーのリソースがクラスターに追加されるたびに、サービスカタログコントローラーは、適切なクラスターサービスブローカーに接続し、サービスオファリングの一覧を取得します。新しい
ClusterServiceClass
リソースは自動的に、クラスターサービスブローカー毎に作成されます。注記さらに、OpenShift Container Platform には、「サービス」と呼ばれるコアとなるコンセプトがあります。サービスとは、内部の負荷分散に関連する別個の Kubernetes リソースです。これらのリソースは、サービスカタログや OSB API のコンテキストで使用する用語と混同しないようにしてください。
ClusterServiceClass
リソースの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスターサービス計画
- クラスターサービスプラン は、クラスターサービスクラスの階層を指します。たとえば、クラスターサービスクラスは、さまざまなレベルの quality-of-service (QoS) を提供するプランを公開し、それそれに異なるコストが関連付けられています。
- サービスインスタンス
サービスインスタンス は、プロビジョニングされたクラスターサービスクラスのインスタンスです。サービスクラスが提供する機能を使用する場合には、新しいサービスインスタンスを作成してください。
新規の
ServiceInstance
リソースを作成した場合には、サービスカタログコントローラーは、適切なクラスターサービスブローカーと接続して、サービスインスタンスをプロビジョニングするように指示を出します。ServiceInstance
リソースの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーション
- アプリケーション という用語は、サービスインスタンス を使用する ユーザーのプロジェクトで実行中の pod など、OpenShift Container Platform デプロイメントのアーティファクトを指します。
- 認証情報
- 認証情報 とは、サービスインスタンスと通信するアプリケーションで必要な情報です。
- サービスバインディング
サービスバインディング は、サービスインスタンスとアプリケーションの間のリンクを指します。サービスバインディングは、アプリケーションからサービスインスタンスを参照して使用できるように希望するクラスターユーザーが作成します。
サービスバインディングの作成時に、サービスカタログコントローラーはサービスインスタンスの接続情報と認証情報を含む Kubernetes のシークレットを作成します。これらのシークレットは通常どおり Pod にマウントできます。また、
PodPresets
とも統合され、これでシークレットの使用方法や使用する pod などを表現できます。ServiceBinding
リソースの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - parameters
パラメーター は、サービスバインディングまたはサービスインスタンスの使用時に、追加のデータをクラスターサービスブローカーに渡すために提供されている特別なフィールドです。唯一のフォーマット要件は、パラメーターを有効な YAML (または JSON) で指定することです。上記の例では、セキュリティーレベルのパラメーターをサービスバインディング要求でクラスターサービスブローカーに渡します。より高度なセキュリティーが必要なパラメーターの場合は、パラメーターをシークレットに配置し、
parametersFrom
を使用して参照します。シークレットを参照するサービスバインディングリソースの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.4. 提供されるクラスターサービスブローカー リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は、サービスカタログで使用する以下のクラスターサービスブローカーを提供します。
6.2. サービスカタログのコマンドラインインターフェース (CLI) リンクのコピーリンクがクリップボードにコピーされました!
6.2.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
サービスカタログと対話する 「基本的なワークフロー」は以下のとおりです。
- クラスター管理者は、ブローカーサーバーをインストールして登録し、ブローカーサーバーのサービスを利用できるようにします。
- ユーザーは、OpenShift プロジェクトでこれらをインスタンス化して、サービスインスタンスとその Pod をリンクすることで、このようなサービスを使用します。
svcat
というサービスカタログコマンドラインインターフェース (CLI) ユーティリティーは、このようなユーザー関連のタスクに対応するために提供されています。oc
コマンドは同様のタスクを実行できますが、svcat
を使用して、サービスカタログのリソースとの対話を簡素化することができます。svcat
は、OpenShift クラスター上に集約された API エンドポイントを使用してサービス API と通信します。
6.2.2. svcat のインストール リンクのコピーリンクがクリップボードにコピーされました!
お使いの Red Hat アカウントに有効な OpenShift Enterprise サブスクリプションがある場合には、Red Hat Subscription Management (RHSM) を使用して RPM として svcat
をインストールできます。
yum install atomic-enterprise-service-catalog-svcat
# yum install atomic-enterprise-service-catalog-svcat
6.2.2.1. クラウドプロバイダーの留意点 リンクのコピーリンクがクリップボードにコピーされました!
Google Compute Engine: Google Cloud Platform では、以下のコマンドを使用して、受信トラフィックを許可するファイアウォールルーツを設定します。
gcloud compute firewall-rules create allow-service-catalog-secure --allow tcp:30443 --description "Allow incoming traffic on 30443 port."
$ gcloud compute firewall-rules create allow-service-catalog-secure --allow tcp:30443 --description "Allow incoming traffic on 30443 port."
6.2.3. svcat の使用 リンクのコピーリンクがクリップボードにコピーされました!
以下のセクションでは、「サービスカタログのワークフロー」に記載のユーザー関連タスクを処理するための一般的なコマンドについて紹介します。svcat --help
コマンドを使用して詳細情報を取得し、他に利用可能なコマンドオプションを表示できます。このセクションでの出力例は、Ansible Service Broker がすでにクラスターにインストールされていることが前提です。
6.2.3.1. ブローカーの詳細取得 リンクのコピーリンクがクリップボードにコピーされました!
利用可能なブローカー一覧の表示、ブローカーカタログの動機、サービスカタログにデプロイされたブローカーの詳細の取得が可能です。
6.2.3.1.1. ブローカーの検索 リンクのコピーリンクがクリップボードにコピーされました!
クラスターにインストールされた全ブローカーを表示します。
svcat get brokers
$ svcat get brokers
NAME URL STATUS
+-------------------------+-------------------------------------------------------------------------------------------+--------+
ansible-service-broker https://asb.openshift-ansible-service-broker.svc:1338/ansible-service-broker Ready
template-service-broker https://apiserver.openshift-template-service-broker.svc:443/brokers/template.openshift.io Ready
6.2.3.1.2. ブローカーカタログの同期 リンクのコピーリンクがクリップボードにコピーされました!
ブローカーからのカタログメタデータを更新します。
svcat sync broker ansible-service-broker
$ svcat sync broker ansible-service-broker
Synchronization requested for broker: ansible-service-broker
6.2.3.1.3. ブローカーの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
ブローカーの詳細を表示します。
svcat describe broker ansible-service-broker
$ svcat describe broker ansible-service-broker
Name: ansible-service-broker
URL: https://openshift-automation-service-broker.openshift-automation-service-broker.svc:1338/openshift-automation-service-broker/
Status: Ready - Successfully fetched catalog entries from broker @ 2018-06-07 00:32:59 +0000 UTC
6.2.3.2. サービスクラスおよびサービスプランの表示 リンクのコピーリンクがクリップボードにコピーされました!
ClusterServiceBroker
リソースの作成時に、サービスカタログコントローラーはブローカーサーバーに対してクエリーを実行して提供する全サービスを検索して、それらのサービスごとにサービスクラス (ClusterServiceClass
) を作成します。さらに、ブローカーのサービスごとにサービスプラン (ClusterServicePlan
) も作成します。
6.2.3.2.1. サービスクラスの表示 リンクのコピーリンクがクリップボードにコピーされました!
利用可能な ClusterServiceClass リソースを表示します。
サービスクラスの詳細を表示します。
6.2.3.2.2. サービスプランの表示 リンクのコピーリンクがクリップボードにコピーされました!
クラスターで利用可能な ClusterServicePlan リソースを表示します。
プランの詳細を表示します。
6.2.3.3. サービスのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
プロビジョニングとは、サービスが利用できるように提供することです。サービスをプロビジョニングするには、サービスインスタンスを作成して、そのインスタンスにバインドする必要があります
6.2.3.3.1. ServiceInstance の リンクのコピーリンクがクリップボードにコピーされました!
サービスインスタンスは、OpenShift namespace 内に作成する必要があります。
新規プロジェクトを作成します。
oc new-project <project-name>
$ oc new-project <project-name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<project-name>
は、プロジェクト名に置き換えます。
以下のコマンドを使用してサービスインスタンスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.3.3.1.1. サービスインスタンスの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
サービスインスタンスの詳細を表示します。
svcat get instance
$ svcat get instance
NAME NAMESPACE CLASS PLAN STATUS
+---------------------+-------------+-------------------+------+--------+
postgresql-instance szh-project rh-postgresql-apb dev Ready
6.2.3.3.2. ServiceBinding の作成 リンクのコピーリンクがクリップボードにコピーされました!
ServiceBinding
リソースを作成する場合:
- サービスカタログコントローラーは、ブローカーサーバーと通信して、バインディングを開始します。
- ブローカーサーバーは、認証情報を作成し、サービスカタログコントローラーに対してその認証情報を発行します。
- サービスカタログコントローラーは、これらの認証情報をシークレットとしてプロジェクトに追加します。
以下のコマンドを使用してサービスバインディングを作成します
6.2.3.3.2.1. サービスバインディングの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
サービスバインディングの詳細を表示します。
svcat get bindings
$ svcat get bindings NAME NAMESPACE INSTANCE STATUS +------------------------------+-------------+---------------------+--------+ mediawiki-postgresql-binding szh-project postgresql-instance Ready
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスのバインディング後にインスタンスの詳細を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.4. リソースの定義 リンクのコピーリンクがクリップボードにコピーされました!
サービスカタログに関連するリソースを削除するには、サービスバインディングのバインドと、サービスインスタンスのプロビジョニングを解除する必要があります
6.2.4.1. サービスバインディングの削除 リンクのコピーリンクがクリップボードにコピーされました!
サービスインスタンスに関連付けられた全サービスバインディングを削除します。
svcat unbind -n <project-name>
$ svcat unbind -n <project-name>
1 \ <instance-name>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドを実行すると、インスタンスに対するサービスバインディングすべてを削除します。インスタンス内から個別のバインディングを削除するには、
svcat unbind -n <project-name> --name <binding-name>
のコマンドを実行します。たとえば、svcat unbind -n szh-project --name mediawiki-postgresql-binding
などです。関連のシークレットが削除されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.4.2. サービスインスタンスの削除 リンクのコピーリンクがクリップボードにコピーされました!
サービスインスタンスのプロビジョニングを解除します。
6.2.4.3. サービスブローカーの削除 リンクのコピーリンクがクリップボードにコピーされました!
サービスカタログのブローカーサービスを削除するには、
ClusterServiceBroker
リソースを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブローカーの
ClusterServiceClass
リソースを表示して、ブローカーが削除されたことを確認します。svcat get classes
$ svcat get classes NAME DESCRIPTION +------+-------------+
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. テンプレートサービスブローカー リンクのコピーリンクがクリップボードにコピーされました!
テンプレートサービスブローカー (TSB) では、OpenShift Container Platform の最初のリリースより同梱されている「デフォルトのインスタントアプリおよびクイックスタートテンプレート」でサービスカタログが確認できるようになります。TSB は、Red Hat、クラスター管理者、ユーザー、サードパーティベンダーの誰が提供したものでも、OpenShift Container Platform「テンプレート」に書き込まれたものはサービスとして提供できます。
デフォルトでは、TSB は openshift プロジェクトからグローバルで入手可能なオブジェクトを表示します。また、クラスター管理者が選択する他のプロジェクトを監視するように設定することも可能です。
6.4. OpenShift Ansible Broker リンクのコピーリンクがクリップボードにコピーされました!
6.4.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Ansible Broker (OAB) は、Ansible playbook bundle (APB) で定義されるアプリケーションを管理する Open Service Broker (OSB) API の実装です。 APB は、Ansible ランタイムと、コンテナイメージに同梱されている Ansible playbook のバンドルで構成されており、OpenShift Container Platform のコンテナーアプリケーションを定義、配信する新しい方法を提供します。APB は Ansible を活用して、複雑なデプロイするを自動化する標準メカニズムを構築します。
OAB の設計はこの基本的なワークフローに従います。
- ユーザーは、OpenShift Container Platform Web コンソールを使用してサービスカタログから利用可能なアプリケーションの一覧を要求します。
- サービスカタログは利用可能なアプリケーションについて OAB に要求します。
- OAB は定義されたコンテナーレジストリーと通信し、利用可能な APB を把握します。
- ユーザーは特定の APB をプロビジョニングする要求を実行します。
- プロビジョニング要求は OAB に移動し、APB でプロビジョニングメソッドを呼び出して、ユーザー要求に対応します。
6.4.2. Ansible Playbook Bundle リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook Bundle (APB) は、Ansible ロールおよび Playbook の既存の投資を利用できる軽量のアプリケーション定義です。
APB は、名前の付いた playbook が含まれる単純なディレクトリーを使用し、プロビジョニングやバインドなどの OSB API アクションを実行します。apb.yml の仕様ファイルで定義するメタデータには、デプロイメント中に使用する必須/任意のパラメーターの一覧が含まれています。
全体の設計および APB の作成方法についての詳細は、『APB Development Guide』を参照してください。