9.3. ConfigMap PropertySource の使用
Kubernetes には、設定をアプリケーションに渡すための ConfigMap という概念があります。Spring Cloud Kubernetes プラグインは、ConfigMap
とのインテグレーションを提供し、Spring Boot が config map にアクセスできるようにします。
有効な場合、ConfigMap
PropertySource
はアプリケーションの名前が付いた ConfigMap
を Kubernetes で検索します (spring.application.name
を参照)。その config map が見つかった場合は、そのデータを読み取り、以下を行います。
9.3.1. 個々のプロパティーの適用
プロパティーを使用してそのスレッドプール設定を読み取る demo
という名前の Spring Boot アプリケーションがあるとします。
-
pool.size.core
-
pool.size.max
これを YAML 形式で config map に外部化することができます。
kind: ConfigMap apiVersion: v1 metadata: name: demo data: pool.size.core: 1 pool.size.max: 16
9.3.2. application.yaml ConfigMap プロパティーの適用
ほとんどの場合で個々のプロパティーは適切に動作しますが、YAML を使用した方が便利であることがあります。ここでは、application.yaml
という名前の単一のプロパティーを使用し、YAML を内部に組み込みします。
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.yaml: |- pool: size: core: 1 max:16
9.3.3. application.properties ConfigMap プロパティーの適用
Spring Boot の application.properties
ファイルのスタイルで ConfigMap プロパティーを定義することもできます。ここでは、application.properties
という名前の単一のプロパティーを使用し、内部にプロパティー設定をリストします。
kind: ConfigMap apiVersion: v1 metadata: name: demo data: application.properties: |- pool.size.core: 1 pool.size.max: 16
9.3.4. ConfigMap のデプロイ
ConfigMap をデプロイし、Spring Boot アプリケーションにアクセスできるようにするには、以下の手順を実行します。
手順
-
Spring Boot アプリケーションで 外部化設定 メカニズムを使用し、ConfigMap プロパティーソースへアクセスします。たとえば、Java Bean に
@Configuration
アノテーションを付けると、ConfigMap による Bean のプロパティー値のインジェクションが可能になります。 -
プロジェクトの
bootstrap.properties
ファイル (またはbootstrap.yaml
ファイル) で、spring.application.name
プロパティーが ConfigMap の名前と一致するよう設定します。 アプリケーションに関連するサービスアカウントの
view
パーミッションを有効にします (デフォルトでは、default
というサービスアカウントになります)。たとえば、view
パーミッションをdefault
サービスアカウントに追加するには、以下を実行します。oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default -n $(oc project -q)