Быстрая установка VK People Hub¶
С целью быстрого развёртывания на готовой инфраструктуре, предусмотрен скрипт быстрой установки VK People Hub.
Использование скрипта быстрой установки VK People Hub позволяет:
- Автоматизировать процесс установки некоторых инфраструктурных и продуктовых компонентов.
- Снизить влияние человеческого фактора при копировании переменных между компонентами.
- Решить проблему с зависимостями компонентов (порядок установки компонентов).
- Уменьшить время установки и снизить вовлеченность технических специалистов в момент установки продукта.
✅ Рекомендуется для задач прототипирования и разворачивания пилотных инсталляций.
⛔️ Не рекомендуется для задачи разворачивания продуктивных стендов.
Требования¶
Для работы скрипта необходимы:
- Логин и пароль от хранилища raw.people-hub.ru.
- Values к продуктовым сервисам, размещённые по ссылке https://raw.people-hub.ru/values/release-peoplehub-{Номер_релиза}.tar.gz.
- Файл TLS сертификата и приватного ключа в pem формате.
- Утилиты helm, kubectl, yq, envsubs.
- Доступ в кластер kubernetes (kubeconfig файл).
Настройка¶
Для настройки скрипта необходимо:
- Распаковать файлы настройки сервисов продукта из архива release-peoplehub-{Номер_релиза}.tar.gz в папку product
- Заполнить файл ph.yaml
Описание¶
Данный скрипт является оберткой над инструментом Helm, который расчитан для запуска в Linux системах.
Скрипт логически разбит на 3 части:
-
Pre-install. Подготовка инфраструктуры:
- проверка установленных приложений необходимых для работы скрипта;
- создание dockerjson и TLS секретов из файлои и введенных данных;
- валидация yaml файла ph.yaml;
- подготовка кластера Kubernetes (ns, limits).
-
Infrastructure. Установка инфраструктурных компонентов
-
Product. Установка продуктовых сервисов
Скрипт запускается с 2 параметрами:
- Полный путь к kubeconfig файлу (можно использовать переменные)
- $HOME/.kube/config
- /home/root/.kube/phtest
- /some/url/config
- Путь к ph.yaml файлу. Можно использовать относительный путь. Например:
- ph.yaml
- /home/someuser/ph-install/ph.yaml
Пример запуска скрипта из директории ./install.sh $HOME/.kube/phtest ph.yaml
Установку каждого компонента продукта или инфраструктуры можно отключить, установив install: false
в блоке yaml нужного компонента.
Если используется внешний инфраструктурный компонент, то необходимо сделать следующие шаги:
- Выключить установку компонента
install: false
- Добавить путь к внешнему компоненту в переменную
external_host
и где необходимо другие переменные с префиксом external_. Если их оставить пустыми, то будут использоваться значения по умолчанию, предусмотренные для установленных внутри кластера. - Заполнить авторизационные данные (логины, пароли и т.д.).
Для установки продукта нужны Volume provisioner и ingress controller. В скрипте возможна установка nginx-ingress-controller и local-path-provisioner.
Глобальные переменные¶
Секция global содержит переменные связанные со всеми сервисами. В комментариях файла конфигураций ph.yaml
вы можете найти их описание.
Каждая секция компонента содержит сведения о используемом helm chart, его версия и путь к файлу настроек values.
helm:
chart:
repo: ""
name: local-path-provisioner
version: 0.0.25-dev
values: infrastructure/local-path-provisioner.yaml
По умолчанию используется репозиторий https://chart.people-hub.ru.
Оценка производительности быстрой установки VK PeopleHub¶
Тестирование скрипта выполнялось на виртуальной машине следующей конфигурации:
- CPU
8x3GHz
- RAM
16Gb
Ресурсы кластера Kubernetes, использованного для тестового развёртывания:
-
Master node
- количество:
1
- vCPU:
4
- RAM:
4Gb
- количество:
-
Worker node
- количество:
5
- vCPU:
4
- RAM:
16Gb
- количество:
Усреднённая продолжительность процесса установки с использованием скрипта быстрой установки -
40 мин
.
Время установки может варьироваться в зависимости от скорости дисков на кластере Kubernetes, от скорости интернет соединения, скорости дисков и количества свободных ресурсов виртуальной машины, на которой запускается скрипт.
Диагностика и устранение неисправностей¶
Скрипт использует Helm для установки компонентов. В случае неуспешного завершения установки какого-либо компонента, сообщение об ошибке может быть найдено в файле install.log
.
Скрипт завершает свою работу, если установка одного из компонентов завершилась неудачно.