【发布时间】:2021-06-06 10:48:01
【问题描述】:
我正在使用一个网络应用程序,我们将其部署到多个环境; prod、staging、多个 QA 环境,甚至必要时的一些开发人员环境。我们正在从 elastic beanstalk 迁移到 kubernetes,并尝试以尽可能干净的方式设置 config/yaml 文件。问题是,我们已经为每个环境定义了一个 yaml 文件,其中包含一些秘密,并且由于大量复制/粘贴,这变得有点难以维护。以下是文件/内容的示例:
免责声明 - 这项工作主要由 devops 团队完成,我是一名网络工程师,试图为他们提供帮助,所以我会尽力回答任何问题,但我可能会没有所有正确的答案
文件夹结构:
- k8s // root folder
- deployment.yaml
- production
- production-params.yaml
- staging
- staging-1-params.yaml
- staging-2-params.yaml
- qa-1-params.yaml
- developers
- some-dev-params.yaml
每个*-params.yaml 文件的内容几乎相同,我们来看几个例子。
生产参数.yaml
apiVersion: 'kubernetes-client.io/v1'
kind: ExternalSecret
metadata:
name: prod-params
spec:
backendType: systemManager
data:
- key: /xxx/production/ENV_VAR_1
name: ENV_VAR_1
- key: /xxx/production/ENV_VAR_2
name: ENV_VAR_2
- key: /xxx/production/ENV_VAR_3
name: ENV_VAR_3
- key: /xxx/production/ENV_VAR_4
name: ENV_VAR_4
staging-1-params.yaml
apiVersion: 'kubernetes-client.io/v1'
kind: ExternalSecret
metadata:
name: prod-params
spec:
backendType: systemManager
data:
- key: /xxx/staging1/ENV_VAR_1
name: ENV_VAR_1
- key: /xxx/staging1/ENV_VAR_2
name: ENV_VAR_2
- key: /xxx/staging1/ENV_VAR_3
name: ENV_VAR_3
- key: /xxx/staging1/ENV_VAR_4
name: ENV_VAR_4
和其他所有参数文件都是这样,只有“键”中的文件路径发生变化,但几乎相同。有没有办法让这些变得更动态或更干净?我不是 devops/k8s 专业人士并且做了一些研究,似乎 Helm 在这里可以提供帮助,但不知道如何使用它来解决这个问题。我读了一个有点帮助的教程,但我仍然感到困惑。如果有人知道任何资源或过去曾解决过此问题,我将非常感谢您的帮助
【问题讨论】:
-
看看这篇关于使用 Kustomize 管理不同配置的文章:digitalocean.com/community/tutorials/…
标签: kubernetes kubernetes-helm