6. 与Kubernetes生态系统保持同步

前面描述的所有功能在您的应用程序在Kubernetes内部运行时同样有效。这对开发和故障排除非常有帮助。从开发角度来看,这使您可以启动Spring Boot应用程序并调试属于此项目的一部分的模块。您不必将其部署到Kubernetes中,因为项目的代码依赖于Fabric8 Kubernetes Java客户端,它是可以使用http协议通过REST API与Kubernetes服务器通信的流畅DSL。spring-doc.cadn.net.cn

要禁用与 Kubernetes 的集成,您可以将 spring.cloud.kubernetes.enabled 设置为 false。请记住,当 spring-cloud-kubernetes-config 在类路径上时, spring.cloud.kubernetes.enabled 应该在 bootstrap.{properties|yml} 中设置(或特定于配置文件的一个), 否则应该在 application.{properties|yml} 中设置(或特定于配置文件的一个)。 因为我们在 spring-cloud-kubernetes-config 中设置了特定的 EnvironmentPostProcessor,您还需要通过系统属性(或环境变量)禁用该处理器,例如,您可以开始 您的应用程序通过 -DSPRING_CLOUD_KUBERNETES_ENABLED=false(任何形式的宽松绑定也可以)。 另外,这些属性: spring.cloud.kubernetes.config.enabledspring.cloud.kubernetes.secrets.enabled 只有在设置为 bootstrap.{properties|yml} 时才有效spring-doc.cadn.net.cn

6.1. Kubernetes 配置自动配置

当应用程序作为 Pod 在 Kubernetes 中运行时,会自动激活一个名为 kubernetes 的 Spring 配置文件。这使您能够自定义配置,以定义在 Spring Boot 应用程序部署于 Kubernetes 平台时所应用的 Bean(例如,不同的开发与生产配置)。spring-doc.cadn.net.cn

6.2. Istio 感知

当你将 spring-cloud-kubernetes-fabric8-istio 模块包含在应用程序类路径中时,若应用程序正在运行于已安装了 Istio 的 Kubernetes 集群内,便会为应用程序添加一个新配置文件。此后,你便可在你的 Bean 和 @Configuration 类中使用 Spring @Profile("istio") 注解。spring-doc.cadn.net.cn

Istio 感知模块使用 me.snowdrop:istio-client 与 Istio API 进行交互,使我们能够发现流量规则、熔断器等信息,从而让我们的 Spring Boot 应用程序能够轻松地利用这些数据,根据环境动态配置自身。spring-doc.cadn.net.cn