Configure kubernetes cluster
Yandex Managed Service for Kubernetes
Во время первого деплоя будет создан кластер, группа узлов, главная сеть и подсети в указанном фолдере яндекс облака. После чего будут настроены nginx ingress, cert-manager и будет сформирован KUBECONFIG
который можно будет увидеть в gitlab -> settings -> ci/cd -> variables.
Для создания кластера нам необходима специфичная для яндекс облака переменная: YANDEX_SERVICE_ACCOUNT
.
Инструкция по ее созданию:
- Получаем доступ к панели управления Yandex Cloud (пример: folder_devops) у руководителя.
- Cоздайте сервисный аккаунт с правами
admin
Требования к формату имени:
- Длина — от 3 до 63 символов.
- Может содержать строчные буквы латинского алфавита, цифры и дефисы.
- Первый символ — буква. Последний символ — не дефис.
- Имя сервисного аккаунта должно быть уникальным в рамках облака.
-
Выпустите ключ авторизации create new key -> create authorized key -> RSA_2048
-
Скопируйте полученный json в переменную
YANDEX_SERVICE_ACCOUNT
в CI/CD проекта или группы.
Пример .gitlab-ci.yml:
include:
- project: 'framework/genesis'
file: '/genesis.gitlab-ci.yml'
variables:
VERSION: *.*.* # Genesis version, вместо *.*.* необходимо подставить последнюю доступную версию/tag,
# список тэгов - https://gl.sbdagroup.com/framework/genesis/-/tags
# ex: VERSION: 0.0.1
HOSTING_PROVIDER: YA_k8s
CONTAINER_MANAGER: k8s
SIZE: C2M2 # Минимальная конфигурация для кластера
K8S_SCALE_SIZE: 2 # Количество узлов
DOMAIN: example.com
DNS_PROVIDER: CF
DNS_TOKEN: $CLOUDFLARE_TOKEN
Configured kubernetes cluster
Для настройки деплоя в готовый кластер необходимо в gitlab -> settings -> CI/CD -> variables установить
переменную genesis_KUBECONFIG
с соответствующим значением.
Без DNS:
include:
- project: 'framework/genesis'
file: '/genesis.gitlab-ci.yml'
variables:
VERSION: *.*.* # Genesis version, вместо *.*.* необходимо подставить последнюю доступную версию/tag,
# список тэгов - https://gl.sbdagroup.com/framework/genesis/-/tags
# ex: VERSION: 0.0.1
HOSTING_PROVIDER: none
CONTAINER_MANAGER: k8s
С настройкой DNS:
include:
- project: 'framework/genesis'
file: '/genesis.gitlab-ci.yml'
variables:
VERSION: *.*.* # Genesis version, вместо *.*.* необходимо подставить последнюю доступную версию/tag,
# список тэгов - https://gl.sbdagroup.com/framework/genesis/-/tags
# ex: VERSION: 0.0.1
HOSTING_PROVIDER: none
CONTAINER_MANAGER: k8s
DOMAIN: example.com
DNS_PROVIDER: CF
DNS_TOKEN: $CLOUDFLARE_TOKEN
IP_ADDRESS: 0.0.0.0