【问题标题】:spring boot + docker + kubernetes春季启动+码头工人+ kubernetes
【发布时间】:2020-01-15 21:37:43
【问题描述】:

我们有三个环境(开发、测试和生产),我们的数据库配置如下

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

【问题讨论】:

  • 使用 configmaps 选择部署环境。将它们挂载为适当命名的环境变量以匹配您的application.yaml。对数据库凭证执行相同的操作,但改用 K8s 机密。您最终应该会遇到使用 Spring Boots 出色的配置系统在部署时自动被环境变量覆盖的默认值(例如本地开发)。 kubernetes.io/docs/tasks/configure-pod-container/…kubernetes.io/docs/concepts/configuration/secret
  • @BoristheSpider 所以你的意思是说默认情况下我应该有本地 /dev 的 url ,用户名,密码,以便在构建 jar 期间它不会抛出错误,但后来替换它在deployment.yaml 但问题是客户不希望默认网址、用户名、密码被提交。
  • 不必是本地开发人员,甚至不必定义 - 只需是有效的 Yaml。那里有本地开发细节作为应该调用什么变量的文档。然后,您只需将您的凭据秘密挂载到适当的环境变量即可覆盖。
  • 在构建过程中发生的错误中您没有分享的一件事。
  • 正确,这就是我想要做的,但在创建 docker 图像之前,我需要创建 jar 以便我可以制作图像。但是当我试图让 jar 应用程序尝试将其连接到 ${URL} 并且 jar 的创建失败

标签: java spring-boot docker kubernetes


【解决方案1】:

在 Kubernetes 中,您可以将配置放入 Configmap 或 Secret。您可以打包 Spring Boot 应用程序并将 Configmap 条目作为容器的 env 变量提供为暴露的here

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

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 2015-11-21
    • 1970-01-01
    • 2018-01-13
    • 2021-07-15
    • 2017-09-11
    • 2015-04-18
    • 2017-06-24
    • 2015-08-22
    相关资源
    最近更新 更多