我们有一个Jenkins作为CI/CD工具,最近我的公司转移到Kubernetes上托管的工人。我在试着理解它是怎么运作的。
这是一个使用托管在dockerhub上的公共镜像的示例管道
podTemplate(containers: [
containerTemplate(
name: 'aws',
image: 'amazon/aws-cli:latest',
command: 'sleep',
args: '99d',
envVars: [
envVar(key: "AWS_REGION", value: "eu-central-1"),
envVar(key: "AWS_DEFAULT_REGION", value: "eu-central-1")
])
])
{
node(POD_LABEL) {
stage('Testing the acccess') {
container('aws') {
withCredentials([aws(accessKeyVariable: 'AWS_ACCESS_KEY_ID', credentialsId: 'anthos-aws-creds', secretKeyVariable: 'AWS_SECRET_ACCESS_KEY')]) {
stage('Shell Execution') {
sh 'aws help'
sh 'aws autoscaling help'
sh 'aws eks list-clusters'
sh 'aws s3api list-buckets --query "Buckets[].Name"'
}
}
}
}
}
}
而且效果很好
但是现在我想使用GCP上的私人注册表中的图像,我只是不知道如何操作。下面是我的代码:
podTemplate(containers: [
containerTemplate(
name: 'gcp',
image: 'gcr.io/my_project_id/my_image:latest',
command: 'sleep',
args: '99d',
])
{
node(POD_LABEL) {
stage('Testing the acccess to GCP') {
container('gcp') {
withCredentials([file(credentialsId: 'gcp-sa-key', variable: 'GOOGLE_APPLICATION_CREDENTIALS')]) {
stage('Shell Execution') {
sh 'gcloud auth activate-service-account $SVC_ACCOUNT_EMAIL --key-file $SVC_ACCOUNT_FILE'
}
}
}
}
}
}
我得到一个错误,这样的仓库不存在。我检查了这个名字,我100%确定这个名字是正确的。
1条答案
按热度按时间thigvfpy1#
当您处理私有注册表时,您必须确保设置了“ImagePullSecret”,因为这将包含有权访问您的GCR的服务帐户凭据。此外,请确保已添加服务帐户的“Storage Object Viewer”角色。您可能需要检查防火墙配置,因为它可能是访问问题的一个因素。
附件是一份补充参考文件。[1]
[1]https://kubernetes.io/docs/concepts/containers/images/#creating-a-secret-with-a-docker-config