В работе Kaniko в кластере openshift отказано - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь выполнить развертывание через моего оператора k8s в кластере openshift 3.11. При запуске задания kaniko выдается следующая ошибка:

Error: error resolving dockerfile path: copying dockerfile: open /kaniko/Dockerfile: 
permission denied

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Добавьте securityContext: runAsUser: 0 в pod spe c, чтобы запустить его как root.

apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo
spec:
  securityContext:
    runAsUser: 0
0 голосов
/ 30 марта 2020

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
...