本指南前面介绍的所有功能都同样有效,无论应用程序是否在内部运行
Kubernetes。这对于开发和故障排除非常有帮助。
从开发的角度来看,这允许您启动 Spring Boot 应用程序并调试一个应用程序
作为该项目一部分的模块。你不需要在 Kubernetes 中部署它,
因为该项目的代码依赖于 Fabric8 Kubernetes Java 客户端,这是一个流畅的 DSL,可以
使用协议与 Kubernetes Server 的 REST API 进行通信。http
Kubernetes 感知基于 Spring Boot API,特别是 ConditionalOnCloudPlatform。
该属性将自动检测应用程序当前是否部署在 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 bootstrap.{properties|yml} spring-cloud-starter-bootstrap spring.cloud.bootstrap.enabled=true |
如果您在类路径上或正在设置,那么
您必须设置应设置(或特定于配置文件的设置)。另请注意,这些属性: 并且仅在类路径上设置或正在设置时生效。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 bootstrap.{properties|yml} spring-cloud-starter-bootstrap spring.cloud.bootstrap.enabled=true |
3.0.x 中的重大更改
在之前的Spring Cloud Kubernetes版本中,Kubernetes感知是使用属性实现的。这
属性已删除且不受支持。相反,我们使用 Spring Boot API:ConditionalOnCloudPlatform。
如果需要显式启用或禁用此感知,请使用 。3.0.x
spring.cloud.kubernetes.enabled
spring.main.cloud-platform=NONE/KUBERNETES
-
另一个重大更改是加载 configmaps/secret 所需的附加谓词。例如:
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 运行时,名为 Spring 配置文件会自动激活。
这允许您自定义配置,以定义在部署 Spring Boot 应用程序时应用的 Bean
在 Kubernetes 平台中(例如,不同的开发和生产配置)。kubernetes
Istio 意识
在应用程序类路径中包含模块时,会向应用程序添加一个新的配置文件,
前提是应用程序在安装了 Istio 的 Kubernetes 集群中运行。然后,您可以使用
Beans 和类中的春季注解。spring-cloud-kubernetes-fabric8-istio
@Profile("istio")
@Configuration
Istio 感知模块用于与 Istio API 交互,让我们发现流量规则、熔断机制等,
使我们的 Spring Boot 应用程序可以轻松地使用这些数据,以便根据环境动态配置自己。me.snowdrop:istio-client