首页 > 解决方案 > Jenkins Kaniko 未能推送到 GCR

问题描述

我让 Jenkins 和 Kanika 在 Kubernetes 中运行以构建映像,我想推送到 GCR。

对于服务帐户,我使用“所有者”级别的服务帐户(仅用于 PoC)。

我的管道:

podTemplate(
containers: [
    containerTemplate (
        name: 'kaniko',
        image: 'gcr.io/kaniko-project/executor:debug-v1.3.0',
        ttyEnabled: true,
        command: 'sleep 1000000',
        args: '',
        resourceRequestCpu: '0.5',
        resourceRequestMemory: '500Mi'
    )
],
serviceAccount: 'jenkins-service-account'
} {
node(POD_LABEL) {
    try {
        stage('Prepare') {
            git([
              url: 'https://myrepo.example.com/example-kaniko.git',
              branch: 'master',
              credentialId: 'jenkins-github'
            ])
        }
        
        container('kaniko') {
          stage ('Build image') {
            sh '/kaniko/executor -c `pwd` --cache=true --skip-unused-stages=true --single-snapshot --destination=asia.gcr.io/[MY_PROJECT_ID]/testing-1:v1'
          }
        }
    } catch (e) {
        throw e
    } finally {
        echo "Done"
    }
}

但是,我仍然得到一个错误:

错误检查推送权限 - 确保您输入了正确的标签名称,并且您已正确验证,然后重试:检查“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 策略绑定造成的。

如何解决这个问题呢?还是我使用了错误的方法?

请帮忙,谢谢!

标签: jenkinskubernetesgoogle-cloud-platformkaniko

解决方案


查看文档并确保您设置了正确的身份验证方法
此外,您可以检查您的容器注册表服务帐户这里
也有类似的问题。


推荐阅读