在Jenkins上对私有GCP注册表进行身份验证

taor4pac  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(192)

我们有一个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%确定这个名字是正确的。

thigvfpy

thigvfpy1#

当您处理私有注册表时,您必须确保设置了“ImagePullSecret”,因为这将包含有权访问您的GCR的服务帐户凭据。此外,请确保已添加服务帐户的“Storage Object Viewer”角色。您可能需要检查防火墙配置,因为它可能是访问问题的一个因素。
附件是一份补充参考文件。[1]
[1]https://kubernetes.io/docs/concepts/containers/images/#creating-a-secret-with-a-docker-config

相关问题