Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
17.2. 外部データベースのサービスの定義
外部サービスの最も一般的なタイプとして外部データベースを挙げることができます。外部データベースをサポートするには、アプリケーションで以下が必要になります。
- 通信するエンドポイント。
以下を含む認証情報および位置情報 (coordinate)。
- ユーザー名
- パスフレーズ
- データベース名
外部データベースと統合するためのソリューションには、以下が含まれます。
-
Serviceオブジェクト: SaaS プロバイダーを OpenShift Container Platform サービスとして表示します。 -
1 つ以上のサービスの
Endpoint。 - 認証情報を含む適切な Pod の環境変数。
以下の手順は、外部 MySQL データベースとの統合シナリオについて説明しています。
17.2.1. 手順 1: サービスの定義
サービスは、IP アドレスとエンドポイントを指定するか、または完全修飾ドメイン名 (FQDN) を指定し定義することができます。
17.2.1.1. IP アドレスの使用
外部データベースを表す OpenShift Container Platform サービス を作成します。これは内部サービスを作成する場合と同様ですが、サービスの
Selectorフィールドが異なります。内部 OpenShift Container Platform サービスは
Selectorフィールドで ラベル を使って Pod をサービスに関連付けます。EndpointsControllerシステムコンポーネントは、セレクターに一致する Pod でセレクターを指定するサービスのエンドポイントを同期します。サービスプロキシー および OpenShift Container Platform ルーター はサービスのエンドポイント間でサービスに対する要求の負荷分散を実行します。外部リソースを表すサービスには関連付けられる Pod が不要です。代わりに、
Selectorフィールドを未設定のままにします。これは外部サービスであることを表します。 これによりEndpointsControllerにこのサービスを無視させ、エンドポイントを手動で指定することができます。kind: "Service" apiVersion: "v1" metadata: name: "external-mysql-service" spec: ports: - name: "mysql" protocol: "TCP" port: 3306 targetPort: 3306 1 nodePort: 0 selector: {} 2次に、サービスの必要なエンドポイントを作成します。これによりサービスプロキシーとルーターに対し、サービスにダイレクトされたトラフィックを送信する場所が指定されます。
kind: "Endpoints" apiVersion: "v1" metadata: name: "external-mysql-service" 1 subsets: 2 - addresses: - ip: "10.0.0.0" 3 ports: - port: 3306 4 name: "mysql"
17.2.1.2. 外部ドメイン名の使用
外部ドメイン名を使用すると、外部サービスの IP アドレスの変更について把握しておく必要がないために外部サービスのリンケージを管理するのが容易になります。
ExternalName サービスにはセレクターまたは定義されたポートまたはエンドポイントがないため、ExternalName サービスを使用してトラフィックを外部サービスにダイレクトすることができます。
kind: "Service"
apiVersion: "v1"
metadata:
name: "external-mysql-service"
spec:
type: ExternalName
externalName: example.domain.name
selector: {} 1- 1
selectorフィールドは空白のままにします。
外部ドメイン名サービスを使用すると、システムに対して externalName フィールドの DNS 名 (直前の例では example.domain.name) がサービスをサポートするリソースの場所であることを示します。DNS 要求が Kubernetes DNS サーバーに対してなされる場合、CNAME レコードで externalName を返し、クライアントに対して返された名前を検索して IP アドレスを取得するように指示します。