このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Cloud Kubernetes 5.0.3 を使用してください!

Kubernetes PropertySource 実装

Spring Boot アプリケーションを構成する最も一般的な方法は、アプリケーションまたは Spring Boot スターターにカスタマイズ値を提供するキーと値のペアを含む application.properties または application.yaml または application-profile.properties または application-profile.yaml ファイルを作成することです。システムプロパティまたは環境変数を指定することで、これらのプロパティをオーバーライドできます。

この機能を有効にするには、spring.config.import アプリケーション構成プロパティを kubernetes: に設定する必要があります (YAML を使用する場合は引用符で囲んでください。例: "kubernetes:")。

spring:
  config:
    import: "kubernetes:"

プロパティソースの優先順位

spring.config.import でロードされた Kubernetes プロパティソースは、Spring Boot の構成データ優先順位ルールに従います。インポートされた構成は、インポートを宣言した構成ドキュメントよりも優先順位が高くなります。例: インポートが application.yaml で宣言されている場合、kubernetes: の値は、そのドキュメントの同じ値を上書きします。

spring.config.import で複数のロケーションが設定されている場合、宣言された順序で処理されます。後からインポートされたデータは、先にインポートされたデータよりも優先順位が高くなります。例:

spring:
  config:
    import:
      - "optional:configserver:"
      - "kubernetes:"

この例では、Kubernetes の設定が 構成サーバーの設定を上書きしており、どちらもこれらのインポートを宣言する設定ドキュメントの値を上書きしています。2 つのインポートを逆にすると、構成サーバーの設定が Kubernetes の設定を上書きするようになります。

コマンドライン引数、Java システムプロパティ、オペレーティングシステムの環境変数など、優先順位の高い Spring Boot プロパティソースは、spring.config.import を介して読み込まれた値を上書きします。

3.0.x リリース前と同様に、ブートストラップフェーズ中に Kubernetes PropertySource をロードしたい場合は、アプリケーションのクラスパスに spring-cloud-starter-bootstrap を追加するか、環境変数として spring.cloud.bootstrap.enabled=true を設定します。

従来のブートストラップを使用する場合、bootstrap.yaml はブートストラップコンテキストを構成します。bootstrap.yaml は、そのコンテキストによって特定される リモートプロパティソースの相対的な優先順位を制御しません。Kubernetes の ConfigMap プロパティソースロケーターと 構成サーバーのプロパティソースロケーターはどちらも 0 の順序になっているため、アプリケーションはそれらの間の特定の優先順位に依存してはいけません。Kubernetes Secret プロパティソースロケーターの順序は 1 です。Kubernetes と 構成サーバーの構成間で決定論的な順序付けが必要な場合は、spring.config.import を使用してください。

Bootstrap 中にプロパティをロードすることはサポートされていません (spring-cloud-starter-bootstrap または spring.cloud.bootstrap.enabled=true を使用、および spring.config.import を使用してプロパティをロードします)。どちらか一方の方法を使用する必要があります。