Docker openshift群集中Kaniko作业的权限被拒绝
我试图通过我的k8s操作符在openshift 3.11集群上进行部署。当kaniko作业开始时,它会给我以下错误Docker openshift群集中Kaniko作业的权限被拒绝,docker,kubernetes,cloud,openshift,kaniko,Docker,Kubernetes,Cloud,Openshift,Kaniko,我试图通过我的k8s操作符在openshift 3.11集群上进行部署。当kaniko作业开始时,它会给我以下错误 Error: error resolving dockerfile path: copying dockerfile: open /kaniko/Dockerfile: permission denied 将securityContext:runAsUser:0添加到pod规范中,以root身份运行它 apiVersion: v1 kind: Pod metadata: n
Error: error resolving dockerfile path: copying dockerfile: open /kaniko/Dockerfile:
permission denied
将
securityContext:runAsUser:0
添加到pod规范中,以root身份运行它
apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 0
Kaniko正被引入作为一种工具来解决这个问题 我们很高兴地介绍,一个开源工具,用于从Dockerfile构建容器映像,即使没有特权根访问。使用kaniko,我们都从Dockerfile构建一个映像,并将其推送到注册表。因为kaniko不需要任何特权或权限,所以您可以在标准Kubernetes集群中运行,或者在任何无法访问特权或Docker守护程序的环境中运行 您遇到的问题已在GitHub问题中提到 1月11日,该问题被标记为
不会修复
,因此唯一的方法是使用securityContext:runAsUser:0以root用户身份运行Kaniko
这并不像曾经认为的那样安全,这在他的博客中提到:
运行为<代码>根>代码>,这是许多人认为是不可接受的安全漏洞的攻击向量,但是使用POD安全策略将减少作为K8S POD的一部分运行的卡尼科容器的攻击面,并提供比我们已经撤消的基于DOCKER的方法更大的安全性。
他还解释了如何使用
Jenkins X允许您为所有Jenkins X CD作业设置缓存,并将自动配置为推送到您安装Jenkins X的云的默认容器注册表,Kaniko缓存将自动为您设置-从而实现快速,将安全容器映像生成推送到默认Jenkins X容器注册表
重要提示:Jenkins X不支持由跟踪的Pod安全策略的OOTB。在我的下一篇文章中,我们将介绍如何在Jenkins X上使用Pod安全策略,但不仅仅是Kaniko,因为一旦启用Pod安全策略,每个K8s角色
/集群角色
都必须有一个与之关联的Pod安全策略
Kaniko的缺点
- 需要将Kaniko容器作为
根运行
,以执行大多数容器构建
- 不适用于所有
DockerFile
,但不断改进
- 安装起来比旧的docker build稍微复杂一些