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