Как формируются имена образов при автоматической сборке

Имена образов формируются по правилу: берется путь из корня проекта и заменяются все / на _

webui/backend/Dockerfile -> webui_backend
nginx/Dockerfile -> nginx
docs/Dockerfile -> docs

Настройка порядка сборки образов

Порядок сборки образов достигается за счет наличия файла build_order.txt, который должен находиться в корне подпроекта (смотреть пример подпроект genesis).

В файле указываются пути от корня подпроекта до конкретного Dockerfile, в желаемой последовательности. Если какие-либо Dockerfile отсутствуют в build_order.txt, то они собираться не будут.

Имена образов на выходе полностью соответствуют правилу формирования имени образа автоматической сборке.

Пример build_order.txt для подпроекта genesis:

webui/backend/Dockerfile
nginx/Dockerfile

Проброс кастомных аргументов для сборки образа

Кастомные переменные добавляются за счет наличия файла build_args.txt, который должен находиться в любом месте на пути к Dockerfile (например в корне подпроекта).

Файл имеет формат ключ=значение (по аналогии с .env), и имеет приоритизацию ключа по расположению (чем ближе файл, с ключом, к Dockerfile, тем выше у него приоритет попадания в аргументы при сборке).

Пример build_args.txt:

DEBUG=1
SMTP_LOGIN=test@domen.ru
SMTP_HOST=localhost

Настройка переопределения переменных в манифестах

В манифестах Kubernetes можно использовать служебные переменные: ${TAG}, ${REGISTRY_URL}, ${NAMESPACE}, при использовании домена будет сформированна переменная вида ${SERVICE_NAME_PUBLIC_URL}. Так же можно использовать переменные экспортированные в окружения раннера.

В манифестах переменные вида $SAME_VAR, будут заменены соответсвующими значениями из переменных окружения либо пробелом в случае отсутствия нужной переменной. Если необходимо сохранить нотацию $SAME_VAR в манифесте, тогда необходимо в первой строке манифеста прописать # ENVSUBST: в таком случе ни одна переменная в манифесте не будет заменена.

Пример:

# ENVSUBST:
---
apiVersion: apps/v1
kind: Deployment

Если необходимо точечно заменить некоторые переменные тогда необходимо их указать # ENVSUBST: $FOO, $BAR, ${TAG}, ${REGISTRY_URL}

Пример:

# ENVSUBST: $FOO, $BAR, ${TAG}, ${REGISTRY_URL}
---
apiVersion: apps/v1
kind: Deployment