gpt4 book ai didi

java - Helm 图表中的 Spring Boot 应用程序属性

转载 作者:行者123 更新时间:2023-12-02 23:24:10 25 4
gpt4 key购买 nike

我有一个 Spring boot 应用程序,现在我为其生成了一个 helm 图表。我正在使用 k8s 中的 ConfigMap 来创建此应用程序属性。但是当我检查 pod 时,我看到以下错误:

2021-05-31 09:39:31.815 WARN 1 --- [ost-startStop-1]o.s.b.a.orm.jpa.DatabaseLookup : Unable to determine jdbcurl from datasource

org.springframework.jdbc.support.MetaDataAccessException: Could notget Connection for extracting meta-data; nested exception isorg.springframework.jdbc.CannotGetJdbcConnectionException: Failed toobtain JDBC Connection; nested exception isorg.postgresql.util.PSQLException: The connection attempt failed.

我将应用程序属性编写为 ConfigMap:

kind: ConfigMap
apiVersion: v1
metadata:
name: myconfigmap
data:
application.properties: |-
server.port = 8080
spring.datasource.url={{ .Values.database.url }}
spring.datasource.username={{ .Values.database.username }}
spring.datasource.password={{ .Values.database.password }}

在deployment.yaml中,我使用它来调用它:

      envFrom:
- configMapRef:
name: myconfigmap

我使用 azure 的 keyvault 覆盖 .Values.database...。使该文件在我的 k8s 集群上可用的最佳方法是什么?

我用这个命令覆盖了变量:

helm upgrade --namespace namescpace --install --set"database.url=database_url,database.username=username,database.password=password"name_application chartname

主类:

@SpringBootApplication
@Configuration
@EnableScheduling

公共(public)类Application扩展SpringBootServletInitializer {

/**
* Main method.
*
* @param args
* args passed to the Spring Boot App. Can be used to set the
* active profile.
*/
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

/**
* Configure method for enabling deployment in external tomcat.
*
* {@inheritDoc}
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}

}

最佳答案

您无法将文件作为 env-var 注入(inject)。仅简单的 key=value 条目。

如果您想保持 configMap 原样,您应该将其挂载为容器内的卷。

          volumeMounts:
- name: application-config
mountPath: "/config"
readOnly: true
volumes:
- name: application-config
configMap:
name: myconfigmap
items:
- key: application.properties
path: application.properties

Application.properties 现在将被放置在/config 目录下。

Spring 将在启动时按照文档加载已安装的文件: https://docs.spring.io/spring-boot/docs/2.1.8.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

关于java - Helm 图表中的 Spring Boot 应用程序属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67772055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com