问题标签 [kaniko]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - 使用 kaniko 构建多阶段图像时的缓存问题
我已经使用 kaniko(版本v1.6.0-debug
)在 kubernetes 中设置了容器映像,但是当启用缓存()时,我最终遇到了以下问题/kaniko/executor --cache --cache-repo $CI_REGISTRY_IMAGE/cache
。
这是一个简化的 Dockerfile 来解释这个问题(真正的有一个 PHPpackage.json
和package.lock
添加了新要求的文件)。
如果testfile
修改了,并且之前构建了 docker 映像(因此它的所有层都缓存在 docker 注册表中),则 kaniko 看不到任何修改并使用缓存的层
结果是最终的 docker 映像提供了文件的旧(缓存)版本,testfile
而不是最后一个。
知道如何解决/缓解这个问题吗?当然,如果我从我们的 docker 存储库中删除缓存层,图像会正确构建,但禁用缓存对我来说不是一个选项,因为构建会太慢。
docker - 292 年前关于 kaniko 构建的 Docker 历史
我已经在我的构建管道中从 docker-in-docker builds 切换到 kaniko builds,现在 docker 历史记录结果一团糟:
我正在构建/kaniko/executor
没有任何特定标志,并使用docker history
.
我做错了什么?
gitlab - 可以将 kaniko 添加到 alpine 图像或将 jq 添加到 kaniko 图像
这就是我使用 kaniko 在我的 gitlab CI 中构建 docker 映像的方式,效果很好。
但我需要读取一个 json 文件来获取一些值。因此我需要访问jq
.
.gilab-ci.yml
是否可以将 jq 添加到图像中以避免在此阶段始终重复安装它?
在所有其他阶段,我使用的是我自己的 alpine 图像,我在 CI 管道中添加了我需要的一切。因此,另一种选择是将 kaniko 添加到此图像中-如果可能的话。这将导致一个图像具有所需的所有实用程序。
Dockerfile
gradle - 仅使用 gradle 创建依赖项 jar
我已经看到了与此类似的问题,但对于 maven 而不是 gradle。我使用 docker 容器的 kaniko 缓存,如果我可以将依赖项与应用程序分开,我可以大大提高缓存命中率,因为依赖项不会经常更改。我正在寻找某种方法来构建依赖项 jar,或者构建一个 Dockerfile 来单独复制 jar 文件(kaniko 使用 Dockerfile 并分别缓存每个命令。
kubernetes - 无法在 tekton 管道中推送 AWS ECR 图像
我根据这个链接在 minikube 上创建了 tekton 管道(基本上我是从 github 中提取 repo 并生成图像并将其推送到 ECR)
但就我而言,我将图像推送到 AWS ECR。
当我运行管道时,我收到以下错误。
注意:为了测试我的 AWS 凭证是否配置正确,我创建了一个简单的部署规范文件并运行它。图像被拉出并且应用程序正在运行。但是对于 tekton,我遇到了 401 问题。有人可以帮我解决这个问题吗?
jenkins - Jenkins Kaniko 未能推送到 GCR
我让 Jenkins 和 Kanika 在 Kubernetes 中运行以构建映像,我想推送到 GCR。
对于服务帐户,我使用“所有者”级别的服务帐户(仅用于 PoC)。
我的管道:
但是,我仍然得到一个错误:
错误检查推送权限 - 确保您输入了正确的标签名称,并且您已正确验证,然后重试:检查“asia.gcr.io/[MY_PROJECT_ID]/testing-1:v1”的推送权限:解析授权对于 asia.gcr.io 失败:获取凭据时出错 - 错误:退出状态 1,输出:
docker-credential-gcr/helper: could not retrieve GCR's access token: compute: Received 403
无法生成访问令牌;IAM 返回 403 Forbidden: The caller does not have permission 此错误可能是由于目标 IAM 服务账户上缺少 IAM 策略绑定造成的。
如何解决这个问题呢?还是我使用了错误的方法?
请帮忙,谢谢!
gitlab - 带有 Kaniko 和 EKS 的 GitLab CI 超时
我正在尝试按照此处概述的使用 kaniko 的 GitLab 示例代码进行操作。我唯一改变的是我使用v1.7.0-debug
标签而不是简单的debug
.
我的构建工作在以下行停滞不前:
它只是停下来Executing "step_script"
,永远不会继续前进。我已经全面研究并阅读了尽可能多的文档,但无法解决此问题。
设置
- Amazon EKS 版本 1.21
- GitLab Runner Helm Chart 0.34.0 版
- kaniko 执行器镜像 v1.7.0-debug
docker - 为什么 Google Cloud Build 会执行我的所有触发器
我正在使用 Google Cloud Build 作为 CI 来构建 docker 映像。每个微服务都有一个存储库和多个子目录(带有 Dockerfile 和 cloudbuild.yaml 文件)。我为每个只监视特定子目录(包含文件过滤器)的微服务设置了触发器。对于缓存 docker 层,我使用的是 Kaniko。我的 cloudbuild 步骤如下所示:
一切正常,但是当我在一个微服务中进行修改时,它会构建所有微服务。你知道为什么吗?谢谢你。
argo-workflows - Buildah vs Kaniko
我正在使用 ArgoWorkflow 来自动化我们的 CI/CD 链。为了构建镜像,并将它们推送到我们的私有注册表,我们面临着选择 buildah 或 kaniko。但我无法指出两者之间的主要区别。利弊,以及这些工具如何处理并行构建和缓存管理。谁能澄清这些观点?或者甚至建议另一种可能以更简单的方式完成工作的工具。关于这个主题的一些澄清将非常有帮助。提前致谢。
docker - 我可以使用 nerdctl 从集群内部构建图像吗
众所周知,如果我们使用 docker 在容器中构建镜像,我们必须挂载 "-v
/var/run/docker.sock:/var/run/docker.sock"
,那么 nerdctl 是如何使用 container-d 处理的呢?我打算使用 nerdctl 而不是 kaniko ,如果我使用 kaniko ,我的工作流程更改会很重。