Запуск инсталлятора
Перед запуском инсталлятора должны быть выполнены следующие условия:
-
Подготовлено рабочее место с установленными 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 в VK Cloud или VK Private Cloud.Работа VK Dev Platform с ВМ и кластерами Kubernetes выполняется с помощью этих пользователей.
По согласованию с Заказчиком пользователи могут быть созданы командой VK Dev Platform.
-
-
При поставке VK Dev Platform в интеграции с VK Cloud или VK Private Cloud: при установке VK Cloud или VK Private Cloud в
inventoryдолжен быть добавлен CIDR подсети для пода кластера Kubernetes, в котором будет развертываться VK Dev Platform (подробнее — в Руководстве по установке VK 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 в VK Cloud или VK 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 в VK Cloud или VK 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 в VK Cloud или VK Private Cloud.
В ответе на команды должна отображаться роль
admin. -
Через API VK Cloud или VK 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 в VK Cloud или VK 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 |+--------------+----------+-------+-----------------------------+--------+-----------+
-
Откройте терминал.
-
Выполните вход на деплой-ноду VK Cloud или VK Private Cloud через SSH:
$ ssh <USERNAME>@<HOST_IP>Здесь:
<USERNAME>— логин, созданный при инсталляции VK Cloud или VK 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приведены в разделе Переменные ролей Ansible. -
Установлен VK Cloud или VK Private Cloud, если VK Dev Platform поставляется в интеграции с VK Cloud или VK Private Cloud (подробнее об установке — в Руководстве по установке VK Private Cloud).
-
Установлен Docker CE для запуска контейнера Ansible.
Версия Docker CE зависит от версии установленного VK 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 в интеграции с VK Cloud или VK 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 в интеграции с VK Cloud или VK Private Cloud | |
Создание секрета в кластере Kubernetes. Нужен для доступа к Docker-репозиторию для скачивания образов | |
Создание S3 бакета для хранения резервных копий БД | |
Создание клиентов (GitLab, Nexus или других) в Keycloak для обеспечения единого входа | |
Операции с токеном (в рамках интеграции с Cloud Monitoring). Только при поставке VK Dev Platform в интеграции с VK Cloud или VK Private Cloud | |
Настройка каналов оповещения (в рамках интеграции с Cloud Monitoring). Только при поставке VK Dev Platform в интеграции с VK Cloud или VK Private Cloud | |
Настройка триггеров в Cloud Monitoring. Только при поставке VK Dev Platform в интеграции с VK Cloud или VK Private Cloud | |
В VK Dev Platform предусмотрен механизм Feature flags, который позволяет включать/отключать функциональность VK Dev Platform.
Для включения функциональности установите значение true в файле roles/samsara/defaults/main.yaml в параметрах, указанных в таблице 2, при настройке Inventory перед установкой VK Dev Platform.
Функциональность | Параметр |
|---|---|
Окружения |
|
Раннеры |
|
Вебхуки (интеграции) |
|
Сервис подключений |
|
DevProm (разработка проекта) |
|
TeamStorm (разработка проекта) |
|
Хранилища артефактов (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 в зашифрованном виде.