如何使用 Gitlab 的 Auto DevOps 将 dotenv 文件传递​​到我的部署

如何使用 Gitlab 的 Auto DevOps 将 dotenv 文件传递​​到我的部署

最近我部署了一个 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,则可以使用kubectlhelm使用变量。我建议您使用 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 变量中,以便您可以编辑文件并进行升级。

相关内容