jenkins - 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 策略绑定造成的。
如何解决这个问题呢?还是我使用了错误的方法?
请帮忙,谢谢!