第11章 Spring Boot と Kubernetes の統合

現在、Spring Cloud Kubernetes プラグインは Spring Boot と Kubernetes の以下の機能を統合できます。

11.1. Spring Boot の外部化設定

Spring Boot の 外部化設定 (externalized configuration) は、外部ソースの設定値を Java コードにインジェクトできるメカニズムです。Java コードでインジェクションを有効にするには、通常 @Value アノテーション (単一のフィールドにインジェクトする場合) または @ConfigurationProperties アノテーション (Java Bean クラスの複数のプロパティーにインジェクトする場合) をつけます。

設定データはさまざまなソース (プロパティーソース) から取得できます。特に、設定プロパティーは多くの場合でプロジェクトの application.properties ファイル (または application.yaml ファイル) で設定されます。

11.1.1. Kubernetes の ConfigMap

Kubernetes の ConfigMap は、設定データをデプロイされたアプリケーションに提供できるメカニズムです。ConfigMap オブジェクトは、通常 YAML ファイルに定義され、Kubernetes クラスターにアップロードされるため、デプロイされたアプリケーションで設定データを利用できるようになります。

11.1.2. Kubernetes の Secret

Kubernetes の シークレット は、機密データ (パスワード、証明書など) をデプロイされたアプリケーションに提供するメカニズムです。

11.1.3. Spring Cloud Kubernetes プラグイン

Spring Cloud Kubernetes プラグインは、Kubernetes と Spring Boot 間のインテグレーションを実装します。原則では、Kubernetes API を使用して ConfigMap から設定データにアクセスできます。しかし、Kubernetes の ConfigMap が Spring Boot 設定の代替プロパティーソースとして動作するように Kubernetes の ConfigMap を直接 Spring Boot の外部化設定メカニズムで統合した方がはるかに便利です。Spring Cloud Kubernetes プラグインは基本的にこの機能を提供します。

11.1.4. Kubernetes インテグレーションでの Spring Boot の有効化

Kubernetes インテグレーションを有効にするには、そのインテグレーションを Maven 依存関係として pom.xml ファイルに追加します。

手順

  1. 以下の Maven 依存関係を Spring Boot Maven プロジェクトの pom.xml ファイルに追加して、Kubernetes インテグレーションを有効にします。

    <project ...>
      ...
      <dependencies>
        ...
        <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
        </dependency>
        ...
      </dependencies>
      ...
    </project>
  2. インテグレーションを完了するには以下を行います。

    • アノテーションを Java ソースコードに追加します。
    • Kubernetes ConfigMap オブジェクトを作成します。
    • アプリケーションが ConfigMap オブジェクトを読み取りできるようにするため、OpenShift サービスアカウントのパーミッションを編集します。

関連情報