繁体   English   中英

使用 Helm 部署 Spring 引导微服务到 K8s

[英]Using Helm For Deploying Spring Boot Microservice to K8s

我们已经构建了一些微服务 (MS),这些微服务 (MS) 已部署到我们公司的 K8s 集群中。

对于当前部署,我们的任何一个 MS 都将构建为 Docker 映像,并使用以下步骤手动部署; 它工作正常:

  • 创建配置图
  • 安装服务。yaml
  • 安装部署。yaml
  • 安装 Ingress.yaml

我现在正在研究 Helm v3 以简化和封装这些部署。 我已经阅读了很多 Helm v3 文档,但我仍然没有找到一些简单问题的答案,我希望在吸收整个文档以及GoSPRIG之前在这里得到答案,然后发现它不会t 符合我们的需要。

我们的 Spring MS 有 5 个单独的application.properties文件,它们特定于我们的 5 个环境中的每一个。 这些属性文件是简单的多行key=value格式,带有一些以#开头的注释。

# environment based values
key1=value1
key2=value2

使用helm create ,我在根目录中安装了一个名为./deploy的图表,该图表自动创建了./templatesvalues.yaml

问题是我需要访问 Chart 的./deploy目录之外的application.properties文件。

从 helm 开始,我想从我的configmap.yaml的 Data: 部分中引用这两个文件。

  • ./src/main/resource/dev/application.properties
  • ./src/main/resources/logback.xml

我想保留这些文件的当前格式,而不是将它们重写为JSON/YAML格式。

Helm v3 允许这样做吗?

在此处输入图像描述

将其作为答案,因为评论中没有足够的空间!

检查我上面分享的 12 因素应用程序链接,特别是关于配置的部分......那里的解释不是很好,但背后的想法是构建一个容器并在任何环境中部署该容器,而无需修改它加上无需创建新版本即可更改配置的能力(如果配置在容器中烘焙,则无法完成后者)。 例如,这允许在不释放版本(或任何其他配置参数)的情况下更改数据库连接池大小。 从安全的角度来看,这也很好,因为您可能不希望容器在具有生产配置(密码、api 密钥等)的较低环境(dev/test/whatnot)中运行。 这种方法类似于一次构建,随处部署的持续交付原则。

我假设当您在本地运行应用程序时,您只需要访问一组配置,因此您可以将其保存在单独的文件中(例如 application.dev.properties),并在 helm 环境变量中设置在环境之间更改的参数. 我知道你提到你不想这样做,但现在这被认为是一种很好的做法(将来可能会被认为是其他方式......)。

我也认为务实很重要,如果在你的情况下你觉得不需要在容器之外进行配置,那么不要这样做,并且可能使用我给出的将命令行参数更改为的建议选择配置文件效果很好。 同时,请记住 12 因素应用程序方法,以防您发现将来确实需要它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM