Java 弹簧靴&x2B;docker&x2B;库伯内特斯

Java 弹簧靴&x2B;docker&x2B;库伯内特斯,java,spring-boot,docker,kubernetes,Java,Spring Boot,Docker,Kubernetes,我们有三个环境(dev、test和prod),数据库配置如下 spring: jpa: hibernate: ddl-auto: update datasource: url: ${URL} username: ${USERNAME} password: ${PASSWORD} 我正在尝试的是创建jar,然后构建映像,当部署到kubernetes时,我将使用dev、test和prod各自的deployment.yaml,其中我将把url、用户

我们有三个环境(dev、test和prod),数据库配置如下

spring:
  jpa:
    hibernate:
      ddl-auto: update
  datasource:
    url: ${URL}
    username: ${USERNAME}
    password: ${PASSWORD}
我正在尝试的是创建jar,然后构建映像,当部署到kubernetes时,我将使用dev、test和prod各自的deployment.yaml,其中我将把url、用户名和密码加载到env,以便应用程序在prod启动期间读取它

所以,当我尝试构建jar应用程序时,尝试连接到数据库,但它无法创建jar


请让我知道我的理解是错误的,或者是正确的,如果是错误的,那么如何纠正它,唯一的一件事是我不能更改流程,即jar+image+kubernetes

在kubernetes中,您可以将配置放在Configmap或Secret中。您可以打包spring引导应用程序,并将Configmap条目作为容器的env变量提供为exposed


使用Spring Cloud Kubernetes,您还可以读取这些属性,而无需对容器进行任何配置,如本

中所述使用configmaps选择部署环境。将它们作为适当命名的环境变量装载,以匹配您的
应用程序.yaml
。对数据库凭据执行相同的操作,但改用K8s机密。您应该会遇到这样一种情况,即您拥有默认值(例如本地开发人员),在使用SpringBoots优秀配置系统进行部署时,这些默认值会被环境变量自动覆盖@BoristheSpider所以你的意思是,默认情况下,我应该拥有本地/dev的url、用户名和密码,这样在构建jar的过程中,它不会抛出错误,但随后会在
部署中替换它。yaml
但问题是客户不希望提交默认url、用户名和密码。不必是本地dev,甚至不需要定义-只需要是有效的Yaml。在那里有本地开发人员的详细信息可以作为应该调用哪些变量的文档。然后,您只需要将您的凭据机密装载到适当的环境变量以进行覆盖。有一件事您没有在生成期间发生的错误中共享。请更正,这就是我正在尝试执行的操作,但在创建docker映像之前,我需要创建jar,以便生成映像。但是当我试图让jar应用程序尝试将其连接到
${URL}
时,jar的创建失败了