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.第18章 外部サービスの統合
18.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
数多くの OpenShift Container Platform アプリケーションは外部データベースや外部 SaaS エンドポイントなどの外部リソースを使用します。これらの外部リソースはネイティブの OpenShift Container Platform サービスとしてモデリングされ、アプリケーションが他の内部サービスの場合と同様にそれらを使用できるようにします。
「Egress トラフィック」はファイアウォールルールまたは Egress ルーターで制御できます。これにより、アプリケーションサービスの静的 IP アドレスの使用が許可されます。
18.2. 外部データベースのサービスの定義 リンクのコピーリンクがクリップボードにコピーされました!
外部サービスの最も一般的なタイプとして外部データベースを挙げることができます。外部データベースをサポートするには、アプリケーションで以下が必要になります。
- 通信するエンドポイント。
以下を含む認証情報および位置情報 (coordinate)。
- ユーザー名
- パスフレーズ
- データベース名
外部データベースと統合するためのソリューションには、以下が含まれます。
-
Serviceオブジェクト: SaaS プロバイダーを OpenShift Container Platform サービスとして表示します。 -
1 つ以上のサービスの
Endpoint。 - 認証情報を含む適切な Pod の環境変数。
以下の手順は、外部 MySQL データベースとの統合シナリオについて説明しています。
18.2.1. 手順 1: サービスの定義 リンクのコピーリンクがクリップボードにコピーされました!
サービスは、IP アドレスとエンドポイントを指定するか、または完全修飾ドメイン名 (FQDN) を指定し定義することができます。
18.2.1.1. IP アドレスの使用 リンクのコピーリンクがクリップボードにコピーされました!
外部データベースを表す「OpenShift Container Platform サービス」を作成します。これは内部サービスを作成する場合と同様ですが、サービスの
Selectorフィールドが異なります。内部 OpenShift Container Platform サービスは
Selectorフィールドで「ラベル」を使用して Pod をサービスに関連付けます。EndpointsControllerシステムコンポーネントは、セレクターに一致する Pod でセレクターを指定するサービスのエンドポイントを同期します。「サービスプロキシー」と OpenShift Container Platform 「ルーター」は、サービスに対する要求を、サービスのエンドポイント全体で負荷分散します。外部リソースを表すサービスには関連付けられる Pod が不要です。代わりに、
Selectorフィールドを未設定のままにします。これは外部サービスであることを表します。これによりEndpointsControllerにこのサービスを無視させ、エンドポイントを手動で指定することができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、サービスの必要なエンドポイントを作成します。これによりサービスプロキシーとルーターに対し、サービスにダイレクトされたトラフィックを送信する場所が指定されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.2.1.2. 外部ドメイン名の使用 リンクのコピーリンクがクリップボードにコピーされました!
外部ドメイン名を使用すると、外部サービスの IP アドレスの変更について把握しておく必要がないために外部サービスのリンケージを管理するのが容易になります。
ExternalName サービスにはセレクターまたは定義されたポートまたはエンドポイントがないため、ExternalName サービスを使用してトラフィックを外部サービスにダイレクトすることができます。
- 1
selectorフィールドは空白のままにします。
外部ドメイン名サービスを使用すると、システムに対して externalName フィールドの DNS 名 (直前の例では example.domain.name) がサービスをサポートするリソースの場所であることを示します。DNS 要求が Kubernetes DNS サーバーに対してなされる場合、CNAME レコードで externalName を返し、クライアントに対して返された名前を検索して IP アドレスを取得するように指示します。
18.2.2. 手順 2: サービスの消費 リンクのコピーリンクがクリップボードにコピーされました!
サービスおよびエンドポイントが定義されたので、適切なコンテナーの環境変数を設定し、適切な Pod が認証情報にアクセスしてサービスを使用できるようにします。
外部データベースの環境変数
アプリケーションで外部サービスを使用することは内部サービスを使用することに似ています。アプリケーションには、直前の手順で説明されている認証情報と共に、サービスの環境変数と追加の環境変数が割り当てられます。たとえば、MySQL コンテナーは以下の環境変数を受信します。
-
EXTERNAL_MYSQL_SERVICE_SERVICE_HOST=<ip_address> -
EXTERNAL_MYSQL_SERVICE_SERVICE_PORT=<port_number> -
MYSQL_USERNAME=<mysql_username> -
MYSQL_PASSWORD=<mysql_password> -
MYSQL_DATABASE_NAME=<mysql_database>
アプリケーションは環境からサービスの位置情報 (coordinate) および認証情報を読み取り、サービス経由でデータベースとの接続を確立します。
18.3. 外部 SaaS プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
外部サービスの一般的なタイプは外部 SaaS エンドポイントです。外部 SaaS プロバイダーをサポートするために、アプリケーションには以下が必要になります。
- 通信に使用するエンドポイント
以下を含む認証情報のセット
- API キー
- ユーザー名
- パスフレーズ
以下の手順は、外部 SaaS プロバイダーとの統合シナリオについて説明しています。
18.3.1. IP アドレスおよびエンドポイントの使用 リンクのコピーリンクがクリップボードにコピーされました!
外部サービスを表す「OpenShift Container Platform サービス」を作成します。これは内部サービスの作成と同様ですが、サービスの
Selectorフィールドが異なります。内部 OpenShift Container Platform サービスは
Selectorフィールドで「ラベル」を使用して Pod をサービスに関連付けます。EndpointsControllerと呼ばれるシステムコンポーネントは、セレクターと一致する pod でセレクターを指定するサービスのエンドポイントを同期します。「サービスプロキシー」と OpenShift Container Platform 「ルーター」は、サービスに対する要求を、サービスのエンドポイント全体で負荷分散します。外部リソースを表すサービスは関連付けられる Pod が不要です。代わりに、
Selectorフィールドを未設定のままにします。これによりEndpointsControllerにこのサービスを無視させ、エンドポイントを手動で指定することができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、サービスプロキシーおよびルーターにダイレクトされたトラフィックの送信先についての情報が含まれるサービスのエンドポイントを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスおよびエンドポイントが定義されたので、適切なコンテナーの環境変数を設定し、Pod にサービスを使用するための認証情報を付与します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの変数は環境変数としてコンテナーに追加されます。環境変数を使用することによりサービス間の通信が許可されます。これには API キーやユーザー名およびパスワード認証または証明書が必要になる場合とそうでない場合があります。
外部 SaaS プロバイダーの環境変数
内部サービスを作成する場合と同様に、アプリケーションには、直前の手順で説明されている認証情報と共に、サービスの環境変数と追加の環境変数が割り当てられます。直前の例では、コンテナーは以下の環境変数を受信します。
-
EXAMPLE_EXTERNAL_SERVICE_SERVICE_HOST=<ip_address> -
EXAMPLE_EXTERNAL_SERVICE_SERVICE_PORT=<port_number> -
SAAS_API_KEY=<saas_api_key> -
SAAS_USERNAME=<saas_username> -
SAAS_PASSPHRASE=<saas_passphrase>
アプリケーションは環境からサービスの位置情報 (coordinate) および認証情報を読み取り、サービス経由でデータベースとの接続を確立します。
18.3.2. 外部ドメイン名の使用 リンクのコピーリンクがクリップボードにコピーされました!
ExternalName サービスにはセレクターや、定義されたポートまたはエンドポイントがありません。ExternalName サービスを使用して、クラスター内にない外部サービスに、トラフィックを割り当てることができます。
- 1
selectorフィールドは空白のままにします。
ExternalName サービスを使用してサービスを externalName フィールドの値 (直前の例では example.domain.name) にマップします。これは CNAME レコードを挿入し、サービス名を外部 DNS アドレスに直接マップするので、エンドポイントのレコードは必要ありません。