Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker openshift群集中Kaniko作业的权限被拒绝_Docker_Kubernetes_Cloud_Openshift_Kaniko - Fatal编程技术网

Docker openshift群集中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

我试图通过我的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:
  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稍微复杂一些