...

понедельник, 28 сентября 2015 г.

Развертываем инфраструктуру для разработки в облаке InfoboxCloud. Часть 1: Запускаем Gitlab

В этой серии статей мы рассмотрим процесс размещения инфраструктуры для разработки в облаке InfoboxCloud. Для удобного развертывания стека приложений будем использовать Docker.

В первой статье развернем Gitlab, включающий в себя:

  • веб-интерфейс для системы управления исходными текстами git, максимально похожий на GitHub
  • удобный просмотр активностей пользователей
  • браузер файлов
  • Wiki
  • возможности проведения Code Review
  • баг-трекер
  • возможность создания сниппетов кода
  • возможность вставки web hooks
  • билд-сервер

и многое другое.

Вы можете создать неограниченное количество бесплатных репозиториев, настраивать политики доступа и безопасности. Если перед Gitlab вы развернете VPN, вы можете не предоставлять публичный ip серверу с Gitlab и работать с ним, подключаясь к внутренней сети облака по VPN из вашей корпоративной сети.

Подготовка окружения


1. Создайте сервер с CentOS 7 для установки Docker в InfoboxCloud. Для работы Docker сейчас необходима именно виртуальная машина, поэтому при создании сервера обязательно установите галочку «Разрешить управление ядром ОС».
Как правильно создать сервер в InfoboxCloud для Docker
Если у вас еще нет доступа в InfoboxCloud – закажите его.

После регистрации вы получите данные для доступа к панели управления на email. Войдите в панель управления по адресу: http://ift.tt/1C9oF8v

В разделе «Облачная инфраструктура» вашей подписки нажмите «Новый сервер» (при необходимости подписка меняется в правом верхнем углу в выпадающем меню).

Задайте необходимые параметры сервера. Обязательно выделите серверу 1 публичный IP–адрес и установите галочку «Разрешить управление ядром ОС», как показано на скриншоте ниже.

В списке доступных операционных систем выберите CentOS 7 и завершите создание сервера.

После этого данные для доступа к серверу придут к вам на электронную почту.


После создания сервера с CentOS 7 подключитесь к нему по SSH.

Мы подготовили скрипт, который позволит вам установить Docker и полезные утилиты для работы с Docker на такой сервер. Необходимые настройки будут выполнены автоматически.

Выполните команду для установки Docker и Compose:

bash <(curl -s http://ift.tt/1f5hJBs)


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 http://ift.tt/1MTs42O


Теперь перейдите в директорию с файлами для развертывания.
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.

Продуктивной разработки!

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.

Комментариев нет:

Отправить комментарий