Домены и ssl (Let’s Encrypt)

Использование переменной DOMAIN: $DOMAIN включает только настройку конфигов маршрутизации на машине. Для автоматического управления dns записями env переменная DNS_TOKEN: $CLOUDFLARE_TOKEN

Как включить управление доменами

Для использования доменных имен нужно указать env переменную DOMAIN: example.com, в .gitlab-ci.yml файле.

Для всех сервисов по умолчанию используется конструкция {SERVICE}.{BRANCH}.$DOMAIN, где SERVICE - имя сервиса из docker-compose.yml. (прим backend.branch.genesis-framework.com)

Домен будет заказываться только на сервисы с публично открытыми портами 8000-8999

Настройка маршрутизации без настройки 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: DO
    HOSTING_TOKEN: do_token_str
    CONTAINER_MANAGER: docker

Использование встроенного менеджера dns записей

Genesis умеет управлять dns записями, для этого требуется указать DNS_TOKEN: $CLOUDFLARE_TOKEN с правами: ZONE -> DNS -> EDIT; ZONE -> ZONE -> READ (see: https://dash.cloudflare.com/profile/api-tokens)

По умолчанию genesis подразумевает наличие одной доменной зоны на проект.

Как настроить корневой сервис (Домен для корневого сервиса)

В случае, если требуется указать корневой сервис (прим. используется простенький статичный сайт и требуется, чтобы он был доступен по корневому урлу ветки branch.genesis-framework.com) указывается переменная ROOT_SERVICE (указание сервиса). Для всех веток используется стандартный шаблон без указания сервиса (Прим. branch.genesis-framework.com).

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: DO
    HOSTING_TOKEN: do_token_str
    CONTAINER_MANAGER: docker
    DOMAIN: example.com
    DNS_PROVIDER: CF
    DNS_TOKEN: cloudflare_token

Как настроить корневую ветку (выбор ветки для использования, как корневой)

В случае, если требуется чтобы сервис был доступен под корневым доменом (прим. используется простенький статичный сайт и требуется чтобы он был доступен по-корневому урлу genesis-framework.com) помимо переменной ROOT_SERVICE (указание сервиса) указывается также ROOT_BRANCH.

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: DO
    HOSTING_TOKEN: do_token_str
    CONTAINER_MANAGER: docker
    DOMAIN: example.com
    DNS_PROVIDER: CF    
    DNS_TOKEN: cloudflare_token
    ROOT_SERVICE: site
    ROOT_BRANCH: prod

Как использовать ssl

При использовании DOMAIN переменной ssl по умолчанию выключен, для него обязательно использовать переменные SSL и DNS_TOKEN

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: DO
    HOSTING_TOKEN: do_token_str
    CONTAINER_MANAGER: docker
    DOMAIN: example.com
    DNS_PROVIDER: CF
    DNS_TOKEN: cloudflare_token
    SSL: 1

Как настроить маршрутизацию в закрытом контуре

Выбор типа формирования домена управляется переменной PATH_LIKE_DOMAIN, принимающей значения 0 (выключен, дефолтное значение) и 1 (включен).

Шаблон маршрутизации: $DOMAIN/{BRANCH}/{SERVICE}/ (ex. https://genesis-framework.com/prod/docs)

Важно: при значении PATH_LIKE_DOMAIN: 1 - переменные DNS_TOKEN, ROOT_SERVICE, ROOT_BRANCH не работают и настройка 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
    PATH_LIKE_DOMAIN: 1