问题标签 [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.
kubernetes - Knative 映像构建和推送失败,访问被拒绝
我正在尝试使用 Knative 构建和推送 docker 映像。我有一个 Maven Java 应用程序和一个Dockerfile
构建和运行该应用程序的多阶段:
我想构建应用程序并将其推送到 gcr 存储库。所以我有一个ServiceAccount
和一个Build
:
我试着用kaniko-project
这个。但是,使用它存在一些问题。版本0.1.0
适用于简单的Dockerfile
:
但不支持Dockerfile
访问被拒绝错误的 multistaging s 和 fils。任何其他版本的kaniko
都不起作用,并且失败。在多阶段构建的 0.1.0 版本的日志中,我可以看到以下错误:2019/07/02 14:43:13 No matching credentials found for index.docker.io, fall back on anonymous time="2019-07 -02T14:43:15Z" level=info msg="保存依赖项 []" time="2019-07-02T14:43:15Z" level=error msg="复制失败:未指定源文件"
和构建的状态:
对于kaniko
高于 0.1.0 的任何其他版本,这是错误:
同样在日志中有类似的东西:
我在他们的回购中发现了一个问题,该问题已关闭。但是,它仍然可以重现。这是github问题
我可以确认我ServiceAccount
的做法是正确的,因为我能够使用此配置构建和推送一个简单的 docker 映像。我还尝试了不同的图像来构建和推送。例如这里描述的那个。即使我已经按照那里描述的所有步骤进行操作(按照说明创建我ServiceAccount
的说明,它适用于一个简单的 Dockerfile),但当我尝试构建和推送我的应用程序时它仍然失败。因此,当我应用以下构建时:
构建失败,我在日志中收到错误:
kubernetes - Gitlab Runner 无法解析 Gitlab 服务器的 DNS
我面临一个非常奇怪的问题。
首先我的设置:
我有一个私有 Gitlab 服务器,它使用 Kubernetes 上的 Gitlab CI Runners 来构建 Docker 映像。为此,我使用 Kaniko Image。Runners 由 Gitlab 自己提供,并带有内置的 Kubernetes 管理。所有这些都在 PFSense 服务器后面运行。
现在我的问题是:
有时 Kaniko Pod 无法解析 GitLab 服务器的主机名。这会导致 git pull 失败,从而导致构建失败。我认为失败的几率是 60%,这对我们来说太高了。重试几次构建后,它将运行没有任何问题。
运行 Gitlab CI 的 Kubernetes 集群是在 CentOS 7 上设置的。SELinux 和 FirewallD 被禁用。所有主机都可以解析 GitLab 服务器。它也与导致问题的特定主机服务器无关。我已经看到它在包括 Manager Server 在内的所有 5 台服务器上都失败了。另外我还没有看到这个问题出现在其他 Pod 中。但是集群中的其他部署并没有真正通过 DNS 进行连接。我确信 Runner 完全可以访问 DNS,因为它正在从 gcr.io 中提取 Kaniko Image。
有没有人见过这个问题或知道解决方法?
- 我已经尝试过生成只对域进行 DNS 请求的 Pod。我没有看到一个失败。
- 我还尝试重新启动整个集群和 Gitlab 实例。
- 我试图对 PFSense 中的 DNS 路由进行静态覆盖。还是一样的问题。
这是我的 CI 配置:
发生以下错误:
google-app-engine - 您可以使用 Kaniko 通过 gcloud app deploy 为 App Engine Flexible 构建自定义映像吗?
我gcloud app deploy
目前正在为 App Engine Flexible 构建自定义图像。我已经玩过使用 Kaniko 来gcloud builds submit
为其他项目使用缓存,但是是否可以启用 Kaniko 以用于提交的构建gcloud app deploy
?
我试过运行gcloud config set builds/use_kaniko True
,这似乎并没有改变构建行为。
似乎一个选择是先通过构建图像gcloud builds submit
,然后使用gcloud app deploy --image-url=...
,但我不确定是否有更简化的方式。
docker - 有人能告诉我如何使用 .git-ci.yml 文件在 gcloud kubernetes 集群上部署 kaniko 构建的 docker 映像吗?
谁能告诉我可以在deploy: stages
脚本标签中编写哪些命令来将代码推送到 gcloud Kubernetes 集群上?
docker - 无法使用 Kaniko 构建运行 docker 映像(基于 Webshpere liberty)
我正在尝试构建一个简单的 Spring 应用程序的图像,并将 Websphere 自由的基本图像安装为根应用程序。
虽然它在本地构建并且运行良好,但在使用 Kaniko(由 Jenkins 使用)构建时无法正确构建相同的图像。
示例项目 - https://github.com/dhananjay12/ci-cd-spring-project wslc 的 Docker 文件 - https://github.com/dhananjay12/ci-cd-spring-project/blob/master/Dockerfile-wslc
它在本地构建并运行良好。
从 kaniko 构建时,图像有点损坏,运行时出现以下错误
有什么建议么?
kubernetes - 尝试推送到不安全的私有 docker 注册表时检查推送权限时出错
我在 kubernetes 上使用 gitlab runner,kaniko 将图像推送到 docker 私有注册表(不安全),我怎样才能给 kaniko 推送权限?
我试过 --insecure-registry, --skip-tls-verify params 但有同样的错误
错误检查推送权限 - 确保您输入了正确的标签名称,并且您已正确验证,然后重试:检查“registry-ip:5000/soccer”的推送权限:发布http://registry-ip:5000 /v2/soccer/blobs/uploads/:net/http:HTTP/1.x传输连接中断:HTTP 响应格式错误“\x15\x03\x01\x00\x02\x02\x16”
docker - 使用 CloudBuild 共享用于多阶段 Docker 构建的 Kaniko 缓存
我正在开发一个 CloudBuild 脚本,该脚本为集成测试构建多阶段 Docker 映像。为了优化构建脚本,我选择使用Kaniko。下面提供了 Dockerfile 和 cloudbuild.yaml 文件的相关部分。
cloudbuild.yaml
Dockerfile
由于我的 Docker 映像是一个多阶段构建,具有 2 个独立的结束阶段,它们共享一个公共基础构建,我想在公共部分和其他两个部分之间共享缓存。为此,我将所有构建设置为共享同一个缓存存储库- --cache-repo=gcr.io/$PROJECT_ID/<MY_REPO>/cache
。到目前为止,它在我所有的测试中都有效。但是,我无法确定这是否是最佳实践,或者是否会推荐其他缓存基本图像的方式。这是一个可接受的实现吗?
我遇到了Kaniko-warmer,但我无法根据我的情况使用它。
docker - openshift 集群中 Kaniko 作业的权限被拒绝
我试图通过我的 k8s 操作员在 openshift 3.11 集群上进行部署。当 kaniko 作业开始时,它给了我以下错误。
c# - 如何使用 Docker 和 Kaniko 减少 .NET Core 应用程序的构建时间?
我在 .NET Core 2.2 控制台应用程序中有以下 Dockerfile。
我的 .dockerignore 文件看起来像
我们正在使用 GitLab 和 Kaniko 构建 gitlab-ci.yml 文件。
构建这个控制台应用程序需要 7 分钟,但用 Go 语言编写的另一个应用程序需要 40 秒。
如何减少此应用程序的构建时间?
kubernetes - skaffold/kaniko:从另一个命名空间访问服务
我已将注册表服务部署到命名空间中registry
:
这是我的skaffold.yaml
:
一切正常,直到 kaniko 试图将图像推送到上面的注册表:
获取“ http://registry-docker-registry.registry.svc.cluster.local:5000/v2/ ”:拨打tcp:在127.0.0.53:53上查找registry-docker-registry.registry.svc.cluster.local:没有这样的主机
关于如何访问部署在同一个 kubernetes 中的这个注册表的任何想法?
我试图从另一个 pod 访问注册表:
如您所见,它能够访问注册表。