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

Kubernetes エコシステムの認識

このガイドで前述したすべての機能は、アプリケーションが Kubernetes 内で実行されているかどうかに関係なく、同様に機能します。これは開発やトラブルシューティングに非常に役立ちます。開発の観点から見ると、これにより、Spring Boot アプリケーションを起動し、このプロジェクトの一部であるモジュールの 1 つをデバッグできるようになります。プロジェクトのコードは Fabric8 Kubernetes Java クライアント [GitHub] (英語) に依存しているため、Kubernetes にデプロイする必要はありません。Fabric8 Kubernetes Java クライアント [GitHub] (英語) は、http プロトコルを使用して Kubernetes サーバーの REST API と通信できる流れるような DSL です。

Kubernetes の認識は Spring Boot API、特に ConditionalOnCloudPlatform (Javadoc) に基づいています。このプロパティは、アプリケーションが現在 kubernetes にデプロイされているかどうかを自動検出します。spring.main.cloud-platform を介してその設定をオーバーライドすることができます。

例: いくつかの機能をテストする必要があるが、クラスターにデプロイしたくない場合は、spring.main.cloud-platform=KUBERNETES を設定するだけで十分です。これにより、spring-cloud-kubernetes は実際のクラスターにデプロイされているかのように動作します。

クラスパスに spring-cloud-starter-bootstrap がある場合、または spring.cloud.bootstrap.enabled=true を設定している場合は、spring.main.cloud-platform を bootstrap.{properties|yml} (またはプロファイル固有のもの) に設定する必要があります。また、次のプロパティ: spring.cloud.kubernetes.config.enabled および spring.cloud.kubernetes.secrets.enabled は、クラスパスに spring-cloud-starter-bootstrap がある場合、または spring.cloud.bootstrap.enabled=true を設定している場合に、bootstrap.{properties|yml} で設定された場合にのみ有効になることに注意してください。

3.0.x の重大な変更

3.0.x より前のバージョンの Spring Cloud Kubernetes では、Kubernetes 認識は spring.cloud.kubernetes.enabled プロパティを使用して実装されました。このプロパティは削除され、サポートされていません。代わりに、Spring Boot API: ConditionalOnCloudPlatform (Javadoc) を使用します。この認識を明示的に有効または無効にする必要がある場合は、spring.main.cloud-platform=NONE/KUBERNETES を使用します。

  • もう 1 つの重大な変更は、configmaps/secrets をロードするために必要な追加の list 動詞です。例:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-role
rules:
  - apiGroups: ["", "extensions", "apps", "discovery.k8s.io"]
    resources: ["configmaps", "pods", "services", "endpoints", "secrets", "endpointslices"]
    verbs: ["get", "list", "watch"]

Kubernetes プロファイルの自動構成

アプリケーションが Kubernetes 内で pod として実行されると、kubernetes という名前の Spring プロファイルが自動的にアクティブ化されます。これにより、構成をカスタマイズして、Spring Boot アプリケーションが Kubernetes プラットフォーム内にデプロイされるときに適用される Bean を定義できます (たとえば、異なる開発構成と運用構成)。

Istio の認識

アプリケーションのクラスパスに spring-cloud-kubernetes-fabric8-istio モジュールを含めると、アプリケーションがイスティオ (英語) がインストールされた Kubernetes クラスター内で実行されている場合、新しいプロファイルがアプリケーションに追加されます。これで、Bean クラスと @Configuration クラスで Spring @Profile("istio") アノテーションを使用できるようになります。

Istio 認識モジュールは、me.snowdrop:istio-client を使用して Istio API と対話し、交通ルールやサーキットブレーカーなどを検出できるようにします。これにより、Spring Boot アプリケーションがこのデータを消費して環境に応じて動的に構成することが容易になります。