Настройка секретов для извлечения контейнеров
Распространённый сценарий — необходимость настройки хост-системы с «секретом извлечения», необходимым для получения контейнерных образов — что включает и саму систему обновлений хоста!
В документации вышестоящего проекта bootc есть раздел, посвящённый секретам в общем, который применим и здесь.
Следующее содержимое относится к собранному образу. При использовании внешнего установщика, такого как Anaconda (Физическое оборудование) или bootc-image-builder, каждая из этих систем должна быть настроена с соответствующими секретами извлечения.
Расположение учётных данных для bootc
Рекомендация для обновлений хоста через bootc — записывать конфигурацию в /etc/ostree/auth.json (что используется совместно с rpm-ostree). С относительно недавнего времени также поддерживается /usr/lib/ostree/auth.json.
Расположение учётных данных для podman
См. containers-auth.json.
Отсутствие общесистемных учётных данных для podman
Общая концептуальная проблема со всеми доступными в настоящее время расположениями containers-auth, которые принимаются podman, заключается в том, что два расположения находятся в:
-
/run: Это исчезает при перезагрузке, что обычно нежелательно -
/root: Часть домашнего каталога root, который по умолчанию является локальным изменяемым состоянием
Ведутся обсуждения о добавлении общесистемного расположения для стека контейнеров, но это пока не реализовано. Подробнее в этом pull-запросе.
Объединение учётных данных bootc и podman
Распространённым подходом будет использование одного общего глобального секрета извлечения как для bootc, так и для podman.
Следующая сборка контейнера демонстрирует один из подходов к достижению этой цели.
Этот справочный пример поддерживается в container-auth.
COPY link-podman-credentials.conf /usr/lib/tmpfiles.d/link-podman-credentials.conf
RUN --mount=type=secret,id=creds,required=true cp /run/secrets/creds /usr/lib/container-auth.json && \
chmod 0600 /usr/lib/container-auth.json && \
ln -sr /usr/lib/container-auth.json /etc/ostree/auth.json
# Сделать /run/containers/0/auth.json (временный файл во время выполнения)
# символической ссылкой на /usr/lib/container-auth.json (постоянный файл),
# который также является символической ссылкой из /etc/ostree/auth.json.
d /run/containers/0 0755 root root -
L /run/user/0/containers/auth.json - - - - ../../../../usr/lib/container-auth.json
Want to help? Learn how to contribute to Fedora Docs ›