java - 从K8S ConfigMap文件将嵌套的JSON读取到Spring config bean中

标签 java spring-boot kubernetes config

我们有一个企业Kubernetes设置,我将在上面部署一个Spring Boot应用程序
该服务在该位置将configMap作为json文件注入(inject)-/etc/config/appConfig.jsonJSON文件看起来像

{
    "configResolution": {
      "resolved": {
        "groupid": "listener-consumerGrp",
        "topic": "Product"
      }
    }
 }
我正在尝试在 Spring 引导中将K-V对读取为变量
String groupid;
String topic
需要15分钟刷新时间才能获得有关使用Spring Cloud Kubernetes进行阅读的帮助
这是application.yml,我用过
spring:
  profiles: dev
  cloud:
    kubernetes:
      config:
        name: PLACEHOLDER-LISTENER
        namespace: team924
        enable-api: false
        paths:
          -/etc/config/appConfig.json
      reload:
        enabled: true
        mode: polling
        period: 150000
任何帮助表示赞赏

最佳答案

正如您在Spring Cloud Kubernetes documentation中看到的那样,您的application.yaml看起来不错:它将在不支持API的情况下允许您访问 namespace ConfigMap中名称为PLACEHOLDER-LISTENERteam924
每次轮询ConfigMap中的更改都会重新加载此配置-在这里您指定的数量与您建议的15分钟不同,请注意-150秒。
问题是,此ConfigMap由一个JSON文件定义,我想您创建了from a filemounted as a volume,并且此机制不允许您直接在Spring中映射名称/值属性。
老实说,我从未测试过这种行为,但是我最好的选择是,在最好的情况下,如果Spring能够处理该文件-我认为这很有可能,尽管documentation尚不清楚-它将遵循与Kubernetes类似的方法,它将为您提供一个配置属性,其中包含名称,文件名和值以及整个JSON文件内容。必须使用Jackson或其他JSON处理库来实际处理此文件内容。

关于java - 从K8S ConfigMap文件将嵌套的JSON读取到Spring config bean中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64408856/

相关文章:

java - Swing:JPanel 内的 JTextField,重绘问题

java - 调用 Component.getGraphics 真的不行吗?

java - 将默认容器工厂 bean 从 kafkaListenerContainerFactory 更改为我的自定义容器工厂

Kubernetes 执行器不会并行化 Airflow 中的子 DAG 执行

kubernetes hpa 请求 cpu 和 objective-c pu 值

java - 不兼容的类型 : required int found object error in generic linkedlist

java - 枚举在编译过程中是如何翻译的以及对象是如何创建的

java - 尝试@Override addViewControllers() 方法时出现问题 - Spring Security

spring-mvc - 如何在 Spring Webflux 中返回 Mono<Map<String, Flux<Integer>>> 响应?

apache - 在 k8s 上安全地运行 apache 容器