VK Data Platform logo
Помощь
Обновлена 21 августа 2026 г. в 15:32

Установка компонентов на деплой-ноде VK Data Platform

Перед началом установки компонентов на деплой-ноде VK Data Platform убедитесь, что:

  1. Выполнены условия, приведенные в разделе Предусловия.
  2. Выполнены шаги из инструкции Установка компонентов на деплой-ноде VK Private Cloud.

Чтобы установить компоненты на деплой-ноде VK Data Platform, выполните следующие шаги:

  1. Создайте сервисных пользователей OpenStack.
  2. Получите пароль для утилиты logaudit.
  3. Подключитесь к инсталляционному серверу.
  4. Распакуйте архив на инсталляционном сервере.
  5. Задайте переменные окружения на инсталляционном сервере.
  6. Настройте параметры ядра.
  7. Замените скрипт для самоподписанных сертификатов.
  8. Выполните второй запуск инсталлятора.

Создание сервисных пользователей OpenStack

  1. Подключитесь к деплой-ноде по SSH:

    $ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>

    Здесь:

    • <ЛОГИН> — логин пользователя Linux на деплой-ноде. Пример: deployer.
    • <IP_ДЕПЛОЙ_НОДЫ> — внешний IP-адрес деплой-ноды. Пример: 100.70.18.42.
  2. Подключитесь к управляющему узлу:

    $ ssh <УЗЕЛ>

    Здесь <УЗЕЛ> — имя управляющего узла.

  3. Переключитесь на пользователя root и загрузите переменные окружения из файла:

    $ sudo su# source /root/openrc.sh
  4. Задайте переменные окружения OpenStack:

    # export ATOM_PASSWORD="<ПАРОЛЬ_АТОМ>"# export DP_PASSWORD="<ПАРОЛЬ_DP>"# export PROJECT_ID="<ID_ПРОЕКТА>"# export AUTH_URL="<AUTH_URL>"

    Здесь:

    • <ПАРОЛЬ_АТОМ> — пароль для пользователя atom.
    • <ПАРОЛЬ_DP> — пароль для пользователя data-platformer.
    • <ID_ПРОЕКТА> — идентификатор проекта (значение отображается в веб-интерфейсе в настройках проекта).
    • <AUTH_URL> — URL-адрес аутентификации OpenStack (значение отображается в веб-интерфейсе в настройках проекта).
  5. Создайте пользователя atom и назначьте ему роль:

    # openstack user create --password "$ATOM_PASSWORD" atom# openstack role add --project "$PROJECT_ID" --user atom member
  6. Создайте пользователя data-platformer и назначьте ему роли:

    # openstack user create --password "$DP_PASSWORD" data-platformer# openstack role add --project "$PROJECT_ID" --user data-platformer mcs_k8s_admin# openstack role add --project "$PROJECT_ID" --user data-platformer mcs_admin_network# openstack role add --project "$PROJECT_ID" --user data-platformer mcs_co_owner
  7. Получите идентификаторы созданных пользователей и ролей:

    # ATOM_ROLE_ID=$(openstack role show member -f value -c id)# DP_ROLE_ID=$(openstack role show admin -f value -c id)# ATOM_USER_ID=$(openstack user show atom -f value -c id)# DP_USER_ID=$(openstack user show data-platformer -f value -c id)# ADMIN_TOKEN=$(openstack token issue -f value -c id)# PROJECT_DOMAIN=$(openstack role assignment list --user atom --user-domain default --names --format value --column Project | cut -d'@' -f2)# PROJECT_NAME=$(openstack role assignment list --user atom --user-domain default --names --format value --column Project | cut -d'@' -f1)# echo $ATOM_ROLE_ID# echo $DP_ROLE_ID# echo $ATOM_USER_ID# echo $DP_USER_ID

    Сохраните значения переменных ATOM_PASSWORD, DP_PASSWORD, ATOM_ROLE_ID, DP_ROLE_ID, ATOM_USER_ID, DP_USER_ID, PROJECT_ID, PROJECT_DOMAIN, PROJECT_NAME — они потребуются на следующих шагах.

Получение пароля для утилиты logaudit

  1. Подключитесь к деплой-ноде по SSH:

    $ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>

    Здесь:

    • <ЛОГИН> — логин пользователя Linux на деплой-ноде. Пример: deployer.
    • <IP_ДЕПЛОЙ_НОДЫ> — внешний IP-адрес деплой-ноды. Пример: 100.70.18.42.
  2. Получите параметр пароля для утилиты logaudit:

    $ cat /opt/vkcloud/inventory/vkcloud/data-platform/group_vars/vkcloud/vault-data-platform.yml | grep vault_data_master_audit_s2s_password

    Сохраните значение параметра vault_data_master_audit_s2s_password — оно потребуется на следующих шагах.

Подключение к инсталляционному серверу

  1. Подключитесь к деплой-ноде по SSH:

    $ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>

    Здесь:

    • <ЛОГИН> — логин пользователя Linux на деплой-ноде. Пример: deployer.
    • <IP_ДЕПЛОЙ_НОДЫ> — внешний IP-адрес деплой-ноды. Пример: 100.70.18.42.
  2. Подключитесь к инсталляционному серверу с router-узла:

    $ ssh router
  3. Скопируйте приватную часть SSH-ключа, указанного при создании инсталляционного сервера и трех узлов для кластера Kubernetes, в файл .ssh/id_rsa на router-узле.

  4. Перейдите на инсталляционный сервер, развернутый в VK Private Cloud:

    $ ssh <ЛОГИН>@<IP-АДРЕС>

    Здесь:

    • <ЛОГИН> — логин пользователя сервера.
    • <IP-АДРЕС> — IP-адрес сервера.

Распаковка архива на инсталляционном сервере

  1. Создайте директорию и распакуйте архив инсталлятора:

    $ mkdir -p ~/vkcloud$ cd ~/vkcloud$ tar -xPf ~/<ИМЯ_АРХИВА>.tar

    Здесь <ИМЯ_АРХИВА> — имя файла архива VK Data Platform.

  2. Скопируйте сертификаты в формате PEM в директорию ~/vkcloud/data-platform/ssl/.

  3. Скопируйте сертификат (файл tls.crt) и приватный ключ (файл tls.key) для Личного кабинета в формате PEM в директорию ~/vkcloud/data-platform/ssl/. Не меняйте имена файлов.

  4. При наличии собственного корневого сертификата:

    1. Поместите корневой сертификат в директорию ~/vkcloud/data-platform/ssl/ca/.
    2. Добавьте сертификат в доверенное хранилище на каждый узел Kubernetes.
    3. Перезапустите containerd.

Конфигурация переменных окружения на инсталляционном сервере

Компонент Atom

В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/helm_atom-matreshka.yaml заполните переменные:

  • helm_atom_s3_endpoint_public — эндпоинт S3 с указанием протокола. Пример: http://hb.corpcloud.devmail.ru.
  • helm_atom_s3_region — регион S3. Пример: ru-msk.
  • helm_atom_keystone_admin_user — пользователь, созданный для atom. Укажите значение atom.
  • helm_atom_keystone_auth_uri — URL-адрес аутентификации, Auth URL из настроек проекта. Пример: https://lk194-1.dp.corp.devmail.ru/infra/identity/v3/.
  • helm_atom_keystone_admin_project_name — название проекта из переменной PROJECT_NAME, сохраненное на шаге создания сервисных пользователей. Пример: mcs5844961147.
  • helm_atom_keystone_admin_project_domain_name — доменное имя проекта из переменной PROJECT_DOMAIN, сохраненное на шаге создания сервисных пользователей. Пример: mcs2047157859.

Компонент Windmill

В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/helm_windmill-matreshka.yaml заполните переменные:

  • helm_maintenance_backup_s3_endpoint — эндпоинт S3 без указания протокола. Пример: hb.corpcloud.devmail.ru.
  • helm_maintenance_backup_s3_region — регион S3. Пример: ru-msk.
  • helm_maintenance_backup_s3_secure — протокол публичного эндпоинта S3: false для HTTP, true для HTTPS.
  • helm_windmill_standalone_mode_enabled — включение режима Standalone. Укажите значение true.
  • helm_windmill_keystone_auth_uri — URL-адрес аутентификации, Auth URL из настроек проекта. Пример: https://lk194-1.dp.corp.devmail.ru/infra/identity/v3/.
  • helm_windmill_keystone_admin_user — пользователь, созданный для atom. Укажите значение atom.
  • helm_windmill_keystone_admin_role_id — идентификатор роли из параметра ATOM_ROLE_ID, сохраненный на шаге создания сервисных пользователей. Пример: 49d7dce513224bf38472b5d98c693d8e.
  • helm_windmill_sa_id — идентификатор пользователя из параметра ATOM_USER_ID, сохраненный на шаге создания сервисных пользователей. Пример: 5ad372001ecc4c14ac8e7ab82193772a.
  • helm_windmill_sa_project_id — идентификатор проекта из параметра PROJECT_ID, сохраненный на шаге создания сервисных пользователей. Пример: e0fc7342a75a4b1f9cae949df1a1fe24.

Компонент Kosmos

В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/helm_kosmos-matreshka.yaml заполните переменную:

  • helm_kosmos_nexus_url — DNS-имя веб-интерфейса Nexus. Пример: https://dp-repo.dp.corp.devmail.ru.

Компонент Data Platformer

В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/helm_data-platformer-matreshka.yaml заполните переменные:

  • helm_data_platformer_s3_endpoint_url — эндпоинт S3 с указанием протокола. Пример: https://hb.corpcloud.devmail.ru.

  • helm_data_platformer_s3_default_region — регион S3. Пример: ru-msk.

  • helm_data_platformer_standalone_subnets:

    • cidr — адрес подсети узлов кластера с маской сети.

    • forbidden_ip_addresses — запрещенные IP-адреса, которые kube-vip не может использовать. Первыми в список (в указанном порядке) добавьте пять последних адресов сети — они нужны для работы платформы и веб-интерфейса:

      1. <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.255 — для работы бэкенда.
      2. <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.254 — для веб-интерфейса.
      3. <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.253 — для веб-интерфейса.
      4. <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.252 — для CIAM, Ingress.
      5. <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.251 — для работы бэкенда.

      Далее укажите адреса узлов кластера Kubernetes в произвольном порядке:

      • <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.1 — первый узел кластера Kubernetes.
      • <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.2 — второй узел кластера Kubernetes.
      • <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.3 — третий узел кластера Kubernetes.
      • <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.n — любой другой узел кластера Kubernetes.

    Пример:

    helm_data_platformer_standalone_subnets: [  {    "id": "00000000-0000-0000-0000-000000000000",    "name": "local",    "cidr": "10.139.33.128/25",    "network_id": "00000000-0000-0000-0000-000000000000",    "network_name": "local",    "sdn": "local",    "forbidden_ip_addresses": [      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.255",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.254",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.253",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.252",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.251",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.1",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.2",      "<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.3"    ]  }]

    Здесь <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP> — первые три октета запрещенных IP-адресов. Пример: если подсеть — 10.139.33.0/25, первые три октета — 10.139.33.

  • helm_data_platformer_docker_registry_address — эндпоинт реестра Docker с образами компонентов узла рабочих нагрузок. Пример: dp-repo-dp.dp.corp.devmail.ru.

  • helm_data_platformer_multiplexer_grpc_host — домен для gRPC API MVM из пререквизитов (DNS-запись data-multiplexer-api). Пример: data-multiplexer-api.dp.corp.devmail.ru.

  • helm_data_platformer_openstack_identity_endpoint — URL-адрес аутентификации, Auth URL из настроек проекта. Пример: https://lk194-1.dp.corp.devmail.ru/infra/identity/v3/.

  • helm_data_platformer_openstack_service_role — идентификатор роли из переменной DP_ROLE_ID, сохраненный на шаге создания сервисных пользователей. Пример: 7d584c57bcc54c5c9c70b633ec0a738b.

  • helm_data_platformer_openstack_user_id — идентификатор пользователя из параметра DP_USER_ID, сохраненный на шаге создания сервисных пользователей. Пример: e1619125546a4aaf9e0600966f4ce9e5.

  • helm_data_platformer_controllers:

    • app.enable_service — по умолчанию false. Установите true, чтобы использовать новый app-контроллер.

    • distributor.enable_service — укажите true для включения виртуальных машин мультиплексора (MVM).

    • distributor.project_id — идентификатор проекта, в котором развернут кластер Kubernetes.

    • distributor.subnet_id — идентификатор подсети, в которой развернут кластер Kubernetes.

    • distributor.network_id — идентификатор сети, в которой развернут кластер Kubernetes.

    • distributor.security_groups — идентификаторы групп безопасности, разрешающих доступ к кластеру Kubernetes. Получите командой:

      # openstack server show $(openstack server list --project=<ID_ПРОЕКТА> --format json | jq -r '.[] | select(.Name | test("kube-\\d+")) | .ID ' | head -n 1) -c security_groups
    • distributor.default_azs — названия зон доступности для развертывания MVM.

    • distributor.min_free_ifaces — минимальное количество свободных соединений на каждой MVM. Укажите значение 4.

    • distributor.ifaces_per_vm — общее количество соединений, доступных на каждой MVM. Укажите значение 16.

    • distributor.min_vms — минимальное поддерживаемое количество MVM. Укажите значение 0.

    • distributor.default_preset — имя пресета по умолчанию для создания MVM.

    • distributor.presets — пресеты для MVM. Укажите хотя бы один пресет с идентификатором флейвора, идентификатором образа, типом и размером диска. Для работы Route Reflector и MVM достаточно 2 CPU и 2 ГБ RAM. Получите их на управляющем узле от имени пользователя с правами администратора OpenStack командой:

      # openstack flavor list --format json | jq '.[] | select(.VCPUs == 2 and .RAM == 2048)'

      Типы дисков получите командой (выберите те, у которых значение параметра Is Publictrue):

      # openstack volume type list

      Идентификатор образа MVM:

      # openstack image show redos.0.0.7 --format=json | jq .id

      Идентификатор образа Route Reflector:

      # openstack image show redos.0.0.1 --format=json | jq .id
    • rr.enable_service — укажите true для включения Route Reflector.

    • rr.project_id — идентификатор проекта, в котором развернут кластер Kubernetes.

    • rr.network_id — идентификатор сети, в которой развернут кластер Kubernetes.

    • rr.subnet_id — идентификатор подсети, в которой развернут кластер Kubernetes.

    • rr.security_groups — идентификаторы групп безопасности.

    • rr.flavor_id — идентификатор флейвора для Route Reflector.

    • rr.image_id — идентификатор образа Route Reflector.

    • rr.volume_size — размер диска Route Reflector. Укажите значение 20.

    • rr.volume_type — тип диска Route Reflector.

    • rr.bird_interface — сетевой интерфейс для BGP. Укажите значение ens3.

    • rr.prefix — префикс для BGP. Укажите 198.18.0.0/19.

    • rr.config — конфигурация BGP-соседства для двух Route Reflector. Укажите два элемента — каждый RR указывает другой как BGP-соседа. В каждом элементе задайте:

      • router_id — IP-адрес данного Route Reflector (BGP-идентификатор). В первом элементе укажите 198.18.18.32, во втором — 198.18.18.33.
      • neighbor_address — IP-адрес другого Route Reflector (BGP-соседа). В первом элементе укажите 198.18.18.33, во втором — 198.18.18.32.
      • peer_group — группа BGP-соседей. Укажите значение kubevip-nodes.
      • peer_as — номер Autonomous System (AS) соседа. Укажите значение 65438.
      • az — зона доступности, в которой работает Route Reflector.

    Пример:

    helm_data_platformer_controllers:  app:    enable_service: false  distributor:    project_id: "<ID_ПРОЕКТА>"    security_groups: ["<ID_ГРУППЫ_БЕЗОПАСНОСТИ>"]    subnet_id: "<ID_ПОДСЕТИ>"    default_azs: ["<ЗОНА_ДОСТУПНОСТИ>"]    default_preset: "standard"    enable_service: true    min_free_ifaces: 4    ifaces_per_vm: 16    min_vms: 0    network_id: "<ID_СЕТИ>"    presets:      standard:        flavor_id: "<ID_ФЛЕЙВОРА>"        image_id: "<ID_ОБРАЗА_MVM>"        volume_size: 20        volume_type: "<ТИП_ДИСКА>"  rr:    enable_service: true    project_id: "<ID_ПРОЕКТА>"    network_id: "<ID_СЕТИ>"    subnet_id: "<ID_ПОДСЕТИ>"    security_groups: ["<ID_ГРУППЫ_БЕЗОПАСНОСТИ>"]    flavor_id: "<ID_ФЛЕЙВОРА>"    image_id: "<ID_ОБРАЗА_ROUTE_REFLECTOR>"    volume_size: 20    volume_type: "<ТИП_ДИСКА>"    bird_interface: "ens3"    prefix: "198.18.0.0/19"    config:      - router_id: "198.18.18.32"        neighbor_address: "198.18.18.33"        peer_group: "kubevip-nodes"        peer_as: 65438        az: "<ЗОНА_ДОСТУПНОСТИ>"      - router_id: "198.18.18.33"        neighbor_address: "198.18.18.32"        peer_group: "kubevip-nodes"        peer_as: 65438        az: "<ЗОНА_ДОСТУПНОСТИ>"

    Здесь:

    • <ID_ПРОЕКТА> — идентификатор проекта, в котором развернут кластер Kubernetes, сохраненный на шаге создания сервисных пользователей.
    • <ID_ГРУППЫ_БЕЗОПАСНОСТИ> — идентификатор группы безопасности, с которой разрешен доступ к кластеру Kubernetes.
    • <ID_ПОДСЕТИ> — идентификатор подсети, в которой развернут кластер Kubernetes.
    • <ЗОНА_ДОСТУПНОСТИ> — название зоны доступности для развертывания MVM и Route Reflector.
    • <ID_СЕТИ> — идентификатор сети, в которой развернут кластер Kubernetes.
    • <ID_ФЛЕЙВОРА> — идентификатор флейвора для MVM и Route Reflector.
    • <ID_ОБРАЗА_MVM> — идентификатор образа MVM, полученный на шаге загрузки образов ВМ.
    • <ТИП_ДИСКА> — тип диска для MVM и Route Reflector.
    • <ID_ОБРАЗА_ROUTE_REFLECTOR> — идентификатор образа Route Reflector, полученный на шаге загрузки образов ВМ.
  • helm_data_platformer_extensions_global_network_policy:

    • internal_nets — IP-адреса внешних систем, которые позволят разрешить доступ из зон service, dmz, trusted, db. Получите через nslookup и добавьте в формате address/32:

      • адрес S3 — из значения переменной helm_data_platformer_s3_endpoint_url;
      • адрес Nexus — из значения переменной helm_repo_url в файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/common.yml;
      • адрес OpenStack — из настройки helm_data_platformer_openstack_identity_endpoint (эти же адреса используются для LogaaS и MonaaS);
      • адрес MVM — из пререквизитов (DNS-запись data-multiplexer-api).
    • nodes_nets — подсеть узлов кластера в формате <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.0/24.

      Здесь <ПЕРВЫЕ_ТРИ_ОКТЕТА_IP> — первые три октета подсети узлов кластера. Пример: если кластер работает в подсети 10.0.5.0/24, первые три октета — это 10.0.5 и ввести следует 10.0.5.0/24.

    • ext_nets — IP-адреса внешних сетей, с которых разрешен доступ. По умолчанию ["0.0.0.0/0"].

    • overrides — переопределения сетевой политики. Укажите:

      overrides:  kubeNode:    namespace: global()    ports: ["80:65535"]

Компонент Nexus

В файле ~/ansible-standalone/inventory/group_vars/matreshka/nexus.yml заполните переменные:

  • nexus_s3_bucket — имя бакета для S3. Пример: data-platform-nexus-backup.
  • nexus_s3_region — регион. Пример: ru-msk.
  • nexus_s3_endpoint — эндпоинт S3 с указанием протокола. Пример: http://hb.corpcloud.devmail.ru.

Компонент HAProxy

В файле ~/ansible-standalone/inventory/group_vars/matreshka/haproxy.yml заполните переменные:

  • nexus_web_domain — DNS-имя веб-интерфейса Nexus. Пример: dp-repo.dp.corp.devmail.ru.
  • nexus_control_plane_domain — DNS-имя реестра Docker с образами компонентов управляющего узла. Пример: dp-repo-cp.dp.corp.devmail.ru.
  • nexus_data_plane_domain — DNS-имя реестра Docker с образами компонентов узла рабочих нагрузок. Пример: dp-repo-dp.dp.corp.devmail.ru.

Общие параметры

В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/common.yml заполните переменные:

  • helm_image_registry — DNS-имя реестра Docker с образами компонентов управляющего узла. Пример: dp-repo-cp.dp.corp.devmail.ru.
  • helm_registry — DNS-имя реестра Docker с образами компонентов узла рабочих нагрузок. Пример: dp-repo-dp.dp.corp.devmail.ru.
  • nexus_web_domain — DNS-имя веб-интерфейса Nexus. Пример: dp-repo.dp.corp.devmail.ru.
  • helm_repo_url — адрес Helm-репозитория в Nexus. Укажите по схеме: https://<DNS_WEB>/repository/public-mcs-helm, где <DNS_WEB> — DNS-имя веб-интерфейса Nexus. Пример: https://dp-repo.dp.corp.devmail.ru/repository/public-mcs-helm.
  • lk_domain — адрес Личного кабинета. Пример: lk50-112.dp.corp.devmail.ru.
  • laas_public_endpoint_domain — эндпоинт LogaaS VK Private Cloud (Cloud Logging). Пример: cloudlogs50-112.dp.corp.devmail.ru.
  • maas_public_endpoint_domain — эндпоинт MonaaS VK Private Cloud (Cloud Monitoring). Пример: cloudmon50-112.dp.corp.devmail.ru.
  • openstack_public_url — URL-адрес OpenStack VK Private Cloud. Пример: lk50-112.dp.corp.devmail.ru.
  • disk_name — имя диска, добавленного в VolumeGroup при развертывании кластера Base Infra. Пример: vdb.
  • ssh_kube_user — имя пользователя для подключения к серверам кластера Kubernetes. Пример: cloud-user.
  • ssh_key_path — имя файла SSH-ключа для подключения к серверам кластера Kubernetes. Пример: id_rsa.

В этом же файле заполните переменные для резервного копирования БД управляющего узла:

  • s3_backup_url — адрес S3 для резервных копий с указанием протокола. Пример: http://hb.corpcloud.devmail.ru/.
  • s3_bucket_name — имя бакета для резервных копий.
  • s3_region — регион S3 для бакета резервных копий. Пример: ru-msk.
  • backup_full_start — шаблон cron для создания резервных копий. Пример: 0 15 * * * — один раз в день в 15:00.
  • backup_full_keep_time — срок хранения резервной копии в днях. Пример: 14.
  • backup_full_enabled — включение создания резервных копий. По умолчанию true. Если указать false, резервные копии создаваться не будут.

Файл envvars.env

Создайте файл ~/envvars.env со следующим содержимым:

$ cat > ~/envvars.env << 'EOF'S3_ACCESS_KEY=<КЛЮЧ_ДОСТУПА_S3>S3_SECRET_KEY=<СЕКРЕТНЫЙ_КЛЮЧ_S3>S3_BACKUP_ACCESS_KEY=<КЛЮЧ_ДОСТУПА_РЕЗЕРВНЫЕ_КОПИИ_S3_CP>S3_BACKUP_SECRET_KEY=<СЕКРЕТНЫЙ_КЛЮЧ_РЕЗЕРВНЫЕ_КОПИИ_S3_CP>VAULT_HELIUM_ACCESS_TOKEN=<ТОКЕН_ДОСТУПА_HELIUM>VAULT_HELIUM_AUTH_SALT=<СОЛЬ_АУТЕНТИФИКАЦИИ_HELIUM>VAULT_HELIUM_JWT_AUTH=<JWT_КЛЮЧ_HELIUM>NEXUS_S3_BACKUP_ACCESS_KEY=<КЛЮЧ_ДОСТУПА_РЕЗЕРВНЫЕ_КОПИИ_S3_NEXUS>NEXUS_S3_BACKUP_SECRET_KEY=<СЕКРЕТНЫЙ_КЛЮЧ_РЕЗЕРВНЫЕ_КОПИИ_S3_NEXUS>DP_OS_PASSWORD=<ПАРОЛЬ_DP>AT_OS_PASSWORD=<ПАРОЛЬ_АТОМ>ANSIBLE_ENV=matreshkaREG_AUTH_URL=<AUTH_URL>REG_PASSWORD=<ПАРОЛЬ_АТОМ>REG_PROJECT_ID=<ID_ПРОЕКТА>VAULT_WINDMILL_LOG_AUDIT_PASSWORD=<PASSWORD>VAULT_ATOM_AUDIT_S2S_PASSWORD=<PASSWORD>EOF

Здесь:

  • <КЛЮЧ_ДОСТУПА_S3> — публичный ключ для доступа к S3-хранилищу.
  • <СЕКРЕТНЫЙ_КЛЮЧ_S3> — приватный ключ для доступа к S3-хранилищу.
  • <КЛЮЧ_ДОСТУПА_РЕЗЕРВНЫЕ_КОПИИ_S3_CP> — публичный ключ для доступа к S3-хранилищу для резервных копий БД управляющего узла.
  • <СЕКРЕТНЫЙ_КЛЮЧ_РЕЗЕРВНЫЕ_КОПИИ_S3_CP> — приватный ключ для доступа к S3-хранилищу для резервных копий БД управляющего узла.
  • <ТОКЕН_ДОСТУПА_HELIUM> — токен доступа Helium.
  • <СОЛЬ_АУТЕНТИФИКАЦИИ_HELIUM> — секретная строка (salt) для формирования и проверки данных аутентификации Helium в Vault.
  • <JWT_КЛЮЧ_HELIUM> — JWT-токен для аутентификации Helium в Vault.
  • <КЛЮЧ_ДОСТУПА_РЕЗЕРВНЫЕ_КОПИИ_S3_NEXUS> — публичный ключ для доступа к S3-хранилищу для резервных копий Nexus.
  • <СЕКРЕТНЫЙ_КЛЮЧ_РЕЗЕРВНЫЕ_КОПИИ_S3_NEXUS> — приватный ключ для доступа к S3-хранилищу для резервных копий Nexus.
  • <ПАРОЛЬ_DP> — пароль пользователя data-platformer, сохраненный на шаге создания сервисных пользователей.
  • <ПАРОЛЬ_АТОМ> — пароль пользователя atom, сохраненный на шаге создания сервисных пользователей.
  • <AUTH_URL> — адрес Keystone на стенде.
  • <ID_ПРОЕКТА> — идентификатор проекта, сохраненный на шаге создания сервисных пользователей.
  • <PASSWORD> — значение параметра vault_data_master_audit_s2s_password, полученное на шаге Получение пароля для утилиты logaudit.

Настройка параметров ядра

  1. На узле Kubernetes создайте файл /etc/sysctl.d/99-inotify-instances.conf со следующим содержимым:

    fs.inotify.max_user_instances=512
  2. Примените изменение:

    $ sudo sysctl -p /etc/sysctl.d/99-inotify-instances.conf

Замена скрипта для самоподписанных сертификатов

  1. Замените скрипт по пути ~/vkcloud/data-platform/scripts/common_func.sh следующим содержимым:

  2. В файле ~/ansible-standalone/playbooks/helm-prepare.yml замените строку:

    ca_bundle_path: "/tmp/ca-bundle.crt"

    на:

    ca_bundle_path: "/tmp/ca-bundle/ca-bundle.crt"

Второй запуск инсталлятора

  1. Перейдите в рабочую директорию инсталлятора и запустите CLI инсталляции:

    $ cd ~/vkcloud/data-platform/$ ./shellkunchik
  2. Выберите целевую среду Матрешка и нажмите ENTER.

  3. Выберите тип операции Первичная установка и нажмите ENTER.

  4. Выберите Шаг 2: Установка DP в подготовленный кластер Kubernetes и нажмите ENTER.

  5. Выберите конфигурацию:

    • Матрешка 3+1 — если кластер Kubernetes развернут в одной зоне;
    • Матрешка 3+1 Мультизоны — если кластер Kubernetes развернут в нескольких зонах доступности.
  6. Проверьте путь к файлу kubeconfig и нажмите ENTER.

  7. (Опционально) Включите параметр Режим отладки, чтобы получить лог установки. Опция отключена по умолчанию.

    Чтобы включить или отключить опцию, переместите курсор на нее и нажмите клавишу ПРОБЕЛ.

  8. Нажмите ENTER.

  9. Проверьте, что все переменные заданы корректно, и нажмите ENTER.

  10. Проверьте корректность выбранных параметров для подключения к кластеру.

  11. Нажмите ENTER. Запустится процесс установки.

  12. После завершения установки откройте Личный кабинет VK Data Platform по адресу https://<АДРЕС_ЛК>/app в браузере.

    Здесь <АДРЕС_ЛК> — адрес Личного кабинета VK Data Platform, отличный от того, который использовался в переменной OS_PROJECT_ID при загрузке образов ВМ.

  13. Войдите в Личный кабинет, используя почту и пароль.

  14. Назначьте квоты на проект:

    1. Создайте файл set-platformer-quota.sh на деплой-ноде:

    2. Сделайте скрипт исполняемым:

      $ chmod +x set-platformer-quota.sh
    3. Получите идентификатор проекта:

      1. Нажмите на имя пользователя в шапке страницы.
      2. Перейдите в раздел Настройки проектаTerraform. Сохраните идентификатор Project ID.
    4. Задайте переменные окружения:

      $ PROJECT_ID=<ID_ПРОЕКТА> CLUSTER_ID=00000000-0000-0000-0000-000000000000 CPU_CORES=<CPU> RAM_MB=<RAM_МиБ> DISK_GB=<ДИСК_ГБ> VOL_COUNT=<КОЛИЧЕСТВО_ДИСКОВ>

      Здесь:

      • <ID_ПРОЕКТА> — идентификатор проекта, полученный на предыдущем шаге, в hex-формате.
      • <CPU> — количество CPU (может быть дробным).
      • <RAM_МиБ> — количество RAM в мебибайтах.
      • <ДИСК_ГБ> — объем диска в ГБ.
      • <КОЛИЧЕСТВО_ДИСКОВ> — количество дисков, доступных для приложений.
    5. Запустите скрипт:

      $ ./set-platformer-quota.sh set

      После выполнения скрипта будут доступны как проектные, так и кластерные квоты.

    6. Проверьте квоты:

      $ ./set-platformer-quota.sh info
  15. Создайте группы безопасности default и allow_all для внешних сетей. При создании экземпляра сервиса используйте только внешние сети с этими группами безопасности.

  16. Проверьте результаты установки VK Data Platform:

    1. Убедитесь, что в левом меню присутствует вкладка Data Platform.
    2. Перейдите в раздел Data PlatformЭкземпляры сервисов.
    3. Нажмите кнопку Создать экземпляр.
    4. Выберите конфигурацию сервиса Кластер.
    5. Нажмите кнопку Следующий шаг.
    6. Выберите опцию Продвинутая.
    7. Убедитесь, что в поле Тип диска data есть выпадающий список с типом диска.
  17. Если при установке VK Data Platform возникла ошибка:

    1. Перезапустите инсталлятор с флагом --debug:

      $ ./shellkunchik --debug
    2. Повторно выполните шаги настроек, описанные в этом разделе.

    3. Ознакомьтесь с подробными логами ошибок и исправьте их.

Была ли статья полезна?