You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Jenkinsfile中ContainerTemplate配置拉取私有镜像仓库镜像

解决方案

以下是两种可直接落地的配置方案:

方式1:直接在Pod模板中配置镜像拉取Secret(推荐,灵活可控)

第一步:提前在K8s集群创建私有仓库认证Secret

首先在Jenkins代理Pod运行的Namespace下执行命令创建Docker认证Secret:
kubectl create secret docker-registry regcred --docker-server=my-private-registry --docker-username=你的仓库账号 --docker-password=你的仓库密码
注意:把命令中my-private-registry替换为你实际的私有镜像仓库域名/地址,regcred是Secret名称可自定义

第二步:修改Jenkinsfile的Kubernetes Pod配置

在Pod的spec字段下添加imagePullSecrets配置,修改后的完整代码如下:

pipeline {
agent {
  kubernetes {
    label "${jenkins_slave_id}"
    defaultContainer 'jnlp'
    serviceAccount 'jenkins'
    yaml """
        apiVersion: v1
        kind: Pod
        spec:
          restartPolicy: Never
          # 新增镜像拉取凭证配置
          imagePullSecrets:
          - name: regcred
          containers:
            - name: "my-private-container"
              image: "my-private-registry.image-name:tag"
              tty: true
              command:
                - cat
              volumeMounts:
                - name: docker-socket
                  mountPath: /var/run/docker.sock
            - name: "jnlp"
    """
  }
}

stages {
  stage("Do something") {
    steps {
      script {
        container('my-private-container') {
          script {
           //Do something
          }
       }
    }
  }
}

方式2:将Secret绑定到Jenkins使用的ServiceAccount(无需修改每个Jenkinsfile)

如果你所有Jenkins任务都需要拉取同一个私有仓库的镜像,可以直接把认证Secret绑定到你当前用的jenkins ServiceAccount上,所有用这个SA创建的代理Pod都会自动携带拉取凭证,不需要修改Pod模板:
执行命令绑定:
kubectl patch serviceaccount jenkins -p '{"imagePullSecrets": [{"name": "regcred"}]}' -n <Jenkins所在的Namespace>
绑定完成后原Jenkinsfile无需任何修改即可正常拉取私有镜像。

注意事项

  • 认证Secret必须和Jenkins代理Pod运行在同一个Namespace下
  • 如果私有镜像仓库是HTTP协议,需要提前在K8s节点的Docker/Containerd配置中添加该仓库为信任仓库

内容的提问来源于stack exchange,提问作者GreenJenks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:45:03