VK Dev Platform logo
Помощь
Обновлена 29 июля 2024 г. в 13:58

Запуск инсталлятора

Предусловия

Перед запуском инсталлятора должны быть выполнены следующие условия:

  • Подготовлено рабочее место с установленными 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

Чтобы в сервисном проекте OpenStack создать пользователей для VK Dev Platform:

  1. Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).

  2. Выведите список пользователей OpenStack:

    # openstack user list
  3. Создайте пользователей в сервисном проекте 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.
  4. Назначьте созданным пользователям роль 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.
  5. Убедитесь, что пользователям назначена роль 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.

  6. Через 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

  1. Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).

  2. Выполните команду:

    # 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

  1. Подключитесь к OpenStack (подробнее — в разделе Подключение к OpenStack).

  2. Выполните команду:

    # 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     |+--------------+----------+-------+-----------------------------+--------+-----------+

Подключение к OpenStack

  1. Откройте терминал.

  2. Выполните вход на деплой-ноду Private Cloud через SSH:

    $ ssh <USERNAME>@<HOST_IP>

    где:

    • <USERNAME> — логин, созданный при инсталляции Private Cloud (например, centos).
    • <HOST_IP> — IP-адрес деплой-ноды.
  3. Введите пароль от учётной записи пользователя или пройдите аутентификацию с помощью файла закрытого ключа.

  4. Подключитесь к одному из узлов:

    $ ssh <УЗЕЛ>

    где <УЗЕЛ> — имя узла. Например, cpn003.

  5. Получите права суперпользователя root:

    $ sudo bash
  6. Авторизуйтесь в 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

Установка VK Dev Platform

Выполните команду:

# 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

Все пароли для доступа к VK Dev Platform содержатся в inventory в зашифрованном виде.

Перечень ролей

Установка и обновление ПО выполняется при помощи системы управления конфигурациями ПО Ansible. Архив инсталлятора включает в себя перечень плейбуков, ролей и inventory, которые загружаются в доступный репозиторий Nexus.

Для установки и обновления конфигурации Платформы используется плейбук pb-data-plane.yaml.

В плейбуке перечислены роли, расположенные в порядке выполнения команд. Роли включают в себя набор задач, переменных и других артефактов, необходимых для настройки Платформы. Часть ролей (common, oidc-proxy, S3, SSO) являются вспомогательными, они используются в процессе запуска другими ролями, которые в свою очередь отвечают за Разворачивание и конфигурирование отдельных компонентов системы. В таблице ниже указан список используемых в инсталляторе ролей и их функционал.

Роль

Функционал

telegraf

Разворачивание Telegraf–агента для сбора метрик

zalando

Разворачивание Postgres и установка Zalando Postgres operator

keycloak

Разворачивание Keycloak, создание областей безопасности (realm) для DevPlatform

redis

Разворачивание БД Redis

gitlab

Разворачивание GitLab, установка GitLab proxy для обеспечения единого входа, настройка секретов и TLS сертификатов

percona

Разворачивание MySQL (Dev Prom), установка Percona Operator for MySQL

front

Разворачивание DevPlatform

nexus

Разворачивание Sonatype Nexus Repository Manager, настройка аутентификации через OpenID Connect

sonarqube

Разворачивание SonarQube, настройка аутентификации через OpenID Connect

samsara

Разворачивание интеграционного ядра

devprom

Разворачивание Devprom ALM

common

Создание общего пространства имён Kubernetes, настройка TLS сертификатов

oidc-proxy

Установка oidc-proxy, получение доступа к Keycloak

S3

Создание S3 бакета для хранения резервных копий Postgres

SSO

Создание клиентов gitlab/nexus/etc в keycloak для обеспечения единого входа

openstack

Создание и настройка сервисного пользователя openstack

pgadmin

Установка pgAdmin

prometheus_node_exporter

Установка Prometheus Node Exporter для сбора телеметрии с операционной системы ноды Kubernetes

vkcs_login

Операции с токеном (в рамках интеграции с Monitoring aaS)

vkcs_notification_channel

Настройка каналов оповещения (в рамках интеграции с Monitoring aaS)

vkcs_trigger

Настройка триггеров в Monitoring aaS

В inventory-файлах Ansible указываются параметры, описывающие уникальность разворачиваемого инстанса VK Dev Platform:

  • Доменные имена или IP-адреса узлов.
  • Секреты в зашифрованном виде.
  • Переопределения для переменных ролей (файлы roles/<ИМЯ_РОЛИ>/defaults/main.yaml), если это необходимо.

Перед первичным запуском инсталлятора должны быть выполнены следующие предусловия:

  • Корректно заполнены inventory и переменные для нового стенда.
  • Установлено ПО Private Cloud 4.X. Подробнее об установке — в Руководстве по установке Private Cloud 4.X.
  • Установлено ПО Docker версии XX для запуска контейнера с Ansible.