Configure kubernetes cluster

Yandex Managed Service for Kubernetes

Во время первого деплоя будет создан кластер, группа узлов, главная сеть и подсети в указанном фолдере яндекс облака. После чего будут настроены nginx ingress, cert-manager и будет сформирован KUBECONFIG который можно будет увидеть в gitlab -> settings -> ci/cd -> variables. Для создания кластера нам необходима специфичная для яндекс облака переменная: YANDEX_SERVICE_ACCOUNT.

Инструкция по ее созданию:

  1. Получаем доступ к панели управления Yandex Cloud (пример: folder_devops) у руководителя.
  2. Cоздайте сервисный аккаунт с правами admin

Требования к формату имени:

  • Длина — от 3 до 63 символов.
  • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
  • Первый символ — буква. Последний символ — не дефис.
  • Имя сервисного аккаунта должно быть уникальным в рамках облака.
  1. Выпустите ключ авторизации create new key -> create authorized key -> RSA_2048

  2. Скопируйте полученный 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