Запуск инсталлятора
Перед запуском инсталлятора должны быть выполнены следующие условия:
-
Подготовлено рабочее место с установленными Helm и Docker.
-
Создан репозиторий Docker для загрузки образов VK Dev Platform.
-
Развёрнут кластер Kubernetes для установки в него 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.
-
-
При установке 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 '<ПАРОЛЬ_1>' <DEV_PLATFORM># openstack user create --domain default --password '<ПАРОЛЬ_2>' <HOE>где:
<ПАРОЛЬ_1>— пароль пользователя<DEV_PLATFORM>.<ПАРОЛЬ_2>— пароль пользователя<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 <ПОЛЬЗОВАТЕЛЬ>где
<ПОЛЬЗОВАТЕЛЬ>— имя пользователя 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 <ПОЛЬЗОВАТЕЛЬ> --namesгде
<ПОЛЬЗОВАТЕЛЬ>— имя пользователя 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 <УЗЕЛ>где
<УЗЕЛ>— имя узла. Например,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
Выполните команду:
# docker build -t shepherd . && docker run -it -v $(pwd):/var/shepherd shepherd /bin/bash -c "cd /var/shepherd && export ANSIBLE_ROLES_PATH=/var/shepherd/roles && ansible-playbook -i inventories/<INVENTORY_NAME> playbooks/data-plane.yaml --vault-id <PASSWORD_FILE>"
где:
<INVENTORY_NAME>— имя inventory.<PASSWORD_FILE>— файл с паролем.
Все пароли для доступа к VK Dev Platform содержатся в inventory в зашифрованном виде.
Установка и обновление ПО выполняется при помощи системы управления конфигурациями ПО Ansible. Архив инсталлятора включает в себя перечень плейбуков, ролей и inventory, которые загружаются в доступный репозиторий Nexus.
Для установки и обновления конфигурации Платформы используется плейбук pb-data-plane.yaml.
В плейбуке перечислены роли, расположенные в порядке выполнения команд. Роли включают в себя набор задач, переменных и других артефактов, необходимых для настройки Платформы. Часть ролей (common, oidc-proxy, S3, SSO) являются вспомогательными, они используются в процессе запуска другими ролями, которые в свою очередь отвечают за Разворачивание и конфигурирование отдельных компонентов системы. В таблице ниже указан список используемых в инсталляторе ролей и их функционал.
Роль | Функционал |
|---|---|
| Разворачивание Telegraf–агента для сбора метрик |
| Разворачивание Postgres и установка Zalando Postgres operator |
| Разворачивание Keycloak, создание областей безопасности (realm) для DevPlatform |
| Разворачивание БД Redis |
| Разворачивание GitLab, установка GitLab proxy для обеспечения единого входа, настройка секретов и TLS сертификатов |
| Разворачивание MySQL (Dev Prom), установка Percona Operator for MySQL |
| Разворачивание DevPlatform |
| Разворачивание Sonatype Nexus Repository Manager, настройка аутентификации через OpenID Connect |
| Разворачивание SonarQube, настройка аутентификации через OpenID Connect |
| Разворачивание интеграционного ядра |
| Разворачивание Devprom ALM |
| Создание общего пространства имён Kubernetes, настройка TLS сертификатов |
| Установка oidc-proxy, получение доступа к Keycloak |
| Создание S3 бакета для хранения резервных копий Postgres |
| Создание клиентов gitlab/nexus/etc в keycloak для обеспечения единого входа |
| Создание и настройка сервисного пользователя openstack |
| Установка pgAdmin |
| Установка Prometheus Node Exporter для сбора телеметрии с операционной системы ноды Kubernetes |
| Операции с токеном (в рамках интеграции с Monitoring aaS) |
| Настройка каналов оповещения (в рамках интеграции с Monitoring aaS) |
| Настройка триггеров в Monitoring aaS |
В inventory-файлах Ansible указываются параметры, описывающие уникальность разворачиваемого инстанса VK Dev Platform:
- Доменные имена или IP-адреса узлов.
- Секреты в зашифрованном виде.
- Переопределения для переменных ролей (файлы
roles/<ИМЯ_РОЛИ>/defaults/main.yaml), если это необходимо.
Перед первичным запуском инсталлятора должны быть выполнены следующие предусловия:
- Корректно заполнены inventory и переменные для нового стенда.
- Установлено ПО Private Cloud 4.X. Подробнее об установке — в Руководстве по установке Private Cloud 4.X.
- Установлено ПО Docker версии XX для запуска контейнера с Ansible.