从 kubernetes 插件 / jenkins 中的 gcr 拉取 docker 图像的问题

Posted

技术标签:

【中文标题】从 kubernetes 插件 / jenkins 中的 gcr 拉取 docker 图像的问题【英文标题】:Problem with pulling docker images from gcr in kubernetes plugin / jenkins 【发布时间】:2019-08-06 10:59:04 【问题描述】:

我有一个 gke 集群,其中有一个正在运行的 jenkins master。我正在尝试开始构建。我正在使用带有由 kubernetes 插件(pod 模板)配置的从属的管道。我在 gcr(私人访问)中发布了我的詹金斯奴隶的自定义图像。我已将我的 gcr 的凭据(谷歌服务帐户)添加到詹金斯。尽管如此,jenkins/kubernetes 无法启动从属服务器,因为无法从 gcr 中提取图像。当我使用公共图像(jnlp)时没有问题。 但是当我尝试使用来自 gcr 的图像时,kubernetes 说:

Failed to pull image "eu.gcr.io/<project-id>/<image name>:<tag>": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

虽然 pod 与 gcr 在同一个项目中运行。

即使我使用 gcr 中的图像,我也希望 jenkins 启动从站。

【问题讨论】:

【参考方案1】:

即使pod在同一个项目的集群中运行,默认也是不认证的。

据说您已经设置了服务帐户,我假设 there's a furnished key 在 Jenkins 服务器中。

如果您使用的是Google OAuth Credentials Plugin,那么您也可以使用Google Container Registry Auth Plugin 到authenticate to a private GCR repository and pull the image。

【讨论】:

感谢 Google Container Registry Auth Plugin 正在运行 :)

以上是关于从 kubernetes 插件 / jenkins 中的 gcr 拉取 docker 图像的问题的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes Jenkins插件并发从属不工作

使用 Jenkins 中的 Kubernetes 插件未进行卷挂载

Jenkins-Kubernetes插件实现使用Pod作为 Agent-超详细

2. Jenkins+Git+Kubernetes+Pipeline配置详细说明

(集群外)jenkins连接K8S集群

(集群外)jenkins连接K8S集群