diff --git a/docs/_data/sidebars/_documentation.yml b/docs/_data/sidebars/_documentation.yml index 98fe753baf..27fc3c147b 100644 --- a/docs/_data/sidebars/_documentation.yml +++ b/docs/_data/sidebars/_documentation.yml @@ -205,6 +205,9 @@ entries: - title: Дистрибуция f: + - title: Обзор + url: /usage/distribute/overview.html + - title: Образы url: /usage/distribute/images.html diff --git a/docs/_data/sidebars/documentation.yml b/docs/_data/sidebars/documentation.yml index 5b51c66afb..fa95ad7f11 100644 --- a/docs/_data/sidebars/documentation.yml +++ b/docs/_data/sidebars/documentation.yml @@ -835,6 +835,9 @@ entries: - title: Дистрибуция f: + - title: Обзор + url: /usage/distribute/overview.html + - title: Образы url: /usage/distribute/images.html diff --git a/docs/pages_ru/usage/distribute/overview.md b/docs/pages_ru/usage/distribute/overview.md new file mode 100644 index 0000000000..8ae303541c --- /dev/null +++ b/docs/pages_ru/usage/distribute/overview.md @@ -0,0 +1,95 @@ +--- +title: Обзор +permalink: usage/distribute/overview.html +--- + +## О чем этот раздел + +Обычный цикл доставки приложений с werf выглядит как сборка образов, их публикация и последующее развертывание чартов, для чего бывает достаточно одного вызова команды `werf converge`. Но иногда возникает необходимость разделить *дистрибуцию* артефактов (образы, чарты) и их *развертывание*, либо даже реализовать развертывание артефактов вовсе без werf, а с использованием стороннего ПО. + +В этом разделе рассматриваются способы дистрибуции образов и бандлов (чартов с опциональной дополнительной функциональностью) для их дальнейшего развертывания с werf или без него. Инструкции развертывания опубликованных артефактов можно найти в разделе Развертывание. + +## Пример дистрибуции образа + +Для дистрибуции единственного образа, собираемого через Dockerfile, который потом будет развернут сторонним ПО, достаточно двух файлов и одной команды `werf export`, запущенной в Git-репозитории приложения: + +```yaml +# werf.yaml: +project: myproject +configVersion: 1 +--- +image: myapp +dockerfile: Dockerfile +``` + +```dockerfile +# Dockerfile: +FROM node + +WORKDIR /app +COPY . . +RUN npm ci + +CMD ["node", "server.js"] +``` + +```shell +werf export myapp --repo example.org/myproject --tag other.example.org/myproject/myapp:latest +``` + +Результат: опубликован образ приложения `other.example.org/myproject/myapp:latest`, готовый для развертывания сторонним ПО. + +## Пример дистрибуции бандла + +Для дистрибуции бандла для дальнейшего развертывания бандла с werf или подключения его как зависимого чарта или развертывания бандла как чарта сторонним ПО в простейшем случае достаточно трёх файлов и одной команды `werf bundle publish`, запущенной в Git-репозитории приложения: + +```yaml +# werf.yaml: +project: mybundle +configVersion: 1 +--- +image: myapp +dockerfile: Dockerfile +``` + +```dockerfile +# Dockerfile: +FROM node + +WORKDIR /app +COPY . . +RUN npm ci + +CMD ["node", "server.js"] +``` + +{% raw %} + +``` +# .helm/templates/myapp.yaml: +apiVersion: apps/v1 +kind: Deployment +metadata: + name: myapp +spec: + selector: + matchLabels: + app: myapp + template: + metadata: + labels: + app: myapp + spec: + containers: + - image: {{ $.Values.werf.image.myapp }} +``` + +{% endraw %} + +```shell +werf bundle publish --repo example.org/bundles/mybundle +``` + +Результат: собран образ приложения, после чего опубликован бандл `example.org/bundles/mybundle:latest` и связанный с ним собранный образ. + +Теперь опубликованный бандл можно использовать для непосредственного развертывания с `werf bundle apply`, либо для подключения как зависимый чарт, либо для развертывания как обычный чарт сторонним ПО.