Перейти к содержанию

Установка сервисов People Hub

Для того, чтобы развернуть сервисы входящие в состав продукта VK People Hub в кластере Kubernetes, мы рекомендуем использовать наш универсальный helm chart: https://chart.people-hub.ru universal-chart --version 2.4.1

Установка

Для установки сервиса необходимо:

  1. Добавьте helm repository (репозиторий доступен только для авторизованных пользователей)

    helm repo add \
    peoplehub https://chart.people-hub.ru \
    --username=<имя_пользователя> \
    --password=<пароль_пользователя>
    
  2. Обновите репозитории Helm helm repo update

  3. Подготовьте файл значений для развертывания сервиса. Для удобства установки переменные, которые необходимо изменить, вынесены в общий файл настроек env.yaml

  4. Установите сервис указав путь к файлу значений 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