Развертываем инфраструктуру для разработки в облаке InfoboxCloud. Часть 1: Запускаем Gitlab
В этой серии статей мы рассмотрим процесс размещения инфраструктуры для разработки в облаке InfoboxCloud. Для удобного развертывания стека приложений будем использовать Docker.
В первой статье развернем Gitlab, включающий в себя:
- веб-интерфейс для системы управления исходными текстами git, максимально похожий на GitHub
- удобный просмотр активностей пользователей
- браузер файлов
- Wiki
- возможности проведения Code Review
- баг-трекер
- возможность создания сниппетов кода
- возможность вставки web hooks
- билд-сервер
и многое другое.
Вы можете создать неограниченное количество бесплатных репозиториев, настраивать политики доступа и безопасности. Если перед Gitlab вы развернете VPN, вы можете не предоставлять публичный ip серверу с Gitlab и работать с ним, подключаясь к внутренней сети облака по VPN из вашей корпоративной сети.
Подготовка окружения
1. Создайте сервер с CentOS 7 для установки Docker в InfoboxCloud. Для работы Docker сейчас необходима именно виртуальная машина, поэтому при создании сервера обязательно установите галочку «Разрешить управление ядром ОС».
После регистрации вы получите данные для доступа к панели управления на email. Войдите в панель управления по адресу: https://panel.infobox.ru
В разделе «Облачная инфраструктура» вашей подписки нажмите «Новый сервер» (при необходимости подписка меняется в правом верхнем углу в выпадающем меню).
Задайте необходимые параметры сервера. Обязательно выделите серверу 1 публичный IP–адрес и установите галочку «Разрешить управление ядром ОС», как показано на скриншоте ниже.
В списке доступных операционных систем выберите CentOS 7 и завершите создание сервера.
После этого данные для доступа к серверу придут к вам на электронную почту.
После создания сервера с CentOS 7 подключитесь к нему по SSH.
Мы подготовили скрипт, который позволит вам установить Docker и полезные утилиты для работы с Docker на такой сервер. Необходимые настройки будут выполнены автоматически.
Выполните команду для установки Docker и Compose:
bash <(curl -s http://repository.sandbox.infoboxcloud.ru/scripts/docker/centos7/install.sh)
Docker и compose будут установлены.
Можно создать образ с установленным docker в панели управления, нажав на сервер и далее «Создать образ». После этого из образа с Docker можно будет создавать новые сервера и не выполнять этот шаг повторно.
Системные требования к облачному серверу
Для комфортной работы Gitlab рекомендуется 2 ядра CPU и 2Gb Ram от 100 до 500 пользователей.
Если нужно максимально сэкономить при тестировании — можно серверу с Gitlab выдать 1 ядро CPU 1 ггц, но памяти должно быть не менее 2 гб.
Если нужно работать с большим количеством пользователей:
CPU
- 4 ядра CPU – до 2,000 пользователей
- 8 ядер CPU – до 5,000 пользователей
- 16 ядер CPU – до 10,000 пользователей
- 24 ядра CPU – до 15,000 пользователей
RAM
- 4GB RAM – до 1,000 пользователей
- 8GB RAM — до 2,000 пользователей
- 16GB RAM — до 4,000 пользователей
- 32GB RAM — до 8,000 пользователей
- 64GB RAM — 16,000 пользователей
Если нужно большее количество пользователей — можно запустить Gitlab на нескольких серверах.
Устанавливаем Gitlab
Мы уже подготовили файлы для быстрого развертывания Gitlab последней версии. Gitlab будет развернут в Docker-контейнер. Перед этим мы обновим официальный образ с Gitlab: получим все обновления на ОС включая последнюю версию Gitlab (официальный образ обновляется с задержкой, у нас последняя стабильная версия будет раньше).
Установите git командой:
yum install -y git
Перейдите в директорию пользователя.
cd ~
Скачайте необходимые файлы для развертывания gitlab.
git clone https://github.com/trukhinyuri/gitlab-docker.git
Теперь перейдите в директорию с файлами для развертывания.
cd ~/gitlab-docker
В директории присутствуют следующие файлы и директории:
- Dockerfile: описывает действия, которые будут произведены над официальным образом gitlab;
- docker-compose.yml описывает как нужно развертывать полученный образ, какие порты пробрасывать, какие папки контейнера монтировать куда на хост;
- папка config: в этой папке gitlab будет хранить конфигурационные файлы
- папка data: в этой папке gitlab будет хранить файлы данных
- папка logs: в этой папке gitlab будет хранить логи логи
В Dockerfile содержится:
FROM gitlab/gitlab-ce:latest
MAINTAINER Yuri Trukhin <yuri@trukhin.com>
ENV REFRESHED_AT 2015.09.27.004
ENV GITLAB_SHELL_SSH_PORT 8005
RUN apt-get update
RUN apt-get -y upgrade
EXPOSE 80
EXPOSE 443
EXPOSE 22
Давайте рассмотрим назначение команд подробнее:
- FROM указывает из какого образа какой версии будем строить контейнер. В данном случае используем официальный образ Gitlab Community Edition последней версии.
- ENV устанавливает переменные окружения. ENV REFRESHED_AT 2015.09.27.004 — дата сборки образа. Если необходимо обновить контейнер — меняем дату, перестраиваем образ (как это делать ниже) и разворачиваем его. ENV GITLAB_SHELL_SSH_PORT 8005 указывает Gitlab, что на хосте SSH будет располагаться на порту 8005 и нужно работать с этим портом (и учитывать это в веб-интерфейсе).
- RUN запускает команды внутри контейнера. Обновляем ОС.
- EXPOSE показывает какие порты нужно сделать доступными для проброса на хост.
В docker-compose.yml содержится:
gitlab:
build: .
ports:
- "8004:443"
- "8003:80"
- "8005:22"
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
restart: always
Первой строкой указываем название контейнера, который получится в результате. build указывает путь где располагается Dockerfile для сборки образа. В секции ports указываем какие порты хоста пробросить на какие порты контейнера. В секции volumes указываем какие папки хоста пробросить в контейнер в соответствующие папки. Политика restart: always означает, что контейнер будет запускаться автоматически и при загрузке системы и при падении процессов в нем.
Все это мы уже подготовили и вам достаточно сначала собрать образ командой:
docker-compose build
Затем развернуть контейнер командой:
docker-compose up -d
Если перед Gitlab вам необходимо поставить балансировщик — пример создания связанных контейнеров с балансировщиком можно увидеть в этой статье. Рекомендуется включить шифрование трафика на стороне балансировщика NGINX для безопасного входа в Gitlab.
Если вы не знаете, как отредактировать файл — подробности в этой статье в разделе «Как отредактировать текстовый файл». Если вам интересно разобраться с Docker Compose – подробности тут.
Теперь вы можете войти в gitlab по адресу:
http://ip–адрес вашего сервера
Gitlab был успешно установлен.
Данные для входа по-умолчанию:
- логин: root
- пароль: 5iveL!fe
При первом входе будет предложено установить новый пароль для входа.
После смены пароля и входа в Gitlab вы увидите стартовую страницу.
Первоначальная настройка
Направьте A–запись домена, с которым будет использоваться gitlab, на выделенный ip–адрес хоста в облаке. Выделенный адрес можно посмотреть в панели управления в разделе «Облачная инфраструктура».
Основные параметры gitlab следует указать на хосте в файле ~/gitlab/config/gitlab.rb.
Если строчки с параметрами, которые мы будем указывать, закомментированы (перед параметром установлена #) — # следует убрать. Это нужно сделать только для тех параметров, которые устанавливаем.
Для начала сделайте резервную копию файла конфигурации. Это рекомендуется делать при каждом изменении параметров:
cp gitlab.rb gitlab.rb.old
Конфигурация параметров в gitlab.rb
external_url
В параметре укажите домен, направленный на сервер, по которому будет доступен Gitlab.
time_zone
В этом параметре указывается часовой пояс.
gitlab_rails['time_zone'] = 'Europe/Moscow'
Настройки почты в gitlab.rb
В данном разделе указаны работающие параметры в gitlab.rb для домена, привязанного к Яндекс Почте. Настройки для Gmail и Mailgun указаны тут.
Вставьте эти параметры в файл gitlab.rb, заменив git.alm@plugndo.com на адрес вашей яндекс для домена. Замените здесь ваш пароль от почты на ваш пароль от почты. Вместо plugndo.com вставьте имя вашего почтового домена. Остальные настройки оставьте неизменными.
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yandex.ru"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "git.alm@plugndo.com"
gitlab_rails['smtp_password'] = "здесь ваш пароль от почты"
gitlab_rails['smtp_domain'] = "plugndo.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
#gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
gitlab_rails['gitlab_email_from'] = 'git.alm@plugndo.com'
gitlab_rails['gitlab_email_reply_to'] = 'git.alm@plugndo.com'
После сохранения изменений перезагрузите контейнер с gitlab командой:
docker restart CONTAINER_ID
, где вместо CONTAINER_ID укажите уникальный номер вашего контейнера с gitlab. Его можно посмотреть с помощью команды:
docker ps
Для проверки корректности настройки почты создайте пользователя в Gitlab, если все сделано правильно — пользователь получит на email ссылку для установки пароля.
Заключение
После применения инструкций статьи вы получили актуальную версию Gitlab на собственном облачном сервере. Можно приступать к настройке системы для ваших проектов. Благодаря тройной репликации в распределенной отказоустойчивой системе хранения данных в InfoboxCloud вы можете не беспокоиться за сохранность ваших данных.Как получить пробную версию InfoboxCloud бесплатно?
Пришлите нам ваш адрес электронной почты и ФИО на trukhinyuri@infoboxcloud.com, в ответ получите данные для доступа к панели управления. Вы можете тестировать новый регион облака в течение 14 дней, далее можно перейти на полную версию облака. Запросить бесплатную пробную версию можно до 15 октября 2015 года.
Если вы нашли ошибку в статье или у вас есть вопросы/замечания, напишите нам в ЛС или на почту. Если вы не можете оставлять комментарии на Хабре, напишите в Сообществе InfoboxCloud.
Продуктивной разработки!