首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConfigTree变量的弹簧启动重解释

ConfigTree变量的弹簧启动重解释
EN

Stack Overflow用户
提问于 2022-03-11 17:21:52
回答 1查看 585关注 0票数 3

我正在尝试获得我的Spring应用程序来配置来自Kubernetes秘密的数据源连接。由于安全性要求,我无法在部署描述符中使用envFrom/secretRef组合体。因此,我试图使用Spring的configtree导入来访问秘密。

(并不是所有的值都是秘密,但是,它们都来自我无法作为秘密控制的操作符。)

我的应用程序的application.yml有以下内容:

代码语言:javascript
复制
spring:
  config:
    import: "optional:configtree:/etc/secrets/"
  datasource:
    url: jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_APP_DB}
    username: ${POSTGRES_APP_USERNAME}
    password: ${POSTGRES_APP_PASSWORD}

在部署描述符中有一个类似于以下内容的卷/卷安装:

代码语言:javascript
复制
volumes:
    - name: postgres-operator
      secret:
        secretName: postgres
        items:
          - key: POSTGRES_HOST
            path: HOST
          - key: POSTGRES_PORT
            path: PORT
          - key: POSTGRES_APP_DB
            path: APP_DB
          - key: POSTGRES_APP_USERNAME
            path: APP_USERNAME
          - key: POSTGRES_APP_PASSWORD
            path: APP_PASSWORD

...

volumeMounts:
    - name: postgres-operator
      mountPath: "/etc/secrets/postgres"
      readOnly: true

我已经验证了秘密是否按预期的方式挂载在我的Pod文件系统中,并且我创建了一个ConfigurationProperties类,它接受预期的属性并显示值。但是,当Spring数据JPA尝试初始化时,我会得到以下错误:

代码语言:javascript
复制
Hostname "${POSTGRES_HOST}" not found

这使我认为Spring无法为其他属性重新解释导入的configtree属性。这是真的吗?还有别的办法可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-14 17:39:32

您将configtree基路径设置为/etc/secrets/。卷将秘密值挂载到文件/etc/secrets/postgres/HOST中。Configtree将子目录路径转换为配置属性名称上的点分隔前缀,因此可以从配置属性名称postgres.HOST读取秘密值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71442362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档