Как я должен развернуть результат конвейера CI / CD на моем производственном сервере - PullRequest
1 голос
/ 21 февраля 2020

У меня есть этот GitLab CI / CD, который строит, затем тестирует и помещает мой контейнер проектов в реестр контейнеров GitLab. Но теперь мне интересно, как я могу сделать этап развертывания автоматизированным. В настоящее время я делаю это вручную и после каждого успешного конвейера отправляю IS SH на мой сервер и запускаю несколько команд, чтобы извлечь последние образы из реестра контейнеров GitLab.com, а затем запустить их. Но я бы тоже хотел сделать этот шаг автоматизированным. Но я не знаю как? На самом деле я видел несколько примеров открытия сеанса s sh из конвейера CI / CD, но он недостаточно безопасен. Поэтому мне было интересно, есть ли лучший способ для этого, или я должен сделать это на самом деле.

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

1 Ответ

2 голосов
/ 21 февраля 2020

Есть много способов добиться этого, в зависимости от ваших настроек, других требований, масштаба и c.
Я просто предоставлю вам два варианта.

I. Kubernetes

  1. создать кластер (ie плоскость управления) где-нибудь
  2. добавить свой кластер в GitLab (теперь GitLab может даже создать кластер для вас в AWS и GCP, проверьте эту страницу)
  3. присоедините вашу целевую машину как рабочий узел к кластеру
  4. создайте файлы Kubernetes YAML \ Helm chart для вашего приложения и разверните обычными способами, например, kubectl apply -f ... или helm install ..., или положитесь на Auto DevOps , чтобы сделать этот шаг для вас

Это довольно сложный, но своего рода "правильный" способ действий.

II. Частный бегун GitLab

  1. go до Настройки> CI / CD> Бегуны вашего проекта или группы GitLab
  2. получают регистрационный токен
  3. установите свой собственный бегун GitLab прямо на целевой машине и зарегистрируйте его на сервере GitLab, используя регистрационный токен, см. пример
  4. дайте бегуну некоторую указанную c метку
  5. используйте этот тег в файле .gitlab-ci.yml, см. документацию
  6. , тогда процесс развертывания - это просто локальный процесс docker pull... и docker run ... для вашего образа

Это намного проще, но это "неправильный" способ, поскольку вы смешиваете инфраструктуру CI \ CD с целевой средой.

...