werf (новости)
49 subscribers
1 photo
61 links
Официальные новости Open Source-утилиты werf (https://werf.io/). Для всех вопросов и обсуждений заходите в @werf_ru
Download Telegram
to view and join the conversation
Алиасы тегов

Начиная с версии v1.2.28 в werf снова появляется возможность использовать произвольные теги для собираемых образов.

— Алиасы тегов?!
— Да! По сути это не самостоятельные теги, а псевдонимы к content-based тегу, которые связаны с теми же самыми проверками и образом.

А теперь обо всём по порядку.

При сборке алиасы тегов в произвольном количестве могут быть добавлены опцией --add-custom-tag=<TAG_FORMAT> или переменными окружения WERF_ADD_CUSTOM_TAG_*=<TAG_FORMAT>.

При выкате, а также в командах связанных с ним, по понятным причинам можно использовать только один тег с опцией --use-custom-tag=<TAG_FORMAT> или переменной окружения WERF_USE_CUSTOM_TAG=<TAG_FORMAT>.

При очистке алиасы тегов и связанный content-based тег рассматриваются как один тег:
если согласно политикам очистки content-based тег должен быть удалён, то при очистке все теги будут удалены;
если в Kubernetes используется один из тегов, то при очистке останутся все теги.

По умолчанию алиасы тегов не разрешаются гитерминизмом. Это связано с тем, что использование может сопровождаться неожиданным поведением, т. к. неизменяемые значения (например, %image%-master) делают предыдущие выкаты невоспроизводимыми и требуют политики imagePullPolicy: Always для каждого образа при конфигурации контейнеров в helm-чарте. Для активации опций необходимо использовать werf-giterminism.yaml:

giterminismConfigVersion: 1 
cli:
allowCustomTags: true

Далее представлены примеры двух флоу использования алиасов тегов:

1.
    $ werf converge --repo=<REPO> --use-custom-tag="%image%-tag"

2.
    $ werf build --repo=<REPO> --add-custom-tag="%image%-tag1" --add-custom-tag="%image%-tag2" --add-custom-tag="%image%-tag3"
$ werf converge --repo=<REPO> --use-custom-tag="%image%-tag1" --skip-build
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Пользовательские теги для собираемых образов (подробный пост) 🛳🚢.

На следующей неделе продолжаем переход с multiwerf на trdl и плотно берёмся за контент trdl.dev. По werf доделываем текучку и занимаемся долгосрочным планированием, судьбой v1.2 stable и следующей версией.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— В ближайшие недели планируем сделать релиз долгожданного stable. Перевод stapel-сборщика на buildah, новый кэш как альтернатива маунтам и другие работы планируем продолжать как экспериментальные фичи в рамках v1.2.

На следующей неделе основной фокус на переход с multiwerf на trdl и новый контент для сайта trdl.dev.

Подробности и другие изменения в GitHub Discussions.
trdl — наша новая Open Source-утилита для реализации безопасных автоматических обновлений в софте; она уже используется в самой werf с сентября. Пока мы ещё работаем над лучшей документацией для trdl (для возможности её применения в других проектах), вчера вышла новая версия самой утилиты — v0.2.0. Её главным новшеством стало автоматическое подписывание всех release targets с помощью PGP (в дополнение к существующему механизму с TUF).
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Создание GPG подписей для всех артефактов релиза при публикации (trdl).
— Использование бинарных файлов из trdl репозитория в werf actions.

На следующей неделе мы планируем сосредоточиться на следующих направлениях:

— Переход с multiwerf на trdl (по сути осталась только новая версия самого multiwerf).
— Новые разделы на сайте trdl.dev.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Новая версия multiwerf, которая использует trdl под капотом, готова к тестированию на внутренних проектах.

На следующей неделе мы планируем сосредоточиться на следующих направлениях:

— Переход с multiwerf на trdl (по сути осталась только новая версия самого multiwerf).
— Новые разделы на сайте trdl.dev.
— Текущие задачи.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Версия multiwerf, которая использует trdl под капотом, тестируется на внутренних проектах.
— Решены известные проблемы helm с three-way merge, везём изменения в upstream.
Добавлен раздел гайда "Реалистичные приложения" для Node.js.
Первая статья в новом резделе гайдов "Лучшие практики деплоя".

На следующей неделе планируем работать в следующих направлениях:

— Перевод пользователей multiwerf на trdl.
— Новые разделы на сайте trdl.dev.
— Сборка c Buildah.
— Эффективная работа с shallow clone.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Версия multiwerf, которая использует trdl под капотом, выкачена для всех пользователей.
— Раздел гайдов "Лучшие практики деплоя":

Жизненный цикл.
Высокая доступность.
Управление ресурсами.

На следующей неделе планируем работать в следующих направлениях:

— Новые разделы на сайте trdl.dev.
— Сборка c Buildah: dind и запуск в Kubernetes.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

Долгожданный релиз стабильной версии werf 1.2.
— Раздел документации посвящённый запуску werf в Docker и Kubernetes (первая версия, пока только на англ.):

Run in Docker.
Run in Kubernetes.
Use GitLab CI/CD with Docker executor.
Use GitLab CI/CD with Kubernetes executor.

На следующей неделе помимо текущих работ планируем открыть новое направление по сравнению Giterminism с GitOps, а также werf с ближайшими аналогами.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Добавили в релизный процесс образы с werf для сборки с помощью Buildah в Kubernetes (тоже по каналам обновлений, подробнее здесь).
— Раздел документации посвящённый запуску werf в Docker и Kubernetes (вторая версия, пока только на англ.):

Run in Docker.
Run in Kubernetes.
Use GitLab CI/CD with Docker executor.
Use GitLab CI/CD with Kubernetes executor.
How it works.

На следующей неделе планируем добавить команды авторизации в container registry (werf cr login/logout), проработать организацию GPG-кворума в trdl и заниматься исследовательской деятельностью.

Подробности и другие изменения в GitHub Discussions.
Прогресс по разработке werf. Актуальная еженедельная сводка новостей, чем сейчас занимаемся и что планируем, технические детали.

— Раскладываем GitOps по полочкам, смотрим и пробуем GitOps-решения, а также ближайших конкурентов.
Новая страница сайта trdl.dev, рассказывающая о безопасности всей системы и отдельных компонентов.

На следующей неделе мы не планируем открывать новые направления работ.

Подробности и другие изменения в GitHub Discussions.
Анонс нашего большого руководства по werf, ориентированного на разработчиков, которые хотят познакомиться с Kubernetes и научиться деплоить в него свои приложения. Помимо общих разделов в нем готовы полноценные примеры для Ruby on Rails, Node.js и Laravel.
По мотивам недавно анонсированного самоучителя по werf мы также сделали более короткий и более практический tutorial, повторяющий главное из «Первых шагов» нашего полного руководства. Публикуем результат в блоге: https://habr.com/ru/company/flant/blog/597001/
Новый рекомендуемый способ установки werf для Linux и macOS — через установочный скрипт, следуя инструкциям на страницу установки: https://werf.io/installation.html
Инструкции для включения экспериментального Buildah-режима также добавлены на страницу установки.
Обслуживание версий

Обслуживание версий в рамках MAJOR.MINOR не прекращается после выхода следующего MAJOR.MINOR. Мы продолжаем исправлять ошибки, принимать обратную связь, помогать в отладке и при необходимости делать бэкпорты из последующих версий. Тем не менее мы решили установить четкие временные рамки, до которых мы будем оказывать подобную поддержку.

После выхода стабильной версии MAJOR.MINOR, поддержка предыдущей MAJOR.MINOR прекращается уже через полгода.

Таким образом:
- Поддержка 1.1 заканчивается 1 июля 2022 года.
- Поддержка 1.0 больше не осуществляется.

Вы наверняка обратили внимание, что в последних версиях 1.1 появилось предупреждение, которое сообщает о скором окончании поддержки и рекомендует не затягивать с переходом на 1.2.
2k21++

Команда Флант поздравляет всех с праздником и в крайней степени признательности благодарит каждого за участие и вклад в развитие werf. Спасибо всем за то, что помогаете формировать решение и оттачивать его углы, являясь уникальным и незаменимым источником вопросов, задач, да и в целом мыслей по теме.

Пусть ваша кухня станет универсальным, а главное комфортным местом, и сама по себе будет источником новых открытий и свершений!
Привет, небольшая фича.

Детерминировано пересобирать образ целиком (включая переустановку nodejs/npm) раз в месяц:

from: ubuntu:20.04
fromCacheVersion: {{ div .Commit.Date.Unix (mul 60 60 24 30) }}
git:
- add: /
to: /app
stageDependencies:
install:
- "*"
shell:
beforeInstall: # Выполняется, только когда обновляется fromCacheVersion.
- apt-get update
- apt-get install -y nodejs=14.* npm=6.*
install: # Выполняется при каждом новом коммите.
- npm ci


На самом деле, образ пересобирается не раз в месяц, а для коммитов в окне 30 дней используется один базовый образ со слоем beforeInstall, а для коммитов в следующем окне в 30 дней используется уже другой, заново пересобранный базовый образ со своим слоем beforeInstall.

Использование для этого .Commit.Date.Unix (доступен в 1.2 альфе/бете) позволяет сборке оставаться детерминированной (гитом), т. е. перезапустив CI job со сборкой, которой два месяца, пересборок не будет — werf.yaml не изменился, т. к. не изменился коммит.

Кто не понял, что значит {{ div .Commit.Date.Unix (mul 60 60 24 30) }}:
1. Считаем кол-во секунд в месяце.
2. Получаем кол-во секунд, прошедшее с 1 января 1970 по дату коммита.
3. Делим последнее на первое, получая целое число, остаток отбрасывая.
4. Результат — целое число месяцев, прошедших с 1 января 1970, которое увеличивается каждый месяц на 1.

Также в werf.yaml теперь доступны .Commit.Date.Human и .Commit.Hash:
https://ru.werf.io/documentation/v1.2.56/reference/werf_yaml_template_engine.html
Этот коммит мы считаем отправной точкой для Open Source-проекта werf, а посему — с радостью отмечаем его шестилетие! 🎉🎊 Благодарим всех пользователей и контрибьюторов, обещаем радовать новыми фичами и релизами 🤗🙏