Добрый день. Обнаружил поведение которое кажется неожидаемым. Что делаю: собираю образ из

огромных бинарных проприетарных блобов (их нельзя скачать с первоисточника без авторизации прямо из стадий). Блобы предварительно положил в докер образ и запушил в регистри (артифакт blobs). В результирующем образе (test) категорически не хочется иметь исходные файлы (/blobs) из которых собирался образ, это увеличивает его в 2 раза, он уже очень тяжелый (это unit и e2e тесты 1с в k8s). Поэтому пытаюсь воспользоваться монтированием tmp_dir куда планирую положить временно (на момент инсталяции) блобы.
werf.yaml:
configVersion: 1
project: 1c
---
artifact: blobs
from: alpine:3.16
shell:
beforeInstall:
- mkdir /blobs
- dd if=/dev/random of=/blobs/blob bs=1M count=1
---
image: test
from: alpine:3.16
mount:
- from: tmp_dir
to: /blobs
import:
- artifact: blobs
before: install
add: /blobs
to: /blobs
shell:
install:
- ls -la /blobs
- touch /blobs/install
- ls -la /blobs
beforeSetup:
- ls -la /blobs
- cat /blobs/blob
Вывод werf build:
│ ┌ Building stage test/dependenciesBeforeInstall
│ │ ┌ Store stage into localhost:5000/test
│ │ └ Store stage into localhost:5000/test (0.03 seconds)
│ ├ Info
│ │ name: localhost:5000/test:69ded77eb1377719b6a0989494a3b320202fe78ce2b789d209ee794f-1655360306666
│ │ id: aa90a4623331
│ │ created: 2022-06-16 13:18:26 +0700 +07
│ │ size: 3.7 MiB (+1.0 MiB)
│ └ Building stage test/dependenciesBeforeInstall (0.59 seconds)

│ ┌ Building stage test/install
│ │ test/install total 4
│ │ test/install drwxr-xr-x 2 1000 1000 40 Jun 16 06:18 .
│ │ test/install drwxr-xr-x 1 root root 4096 Jun 16 06:18 ..
│ │ test/install total 4
│ │ test/install drwxr-xr-x 2 1000 1000 60 Jun 16 06:18 .
│ │ test/install drwxr-xr-x 1 root root 4096 Jun 16 06:18 ..
│ │ test/install -rw-r--r-- 1 root root 0 Jun 16 06:18 install
│ │ ┌ Store stage into localhost:5000/test
│ │ └ Store stage into localhost:5000/test (0.03 seconds)
│ ├ Info
│ │ name: localhost:5000/test:226ae218845c86296840c08bb2d6b3b4a66531f09df6aa91403a04c3-1655360307222
│ │ id: 8a61f52e0ab3
│ │ created: 2022-06-16 13:18:27 +0700 +07
│ │ size: 3.7 MiB (+0 B)
│ └ Building stage test/install (0.57 seconds)

│ ┌ Building stage test/beforeSetup
│ │ test/beforeSetup total 4
│ │ test/beforeSetup drwxr-xr-x 2 1000 1000 60 Jun 16 06:18 .
│ │ test/beforeSetup drwxr-xr-x 1 root root 4096 Jun 16 06:18 ..
│ │ test/beforeSetup -rw-r--r-- 1 root root 0 Jun 16 06:18 install
│ │ test/beforeSetup cat: can't open '/blobs/blob': No such file or directory
│ ├ Info
│ └ Building stage test/beforeSetup (0.26 seconds) FAILED
└ ⛵️ image test (2.75 seconds) FAILED
dependenciesBeforeInstall - уже выглядит странно, +1MB. Если запустить образ стадии (id=aa90a4623331) и посмотреть что там внутри: в /blobs лежит файл blob размером 1MB перенесенный из артифакта выше. Т.е. на этой стадии tmp_dir не монтировалась и файлы попали в слой.
install - как видно файла /blobs/blob нет, вероятно поверх него смонтировался tmp_dir.
beforeSetup - файла все так же нет, а вот тестовый файл install успешно перемещается между стадиями сборки по tmp_dir.

Вопросы:
1) Это запланированное поведение? Копировать артифакты игнорируя настройки tmp_dir?
2) Можно ли еще как-то решить задачу установки софта лежащего в докер образе, так чтобы не копировать файлы в собираемый образ (и их не было бы в результирующем образе и его промежуточных слоях)? Монтировать чегото с хоста - это все понятно, это такое себе решение.

1 ответов

27 просмотров
Eugene-Shutov Автор вопроса

Удалось сделать workaround посредством интеграции тулзы crane в stapel и скачивания блобов из самой стадии, когда tmp_dir монтируется корректно. Может быть существует какие-то более красивое решение? Скажите это всеже баг или не баг? Может быть стоит его гдето зарепортить, чтобы как минимум не потерялся?

Похожие вопросы

Обсуждают сегодня

Всем привет. Понимаю, что, наверное, сто раз поднимали эту тему, но по ключевым словам не смог найти. Как передать в values.yaml зависимого хелм-чарта теги образов, собираемых...
Vitalik Petrov
4
Всем привет. Werf v2.10.5 При удалении релиза вместе с неймспейсом (werf dismiss --namespace namespace_name) Сыпятся ошибки ┌ Waiting for resources elimination: namespaces/rel...
Vitalik Petrov
1
@aigrychev, @ilya_lesikov добрый день! а поддерживает ли werf helm xxxx или werf bundle xxxx работу с сабчартами через http-прокси? (сработает ли использование HTTP_PROXY/HTTP...
Сергей Голод
4
Добрый день! Удалил все файлы с переменными из проекта, получил Error: release deploy: process resources: error validating adoptable resources: adoption validation failed: re...
Evgheni Mad
2
Привет! Вопрос про werf helm Приложение деплоится через werf helm upgrade --atomic Иногда(все условия для воспроизведения до конца непонятны, но есть версия, что это происходи...
𝓐𝓵͢͢͢𝓮𝔁 C
2
Всем привет. Сегодня добавили в приложение дополнительный образ nginx, в который докидывается системная статика прям в образ. При деплое бандлами деплоилось 200+ джоб(клиентов...
Владимир Муковоз
6
Добрый день, после перехода с версии 1.2 на 2.10 werf cleanup начал удалять использующиеся теги, и до и после обновления использовались дефолтные политики keepPolicies Подскаж...
Дмитрий
29
Блин а мне как поумнеть ?
Toxin
191
Друзья, добрый день. Прошу подсказать с базовым вопросом по использованию CI переменных gitlab в werf.yaml. Хочу в beforeInstall использовать env переменную с токеном. Мне нуж...
Anton Zol
10
Вопросик не совсем werf. Но вдруг мы подскажите воркэраунд или ещё что-нибудь. Могу ли я как-нибудь в моменте деплоя внутри heml рендера получить хэшсумму файла шаблона (./tem...
Alex Подрябинкин
11
Карта сайта