Установка компонентов на деплой-ноде VK Data Platform
Перед началом установки компонентов на деплой-ноде VK Data Platform убедитесь, что:
- Выполнены условия, приведенные в разделе Предусловия.
- Выполнены шаги из инструкции Установка компонентов на деплой-ноде VK Private Cloud.
Чтобы установить компоненты на деплой-ноде VK Data Platform, выполните следующие шаги:
- Создайте сервисных пользователей OpenStack.
- Получите пароль для утилиты logaudit.
- Подключитесь к инсталляционному серверу.
- Распакуйте архив на инсталляционном сервере.
- Задайте переменные окружения на инсталляционном сервере.
- Настройте параметры ядра.
- Замените скрипт для самоподписанных сертификатов.
- Выполните второй запуск инсталлятора.
-
Подключитесь к деплой-ноде по SSH:
$ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>Здесь:
<ЛОГИН>— логин пользователя Linux на деплой-ноде. Пример:deployer.<IP_ДЕПЛОЙ_НОДЫ>— внешний IP-адрес деплой-ноды. Пример:100.70.18.42.
-
Подключитесь к управляющему узлу:
$ ssh <УЗЕЛ>Здесь
<УЗЕЛ>— имя управляющего узла. -
Переключитесь на пользователя
rootи загрузите переменные окружения из файла:$ sudo su# source /root/openrc.sh -
Задайте переменные окружения 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 (значение отображается в веб-интерфейсе в настройках проекта).
-
Создайте пользователя
atomи назначьте ему роль:# openstack user create --password "$ATOM_PASSWORD" atom# openstack role add --project "$PROJECT_ID" --user atom member -
Создайте пользователя
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 -
Получите идентификаторы созданных пользователей и ролей:
# 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— они потребуются на следующих шагах.
-
Подключитесь к деплой-ноде по SSH:
$ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>Здесь:
<ЛОГИН>— логин пользователя Linux на деплой-ноде. Пример:deployer.<IP_ДЕПЛОЙ_НОДЫ>— внешний IP-адрес деплой-ноды. Пример:100.70.18.42.
-
Получите параметр пароля для утилиты
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— оно потребуется на следующих шагах.
-
Подключитесь к деплой-ноде по SSH:
$ ssh <ЛОГИН>@<IP_ДЕПЛОЙ_НОДЫ>Здесь:
<ЛОГИН>— логин пользователя Linux на деплой-ноде. Пример:deployer.<IP_ДЕПЛОЙ_НОДЫ>— внешний IP-адрес деплой-ноды. Пример:100.70.18.42.
-
Подключитесь к инсталляционному серверу с router-узла:
$ ssh router -
Скопируйте приватную часть SSH-ключа, указанного при создании инсталляционного сервера и трех узлов для кластера Kubernetes, в файл
.ssh/id_rsaна router-узле. -
Перейдите на инсталляционный сервер, развернутый в VK Private Cloud:
$ ssh <ЛОГИН>@<IP-АДРЕС>Здесь:
<ЛОГИН>— логин пользователя сервера.<IP-АДРЕС>— IP-адрес сервера.
-
Создайте директорию и распакуйте архив инсталлятора:
$ mkdir -p ~/vkcloud$ cd ~/vkcloud$ tar -xPf ~/<ИМЯ_АРХИВА>.tarЗдесь
<ИМЯ_АРХИВА>— имя файла архива VK Data Platform. -
Скопируйте сертификаты в формате PEM в директорию
~/vkcloud/data-platform/ssl/. -
Скопируйте сертификат (файл
tls.crt) и приватный ключ (файлtls.key) для Личного кабинета в формате PEM в директорию~/vkcloud/data-platform/ssl/. Не меняйте имена файлов. -
При наличии собственного корневого сертификата:
- Поместите корневой сертификат в директорию
~/vkcloud/data-platform/ssl/ca/. - Добавьте сертификат в доверенное хранилище на каждый узел Kubernetes.
- Перезапустите
containerd.
- Поместите корневой сертификат в директорию
В файле ~/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.
В файле ~/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.
В файле ~/ansible-standalone/inventory/group_vars/matreshka_kube/helm_kosmos-matreshka.yaml заполните переменную:
helm_kosmos_nexus_url— DNS-имя веб-интерфейса Nexus. Пример:https://dp-repo.dp.corp.devmail.ru.
В файле ~/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 не может использовать. Первыми в список (в указанном порядке) добавьте пять последних адресов сети — они нужны для работы платформы и веб-интерфейса:<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.255— для работы бэкенда.<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.254— для веб-интерфейса.<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.253— для веб-интерфейса.<ПЕРВЫЕ_ТРИ_ОКТЕТА_IP>.252— для CIAM, Ingress.<ПЕРВЫЕ_ТРИ_ОКТЕТА_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 Public—true):# 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: falsedistributor:project_id: "<ID_ПРОЕКТА>"security_groups: ["<ID_ГРУППЫ_БЕЗОПАСНОСТИ>"]subnet_id: "<ID_ПОДСЕТИ>"default_azs: ["<ЗОНА_ДОСТУПНОСТИ>"]default_preset: "standard"enable_service: truemin_free_ifaces: 4ifaces_per_vm: 16min_vms: 0network_id: "<ID_СЕТИ>"presets:standard:flavor_id: "<ID_ФЛЕЙВОРА>"image_id: "<ID_ОБРАЗА_MVM>"volume_size: 20volume_type: "<ТИП_ДИСКА>"rr:enable_service: trueproject_id: "<ID_ПРОЕКТА>"network_id: "<ID_СЕТИ>"subnet_id: "<ID_ПОДСЕТИ>"security_groups: ["<ID_ГРУППЫ_БЕЗОПАСНОСТИ>"]flavor_id: "<ID_ФЛЕЙВОРА>"image_id: "<ID_ОБРАЗА_ROUTE_REFLECTOR>"volume_size: 20volume_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: 65438az: "<ЗОНА_ДОСТУПНОСТИ>"- router_id: "198.18.18.33"neighbor_address: "198.18.18.32"peer_group: "kubevip-nodes"peer_as: 65438az: "<ЗОНА_ДОСТУПНОСТИ>"Здесь:
<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).
- адрес S3 — из значения переменной
-
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"]
-
В файле ~/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.
В файле ~/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 со следующим содержимым:
$ 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.
-
На узле Kubernetes создайте файл
/etc/sysctl.d/99-inotify-instances.confсо следующим содержимым:fs.inotify.max_user_instances=512 -
Примените изменение:
$ sudo sysctl -p /etc/sysctl.d/99-inotify-instances.conf
-
Замените скрипт по пути
~/vkcloud/data-platform/scripts/common_func.shследующим содержимым: -
В файле
~/ansible-standalone/playbooks/helm-prepare.ymlзамените строку:ca_bundle_path: "/tmp/ca-bundle.crt"на:
ca_bundle_path: "/tmp/ca-bundle/ca-bundle.crt"
-
Перейдите в рабочую директорию инсталлятора и запустите CLI инсталляции:
$ cd ~/vkcloud/data-platform/$ ./shellkunchik -
Выберите целевую среду
Матрешкаи нажмите ENTER. -
Выберите тип операции
Первичная установкаи нажмите ENTER. -
Выберите
Шаг 2: Установка DP в подготовленный кластер Kubernetesи нажмите ENTER. -
Выберите конфигурацию:
Матрешка 3+1— если кластер Kubernetes развернут в одной зоне;Матрешка 3+1 Мультизоны— если кластер Kubernetes развернут в нескольких зонах доступности.
-
Проверьте путь к файлу kubeconfig и нажмите ENTER.
-
(Опционально) Включите параметр
Режим отладки, чтобы получить лог установки. Опция отключена по умолчанию.Чтобы включить или отключить опцию, переместите курсор на нее и нажмите клавишу
ПРОБЕЛ. -
Нажмите ENTER.
-
Проверьте, что все переменные заданы корректно, и нажмите ENTER.
-
Проверьте корректность выбранных параметров для подключения к кластеру.
-
Нажмите ENTER. Запустится процесс установки.
-
После завершения установки откройте Личный кабинет VK Data Platform по адресу
https://<АДРЕС_ЛК>/appв браузере.Здесь
<АДРЕС_ЛК>— адрес Личного кабинета VK Data Platform, отличный от того, который использовался в переменнойOS_PROJECT_IDпри загрузке образов ВМ. -
Войдите в Личный кабинет, используя почту и пароль.
-
Назначьте квоты на проект:
-
Создайте файл
set-platformer-quota.shна деплой-ноде: -
Сделайте скрипт исполняемым:
$ chmod +x set-platformer-quota.sh -
Получите идентификатор проекта:
- Нажмите на имя пользователя в шапке страницы.
- Перейдите в раздел Настройки проекта → Terraform. Сохраните идентификатор
Project ID.
-
Задайте переменные окружения:
$ 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 в мебибайтах.<ДИСК_ГБ>— объем диска в ГБ.<КОЛИЧЕСТВО_ДИСКОВ>— количество дисков, доступных для приложений.
-
Запустите скрипт:
$ ./set-platformer-quota.sh setПосле выполнения скрипта будут доступны как проектные, так и кластерные квоты.
-
Проверьте квоты:
$ ./set-platformer-quota.sh info
-
-
Создайте группы безопасности
defaultиallow_allдля внешних сетей. При создании экземпляра сервиса используйте только внешние сети с этими группами безопасности. -
Проверьте результаты установки VK Data Platform:
- Убедитесь, что в левом меню присутствует вкладка Data Platform.
- Перейдите в раздел Data Platform → Экземпляры сервисов.
- Нажмите кнопку Создать экземпляр.
- Выберите конфигурацию сервиса
Кластер. - Нажмите кнопку Следующий шаг.
- Выберите опцию
Продвинутая. - Убедитесь, что в поле Тип диска data есть выпадающий список с типом диска.
-
Если при установке VK Data Platform возникла ошибка:
-
Перезапустите инсталлятор с флагом
--debug:$ ./shellkunchik --debug -
Повторно выполните шаги настроек, описанные в этом разделе.
-
Ознакомьтесь с подробными логами ошибок и исправьте их.
-