Установка сервисов People Hub¶
Для того, чтобы развернуть сервисы входящие в состав продукта VK People Hub в кластере Kubernetes, мы рекомендуем использовать наш универсальный helm chart: https://chart.people-hub.ru universal-chart --version 2.4.1
Установка¶
Для установки сервиса необходимо:
-
Добавьте helm repository (репозиторий доступен только для авторизованных пользователей)
helm repo add \ peoplehub https://chart.people-hub.ru \ --username=<имя_пользователя> \ --password=<пароль_пользователя>
-
Обновите репозитории Helm
helm repo update
-
Подготовьте файл значений для развертывания сервиса. Для удобства установки переменные, которые необходимо изменить, вынесены в общий файл настроек env.yaml
-
Установите сервис указав путь к файлу значений
helm install <release_name> --values=<values_file> --values=env.yaml peoplehub/universal-chart --version=2.4.1
Образы контейнеров (container images) можно загрузить из нашего container registry (docker.people-hub.ru). Тэг образа соответствует номеру релиза. Например, релизу 4.17.1 соответствует тэг release-peoplehub-v4-17-1.
Для составления полного списка образов, можно использовать наш скрипт.
Скрипт для получения списка образов¶
В качестве аргументов необходимо передать номер релиза (например, 4.17.1).
Например: ./get_release_images.sh 4.17.1
Скрипт выведет список образов для всех компонентов.
Для работы скрипта потребуются утилиты curl и jq
#!/bin/bash
set -e
# Check if necessary tools are installed
function check_tools {
if ! command -v curl >/dev/null 2>&1
then
echo "curl not found"
return 1
fi
if ! command -v jq >/dev/null 2>&1
then
echo "jq not found"
return 1
fi
}
# Calculate lower version
function lower_version {
local MAJOR=$(echo $1 | cut -d $2 -f 1)
local MINOR=$(echo $1 | cut -d $2 -f 2)
local PATCH=$(echo $1 | cut -d $2 -f 3)
if [ $PATCH -gt 1 ]; then
local PATCH=$(($PATCH - 1))
# Uncomment to downscale to minor and/or major release
# elif [ $PATCH -le 1 ] && [ $MINOR -gt 1 ]; then
# local MINOR=$(($MINOR - 1))
# elif [ $PATCH -le 1 ] && [ $MINOR -le 1 ] && [ $MAJOR -gt 1 ]; then
# local MAJOR=$(($MAJOR - 1))
fi
if [ -n "$3" ]
then
echo "$MAJOR$3$MINOR$3$PATCH"
else
echo "$MAJOR$2$MINOR$2$PATCH"
fi
}
# Check if current version is lowest
function is_lowest {
local PATCH=$(echo $1 | cut -d $2 -f 3)
if [ $PATCH -lt 2 ]
then
return 0
else
return 1
fi
}
# Get images list
function get_images {
local SEARCH=""
local USER_INPUT=$1
local RELEASE_TAG=$2
SEARCH=$(curl --silent -u $DOCKER_REPO_USER:$DOCKER_REPO_PASSWORD -X GET https://$DOCKER_REPO/v2/_catalog | jq -r '.repositories[] | select( . | match("^ph\/.*") )'| xargs -I REPO curl --silent -u $DOCKER_REPO_USER:$DOCKER_REPO_PASSWORD -X GET https://$DOCKER_REPO/v2/REPO/tags/list | jq -r '{name: .name, tag: (.tags[] | select( . == "'$RELEASE_TAG'"))}| "'$DOCKER_REPO'/\(.name):\(.tag)"')
echo $SEARCH
}
if ! check_tools -eq 0
then
exit 1
fi
USER_INPUT=$1
DOCKER_REPO="docker.people-hub.ru"
echo "Sign in to the container registry"
read -p 'Username: ' DOCKER_REPO_USER
read -p 'Password: ' DOCKER_REPO_PASSWORD
CURRENT_RELEASE=$(get_images $1 $(printf "release-peoplehub-v%s" $(echo $USER_INPUT| sed 's/\./\-/g' )))
until is_lowest $USER_INPUT '.' -eq 0
do
USER_INPUT=$(lower_version $USER_INPUT '.')
CURRENT_RELEASE=$CURRENT_RELEASE"\n"$(get_images $USER_INPUT $(printf "release-peoplehub-v%s" $(echo $USER_INPUT| sed 's/\./\-/g' )))
done
echo -e $CURRENT_RELEASE | sort -u
Вы можете автоматизировать процесс развертывания сервисов с предварительно подготовленными значениями или выполнить развертывание вручную для каждого из сервисов. Точный список сервисов можно найти на странице Список образов.
Рекомендованные values к инфраструктурным сервисам и скрипты размещены по ссылке https://raw.people-hub.ru/infra/values.tar.gz и https://raw.people-hub.ru/infra/scripts.tar.gz