Назад | Перейти на главную страницу

Как передать файл dotenv в мое развертывание с помощью Gitlab's Auto DevOps

Недавно я развернул кластер EKS и подключил его к нашей группе Gitlab.com, я уже развернул несколько примеров и шаблонов из Gitlab, и все работает нормально.

Теперь я хочу развернуть приложение на основе Node.js. Я установил STAGING_ENABLED, потому что мне интересно иметь один модуль для постановки, а другой - для производства. Я использую dotenv, чтобы задать некоторые переменные среды с некоторыми секретами и хостами для некоторых служб, которые использует мое приложение.

Мой вопрос: у меня есть два файла dotenv: один для постановки, а другой - для производства. Какой лучший способ передать / скопировать эти файлы в мой процесс сборки / развертывания?

Мой .gitlab-ci.yml такой простой:

variables:
  PRODUCTION_REPLICAS: 2
  STAGING_ENABLED: 1

include:
  - template: Auto-DevOps.gitlab-ci.yml

Есть несколько способов сделать это. Если вы не используете Gitlab Auto Devops, вы можете использовать kubectl или helm использовать переменные. Я бы порекомендовал вам использовать Helm, потому что у него много функций, которые могут помочь в вашей ситуации.

Вы можете создать переменную Gitlab CI с типом File (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 вместе с файлами типов, чтобы вы могли редактировать файлы и выполнять обновления.