Kaniko представляется как инструмент для Создания образов контейнеров в Kubernetes и Google Container Builder без привилегий .
Мы рады представить kaniko , инструмент с открытым исходным кодом для создания образов контейнеров из Dockerfile даже без привилегированного root доступа. С kaniko мы оба создаем образ из Dockerfile и помещаем его в реестр. Поскольку для этого не требуются какие-либо специальные привилегии или разрешения, вы можете запустить kaniko в стандартном кластере Kubernetes, Google Kubernetes Engine или в любой среде, в которой нет доступа к привилегиям или Docker демону. .
Проблема, с которой вы столкнулись, уже упоминалась в GoogleContainerTools / kaniko Проблема GitHub.
11 января эта проблема была помечена как Won't Fix
, поэтому Единственный способ - запустить Kaniko как root, используя securityContext: runAsUser: 0
Это небезопасно, как можно было подумать, о чем упоминал Курт Мадель в своем блоге Безопасное построение Контейнерные изображения в Kubernetes :
, работающие как root
, представляют собой вектор атаки, который многие считают недопустимой дырой в безопасности, но использование Pod Security Policies уменьшит поверхность атаки Контейнер Kaniko работает как часть K8s Pod и обеспечивает большую безопасность, чем подходы, основанные на Docker, которые мы уже отклонили.
Он также e xplains, как можно было бы использовать Kaniko the Easy Way
Jenkins X позволяет включить Kaniko в качестве способа по умолчанию для создания и pu sh контейнерных изображений для всех ваших заданий на компакт-диске Jenkins X и будет автоматически настроен на pu sh для стандартного реестра контейнеров в облаке, где вы устанавливаете Jenkins X, и для вас автоматически устанавливается кэширование Kaniko, что приводит к быстрой и безопасной сборке образа контейнера, которая выталкиваются в реестр контейнеров Jenkins X по умолчанию.
Важно: Jenkins X не поддерживает OOTB для политик безопасности Pod, как отслеживается этой проблемой GitHub . В моем следующем посте мы рассмотрим использование политик безопасности Pod с Jenkins X - но не только для Kaniko, поскольку после включения политики безопасности Pod каждый K8s Role
/ ClusterRole
должен иметь связанную с ним политику безопасности Pod. .
Недостатки для Kaniko
- Требуется запуск контейнера Kaniko как
ROOT
для выполнения большинства сборок контейнера - Не работает со всеми
Dockerfiles
, но сохраняет улучшение - немного сложнее в настройке, чем старый добрый
docker build