Запуск инсталлятора
Перед запуском инсталлятора должны быть выполнены следующие условия:
-
Подготовлено рабочее место с установленными Helm и Docker.
-
Создан репозиторий Docker для загрузки образов VK Dev Platform.
-
Развёрнут кластер Kubernetes для установки в него VK Dev Platform. К кластеру настроен доступ с рабочего места.
-
Настроены Wildcard DNS и Wildcard Certificate.
-
В сервисном проекте OpenStack созданы 2 пользователя с ролью OpenStack
admin(подробнее — в разделе Создание пользователей OpenStack):-
<DEV_PLATFORM>— для бэкенда VK Dev Platform. -
<HOE>— для компонента HOE в Private Cloud.Работа VK Dev Platform с ВМ и кластерами Kubernetes выполняется с помощью этих пользователей.
По согласованию с Заказчиком пользователи могут быть созданы командой VK Dev Platform.
-
-
При поставке VK Dev Platform в интеграции с Private Cloud: при установке Private Cloud в
inventoryдолжен быть добавлен CIDR подсети для пода кластера Kubernetes, в котором будет развёртываться VK Dev Platform (подробнее — в Руководстве по установке Private Cloud в разделе Подготовка параметров для инсталляции).Значение задаётся в параметре
keystone_ip_limiter_admin_ip_list_additional. Например,10.100.0.0/16.
Чтобы в сервисном проекте OpenStack создать пользователей для VK Dev Platform:
-
Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).
-
Выведите список пользователей OpenStack:
# openstack user list -
Создайте пользователей в сервисном проекте OpenStack:
# openstack user create --domain default --password '<PASSWORD_USER_DEV_PLATFORM>' <DEV_PLATFORM># openstack user create --domain default --password '<PASSWORD_USER_HOE>' <HOE>где:
<PASSWORD_USER_DEV_PLATFORM>— пароль пользователя<DEV_PLATFORM>.<PASSWORD_USER_HOE>— пароль пользователя<HOE>.<DEV_PLATFORM>— имя пользователя OpenStack для бэкенда VK Dev Platform.<HOE>— имя пользователя OpenStack для компонента HOE в Private Cloud.
-
Назначьте созданным пользователям роль
adminв OpenStack:# openstack role add --project service --user <DEV_PLATFORM> admin# openstack role add --project service --user <HOE> adminгде:
<DEV_PLATFORM>— имя пользователя OpenStack для бэкенда VK Dev Platform.<HOE>— имя пользователя OpenStack для компонента HOE в Private Cloud.
-
Убедитесь, что пользователям назначена роль
admin:# openstack role assignment list --user <DEV_PLATFORM> --names# openstack role assignment list --user <HOE> --namesгде:
<DEV_PLATFORM>— имя пользователя OpenStack для бэкенда VK Dev Platform.<HOE>— имя пользователя OpenStack для компонента HOE в Private Cloud.
В ответе на команды должна отображаться роль
admin. -
Через API Private Cloud установите пользователям значение параметра
is_adminравнымtrue:# auth_token=$(openstack token issue -c id -f value)# user_id_1=$(openstack user show <DEV_PLATFORM> -c id -f value)# curl -X PATCH -H "Content-Type: application/json" -H "X-Auth-Token: $auth_token" -d '{"user": {"is_admin": true }}' "http://internal.private.infra.devmail.ru:35357/v3/users/$user_id_1"# user_id_2=$(openstack user show <HOE> -c id -f value)# curl -X PATCH -H "Content-Type: application/json" -H "X-Auth-Token: $auth_token" -d '{"user": {"is_admin": true }}' "http://internal.private.infra.devmail.ru:35357/v3/users/$user_id_2"где:
<DEV_PLATFORM>— имя пользователя OpenStack для бэкенда VK Dev Platform.<HOE>— имя пользователя OpenStack для компонента HOE в Private Cloud.
-
Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).
-
Выполните команду:
# openstack user show <USER_NAME>где
<USER_NAME>— имя пользователя OpenStack.Пример вывода информации о пользователе OpenStack+---------------------+----------------------------------+| Field | Value |+---------------------+----------------------------------+| default_project_id | d89da2a307d94ba0acb3c3a74b43f5bd || domain_id | default || enabled | True || id | c52d03a13d724186b317764c7b2ed0e9 || is_admin | True || name | hoe || options | {} || password_expires_at | None |+---------------------+----------------------------------+
-
Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).
-
Выполните команду:
# openstack role assignment list --user <USER_NAME> --namesгде
<USER_NAME>— имя пользователя OpenStack.Пример вывода ролей пользователя OpenStack+--------------+----------+-------+-----------------------------+--------+-----------+| Role | User | Group | Project | Domain | Inherited |+--------------+----------+-------+-----------------------------+--------+-----------+| admin | hoe | | service@default | | False || mcs_co_owner | hoe | | mcs4636113224@mcs5333908823 | | False |+--------------+----------+-------+-----------------------------+--------+-----------+
-
Откройте терминал.
-
Выполните вход на деплой-ноду Private Cloud через SSH:
$ ssh <USERNAME>@<HOST_IP>где:
<USERNAME>— логин, созданный при инсталляции Private Cloud (например,centos).<HOST_IP>— IP-адрес деплой-ноды.
-
Введите пароль от учётной записи пользователя или пройдите аутентификацию с помощью файла закрытого ключа.
-
Подключитесь к одному из узлов:
$ ssh <NODE>где
<NODE>— имя узла. Например,cpn003. -
Получите права суперпользователя
root:$ sudo bash -
Авторизуйтесь в OpenStack:
# source ~root/openrc.sh
-
Скачайте архив, необходимый для установки VK Dev Platform.
-
Распакуйте архив.
-
Проверьте целостность содержимого архива командой:
# unzip -t [archive_name] -
Загрузите пакеты в репозиторий:
# unzip [archive_name] && \export DOCKER_DST_REGISTRY="<registry url>" && \export DOCKER_DST_USER="<registry user if auth required>" && \export DOCKER_DST_PASSWORD="<registry path if auth required>" && \/bin/bash/ ./src/stalker.sh push
Inventory-файлы Ansible содержат параметры, описывающие конфигурацию инстанса VK Dev Platform:
- Доменные имена или IP-адреса узлов.
- Секреты в зашифрованном виде.
- Переопределения для переменных ролей Ansible (файлы
roles/<ROLE_NAME>/defaults/main.yaml), если это необходимо. Используемые роли приведены в разделе Перечень ролей.
Перед первичным запуском инсталлятора должны быть выполнены следующие условия:
-
Корректно заполнены
inventoryи переменные для нового стенда. Примеры заполнения переменных файловroles/<ROLE_NAME>/defaults/main.yamlприведены в разделе Файл конфигурации main.yaml. -
Установлен Private Cloud, если VK Dev Platform поставляется в интеграции с Private Cloud (подробнее об установке — в Руководстве по установке Private Cloud).
-
Установлен Docker CE для запуска контейнера Ansible.
Версия Docker CE зависит от версии установленного Private Cloud:
- Private Cloud 3.1 — Docker CE 19.03.8-3.
- Private Cloud 4.0, 4.1 — Docker CE 3:20.10.10-1.
Установка и обновление ПО выполняется при помощи системы управления конфигурациями ПО Ansible. В архив инсталлятора входит перечень плейбуков, ролей и Inventory, которые загружаются в доступный репозиторий Nexus.
Для установки и обновления конфигурации VK Dev Platform используется плейбук data-plane.yaml.
В плейбуке перечислены роли, расположенные в порядке выполнения команд. Роли включают в себя набор задач, переменных и других артефактов, необходимых для настройки VK Dev Platform. Часть ролей (common, oidc-proxy, S3, SSO) являются зависимыми (вспомогательными). Они используются в процессе запуска другими ролями, которые отвечают за развёртывание и конфигурирование отдельных компонентов системы. В таблице 1 указан список используемых в инсталляторе ролей и их функционал.
Роль | Функционал |
|---|---|
Верхнеуровневые роли | |
Развёртывание Devprom ALM | |
Развёртывание Fluent Bit для сбора и обработки логов | |
Развёртывание VK Dev Platform | |
Развёртывание GitLab, установка GitLab Proxy для обеспечения единого входа, настройка секретов и TLS сертификатов | |
Используется для запуска Terraform. Только при поставке VK Dev Platform в интеграции с Private Cloud | |
Развёртывание Keycloak, создание областей безопасности (realm) для VK Dev Platform | |
Развёртывание Sonatype Nexus Repository Manager, настройка аутентификации через OpenID Connect | |
Развёртывание MySQL (Dev Prom), установка Percona Operator for MySQL | |
Установка pgAdmin | |
Установка Prometheus Node Exporter для сбора телеметрии с операционной системы ноды Kubernetes | |
Развёртывание БД Redis | |
Развёртывание интеграционного ядра | |
Развёртывание SonarQube, настройка аутентификации через OpenID Connect | |
Развёртывание Telegraf–агента для сбора метрик | |
Развёртывание Postgres и установка Zalando Postgres Operator | |
Зависимые роли | |
Создание общего пространства имён Kubernetes, настройка TLS сертификатов | |
Установка OIDC Proxy, получение доступа к Keycloak | |
Создание и настройка сервисного пользователя OpenStack. Только при поставке VK Dev Platform в интеграции с Private Cloud | |
Создание секрета в кластере Kubernetes. Нужен для доступа к Docker-репозиторию для скачивания образов | |
Создание S3 бакета для хранения резервных копий БД | |
Создание клиентов (GitLab, Nexus или других) в Keycloak для обеспечения единого входа | |
Операции с токеном (в рамках интеграции с Cloud Monitoring (MaaS). Только при поставке VK Dev Platform в интеграции с Private Cloud | |
Настройка каналов оповещения (в рамках интеграции с MaaS). Только при поставке VK Dev Platform в интеграции с Private Cloud | |
Настройка триггеров в MaaS. Только при поставке VK Dev Platform в интеграции с Private Cloud | |
В VK Dev Platform предусмотрен механизм Feature flags, который позволяет включать/отключать функциональность VK Dev Platform.
Для включения функциональности установите значение true в файле roles/samsara/defaults/main.yaml в параметрах, указанных в таблице 2, при настройке Inventory перед установкой VK Dev Platform.
Функциональность | Параметр |
|---|---|
Окружения |
|
Раннеры |
|
Вебхуки (интеграции) |
|
Сервис подключений |
|
DevProm (разработка проекта) |
|
Хранилища артефактов (Nexus) |
|
Анализатор кода (Sonarqube) |
|
Выполните команду:
# docker run -it -v $PWD:/shepherd <SHEPHERD_IMAGE_NAME> ansible-playbook -i inventories/<INVENTORY_NAME> playbooks/data-plane.yaml --vault-id <PASSWORD_FILE>
где:
<SHEPHERD_IMAGE_NAME>— имя образа.<INVENTORY_NAME>— имя Inventory.<PASSWORD_FILE>— файл с паролем.
Все пароли для доступа к VK Dev Platform содержатся в Inventory в зашифрованном виде.