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 в 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

Чтобы в сервисном проекте 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 в VK Cloud или VK 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 в VK Cloud или VK 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 в VK Cloud или VK Private Cloud.

    В ответе на команды должна отображаться роль admin.

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

  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. Выполните вход на деплой-ноду VK Cloud или VK Private Cloud через SSH:

    $ ssh <USERNAME>@<HOST_IP>

    Здесь:

    • <USERNAME> — логин, созданный при инсталляции VK Cloud или VK 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 приведены в разделе Переменные ролей 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 указан список используемых в инсталляторе ролей и их функционал.

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

Роль

Функционал

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

devprom

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

fluentbit

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

front

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

gitlab

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

hoe

Используется для запуска Terraform. Только при поставке VK Dev Platform в интеграции с VK Cloud или VK 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 в интеграции с VK Cloud или VK Private Cloud

regcred

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

S3

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

SSO

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

vkcs_login

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

vkcs_notification_channel

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

vkcs_trigger

Настройка триггеров в Cloud Monitoring. Только при поставке VK Dev Platform в интеграции с VK Cloud или VK 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

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

samsara_teamstorm_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 в зашифрованном виде.