Skip to content

02.infrastructure

Andrey F. Mindubaev edited this page Apr 13, 2018 · 1 revision

Инфраструктура

Потребуется три сервера GitLab, Docker-для-production и Docker-для-разработки

GitLab

  1. Установка GitLab

    С инструкцией по установке GitLab можно ознакомиться на сайте about.gitlab.com

  2. Настройка SSL-сертификата

    Создать SSL-сертификат можно с помощью сервиса LetsEncrypt

    Настроить Nginx в файле /etc/gitlab/gitlab.rb

    nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab-server.ru/fullchain.pem"
    nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab-server.ru/privkey.pem"
    

    Перегрузить GitLab

    gitlab-ctl restart
    

    Для настройки автоматического обновления сертификата нужно:

    1. добавить ещё одну строку в конфигурацию Nginx

      nginx['custom_gitlab_server_config'] = "location ^~ /.well-known { \n allow all;\n alias /var/lib/letsencrypt/.well-known/;\n default_type \"text/plain\";\n try_files $uri =404;\n }\n"
      
    2. перегрузить GitLab

    3. настроить crontab для обновления сертификатов

      41 0 * * * /root/certbot-auto renew --no-self-upgrade --webroot -w /var/lib/letsencrypt --renew-hook "service nginx reload"
      
  3. Настройка Container Registry

    С инструкцией по установке Container Registry можно ознакомиться на сайте docs.gitlab.com

    Добавить в файл конфигурации /etc/gitlab/gitlab.rb информацию о SSL-сертификате для Contaner Registry (будет использоваться тот же, что и для самого GitLab) и перегрузить GitLab

    registry_nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab-server.ru/fullchain.pem"
    registry_nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab-server.ru/privkey.pem"
    

Docker для production

С инструкцией по установке Docker можно ознакомиться на сайте docs.docker.com

Дополнительно нужно создать локальную сеть для назначения контейнерам внутренних IP адресов

docker network create graynetwork --gateway 192.168.10.1 --subnet 192.168.10.0/24

Кроме Docker на сервер нужно установить nginx и certbot-auto от LetsEncrypt

Nginx будет проксировать запросы к веб-серверам в контейнерах Docker. С инструкцией по установке Nginx можно ознакомиться на сайте nginx.org

Обновление будущих SSL-сертификатов должно быть настроено сразу же так, как с на сервере с GitLab.

41 0 * * * /root/certbot-auto renew --no-self-upgrade --webroot -w /var/lib/letsencrypt --renew-hook "service nginx reload"

Docker для разработки

Нужно выполнить все пункты установки Docker для production и дополнительно на сервер нужно установить GitLab CI Runner

С инструкцией по установке GitLab Runner можно ознакомиться на сайте docs.docker.com

Запуск GitLab Runner

gitlab-ci-multi-runner verify --delete
printf "concurrent = 10\ncheck_interval = 0\n\n" > /etc/gitlab-runner/config.toml
gitlab-ci-multi-runner register -n \
   --url https://gitlab-server.ru/ \
   --registration-token <token> \
   --tag-list "executor-docker,docker-in-docker" \
   --executor docker \
   --description "docker-dev" \
   --docker-image "docker:latest" \
   --docker-volumes "/var/run/docker.sock:/var/run/docker.sock"

Токен <token> нужно скопировать из Web-интерфейсе GitLab в разделе Admin Area -> Runners

Clone this wiki locally