在本地禁用 Spring Cloud Kubernetes

Posted

技术标签:

【中文标题】在本地禁用 Spring Cloud Kubernetes【英文标题】:Disable Spring Cloud Kubernetes in local 【发布时间】:2021-04-28 20:48:27 【问题描述】:

关于如何在本地模式下禁用 Spring Cloud Kubernetes 的小问题。

该项目是一个简单的 SpringBoot + SpringCloud 部署在 Kubernetes 中的项目。 因此,类路径中存在这种依赖关系:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-fabric8</artifactId>
        </dependency>

当我们在 Kubernetes 环境中部署应用程序时,一切都很好。 但是,在本地模式下运行的同一应用会产生此警告,但最重要的是,启动时间会增加 20 秒。

o.s.c.k.f.Fabric8AutoConfiguration       : No namespace has been detected. Please specify KUBERNETES_NAMESPACE env var, or use a later kubernetes version (1.3 or later)

在本地,在完全消除依赖的同时,事情“恢复正常”。消息消失,启动时间恢复。

但是,根据本地环境对依赖项进行注释和取消注释可能不是最好的解决方案。

我可以在本地配置完全禁用 Spring Cloud Kubernetes 的属性吗?

谢谢

【问题讨论】:

您可以为 kubernetes 设置一个 spring 配置文件,为本地开发设置另一个。 我做了,我有一个 application-local.properties。消息和增加的启动时间来自于此 spring.cloud.kubernetes.enabled=false 你能显示你的应用程序属性吗? 【参考方案1】:

对我有用的是在boostrap.properties/yaml 文件中添加spring.cloud.kubernetes.enabled=false 属性,而不是在application.properties/yaml 文件中。

【讨论】:

这对于 spring-cloud 2020.0.4 很重要,因为在正常配置中禁用 kubernetes 不再起作用。【参考方案2】:

作为documentation says,您可以通过添加:

spring.cloud.kubernetes.enabled=false

反过来,它可能是一个环境属性,您可以根据环境启用/禁用它。

【讨论】:

确实,我对 spring.cloud.kubernetes.(config|secrets|...).enabled=false 的所有组合都感到困惑,但实际上 spring.cloud.kubernetes.enabled=false 是简单而有效。谢谢 @PatPatPat 只是提醒一下,未来可能是auto-detectable,尽管我们不知道何时或是否。

以上是关于在本地禁用 Spring Cloud Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章

禁用 Spring Cloud 安全性

运行测试时禁用 Spring cloud consul

如何在 spring boot + cloud 中禁用 refreshScope 健康指示器?

无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config

在 Spring Cloud AWS 中禁用 Cloudformation

禁用 Spring Boot/Cloud 中的功能