java - spring中使用k8s configmap

标签 java spring spring-boot kubernetes configmap

我有一个 Spring Boot 服务,目前使用 .properties 文件使用 spring @Value 注释来使用变量。最近我们一直在将Spring Boot服务迁移到K8集群。这意味着,我们需要创建一个 configmap.yml 文件,其中包含与 .properties 文件相同的所有属性。每当对属性进行更改时,都必须在两个地方完成,即用于本地开发的 configmap 和 .properties 文件。所以我们必须为每个 spring 配置文件管理 2 个文件(configmap 和 .properties)。有一个更好的方法吗?我们使用gitlab ci/cd工具进行部署。

有没有办法在我们的机器上使用configmap代替properties进行本地开发,这样我们就可以完全放弃.properties文件而只维护configmap?

管理 Spring Boot 应用程序属性的理想方法是什么?

示例 service-config-map.yaml

kind: ConfigMap 
apiVersion: v1 
metadata:
  name: myservice-config
data:
  server.port: "10300"
  spring.application.name: myserviceGateway
  myservice.application.name: helloworld
  myservice.server.apiContext: /api
  myservice.server.versionContext: /v
  myservice.current.version=2.0

属性文件application.properties

server.port=10300
spring.application.name=myserviceGateway
myservice.application.name=helloworld
myservice.server.apiContext=/api
myservice.server.versionContext=/v
myservice.current.version=2.0

最佳答案

Spring Cloud Kubernetes project使 Kubernetes ConfigMap 在应用程序引导期间可用,并在观察到的 ConfigMap 上检测到更改时触发 Bean 或 Spring 上下文的热重新加载。

示例 here

具有配置映射名称的 bootstrap yaml 看起来像

spring:
  application:
    name: reload-example
  cloud:
    kubernetes:
      reload:
        enabled: true
        mode: polling
        period: 5000
      config:
        sources:
          - name: other
          - name: ${spring.application.name}

关于java - spring中使用k8s configmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60625597/

相关文章:

java - Spring Data JPA @Convert 抛出不允许操作异常

java - 创建 bean 时出错 - 在服务中注入(inject)配置类不起作用

java - GridView:应用程序可能在其主线程上做了太多工作。使用各种图像时跳过 x 帧错误

java - 在 Java 中订购一个新的 Gson().toJson()

java - 使应用层松散耦合

java - 关闭Google云平台Executorservice错误

java - 如何更新Jruby使用的java版本?

java飞行记录器如何转储异常,FlightRecordingDumpOnUnhandledException

java - Spring 4 - 服务器启动后的运行方法

java - 如何根据函数的输出在 @Query 中使用查询字符串