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

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

Предусловия

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

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

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

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

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

    # openstack user list
  3. Создайте пользователей в сервисном проекте 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.
  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 <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

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

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

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

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

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

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

    $ ssh <USERNAME>@<HOST_IP>

    где:

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

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

    $ ssh <NODE>

    где <NODE> — имя узла. Например, cpn003.

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

    $ sudo bash
  6. Авторизуйтесь в OpenStack:

    # source ~root/openrc.sh

Распаковка архива

  1. Скачайте архив, необходимый для установки VK Dev Platform.

  2. Распакуйте архив.

  3. Проверьте целостность содержимого архива командой:

    # unzip -t [archive_name]
  4. Загрузите пакеты в репозиторий:

    # 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

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

Таблица 1 — Роли Ansible

Роль

Функционал

Верхнеуровневые роли

devprom

Развёртывание Devprom ALM

fluentbit

Развёртывание Fluent Bit для сбора и обработки логов

front

Развёртывание VK Dev Platform

gitlab

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

hoe

Используется для запуска Terraform. Только при поставке VK Dev Platform в интеграции с Private Cloud

keycloak

Развёртывание Keycloak, создание областей безопасности (realm) для VK Dev Platform

nexus

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

percona

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

pgadmin

Установка pgAdmin

prometheus_node_exporter

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

redis

Развёртывание БД Redis

samsara

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

sonarqube

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

telegraf

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

zalando

Развёртывание Postgres и установка Zalando Postgres Operator

Зависимые роли

common

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

oidc-proxy

Установка OIDC Proxy, получение доступа к Keycloak

openstack

Создание и настройка сервисного пользователя OpenStack. Только при поставке VK Dev Platform в интеграции с Private Cloud

regcred

Создание секрета в кластере Kubernetes. Нужен для доступа к Docker-репозиторию для скачивания образов

S3

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

SSO

Создание клиентов (GitLab, Nexus или других) в Keycloak для обеспечения единого входа

vkcs_login

Операции с токеном (в рамках интеграции с Cloud Monitoring (MaaS). Только при поставке VK Dev Platform в интеграции с Private Cloud

vkcs_notification_channel

Настройка каналов оповещения (в рамках интеграции с MaaS). Только при поставке VK Dev Platform в интеграции с Private Cloud

vkcs_trigger

Настройка триггеров в MaaS. Только при поставке VK Dev Platform в интеграции с Private Cloud

Отключение функциональности VK Dev Platform

В VK Dev Platform предусмотрен механизм Feature flags, который позволяет включать/отключать функциональность VK Dev Platform.

Для включения функциональности установите значение true в файле roles/samsara/defaults/main.yaml в параметрах, указанных в таблице 2, при настройке Inventory перед установкой VK Dev Platform.

Таблица 2 — Функциональность VK Dev Platform

Функциональность

Параметр

Окружения

samsara_environments_feature_flag

Раннеры

samsara_runner_feature_flag

Вебхуки (интеграции)

samsara_subscriptions_feature_flag

Сервис подключений

samsara_service_connection_feature_flag

DevProm (разработка проекта)

samsara_alm_project_feature_flag

Хранилища артефактов (Nexus)

samsara_artifact_repository_feature_flag

Анализатор кода (Sonarqube)

samsara_code_analyzer_feature_flag

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

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

# 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

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