最近我部署了一个 EKS 集群并将其与我们的 Gitlab.com 组连接起来,我已经从 Gitlab 部署了一些示例和模板,一切运行良好。
现在我要部署基于 Node.js 的应用程序。我设置了 STAGING_ENABLED,因为我想要一个用于暂存的 pod 和另一个用于生产的 pod。我正在使用 dotenv 为我的应用程序正在使用的某些服务设置一些环境变量,其中包含一些机密和主机。
我的问题是:我有两个 dotenv 文件,一个用于暂存,另一个用于生产。哪种方法更适合将这些文件传递/复制到我的构建/部署过程中?
我的 .gitlab-ci.yml 非常简单,如下所示:
variables:
PRODUCTION_REPLICAS: 2
STAGING_ENABLED: 1
include:
- template: Auto-DevOps.gitlab-ci.yml
答案1
有多种方法可以做到这一点。如果您不使用 Gitlab Auto Devops,则可以使用kubectl
或helm
使用变量。我建议您使用 Helm,因为它有很多功能可以为您的情况带来好处。
您可以创建一个类型为 File 的 Gitlab CI 变量(https://docs.gitlab.com/ee/ci/variables/#custom-environment-variables-of-type-file) 保存用于暂存和生产的 dotenv 文件。
通过使用 Helm 图表,您可以将所有 dotenv 值保存为 values.yaml 格式(https://helm.sh/docs/chart_template_guide/values_files/)。此文件可具有各种设置,如副本等。
然后,您可以在 Gitlab-CI 中进行helm upgrade <name> <chart> -f $staging.yaml
暂存和helm upgrade <name> <chart> -f production.yaml
生产。 *.yaml 文件随后会与类型文件一起保存在 Gitlab CI 变量中,以便您可以编辑文件并进行升级。