如何调整Jenkinsfile中的ContainerTemplate以从私有注册表中获取图像

trnvg8h3  于 2023-02-03  发布在  Jenkins
关注(0)|答案(2)|浏览(215)

我想从我的private-docker-registry中获取一个Docker映像。我找不到一个好的解决方案来描述Jenkinsfile中的身份验证。我需要在Jenkinsfile中添加什么来获取我的映像"my-private-registry. image-name:tag"?

pipeline {
agent {
  kubernetes {
    label "${jenkins_slave_id}"
    defaultContainer 'jnlp'
    serviceAccount 'jenkins'
    yaml """
        apiVersion: v1
        kind: Pod
        spec:
          restartPolicy: Never
          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
          }
       }
    }
  }
}
p4rjhz4m

p4rjhz4m1#

是的,我已经添加了我的imagePullSecret,如下所示:

- name: "my-private-container"
          image: "my-private-registry.image-name:tag"
          imagePullSecrets: ['Docker-Registry']
          tty: true
          command:
            - cat
          volumeMounts:
            - name: docker-socket
              mountPath: /var/run/docker.sock

我在密码中将我的imagePullSecrets配置为“用户名和密码”。当我尝试运行它时,我收到以下消息:

Failed to pull image "my-private-registry.image-name:tag": unknown: Authentication is required
zour9fqk

zour9fqk2#

您只需使用专用注册表凭据创建群集对象密码,然后在Pod模板中添加密码名称,如下所示:
kubectl创建加密停靠注册表regcred --停靠服务器=您的私有注册表--停靠用户名=用户--停靠密码=密码

pipeline {
agent {
  kubernetes {
    label "${jenkins_slave_id}"
    defaultContainer 'jnlp'
    serviceAccount 'jenkins'
    yaml """
        apiVersion: v1
        kind: Pod
        spec:
          imagePullSecrets:
          - name: regcred
          restartPolicy: Never
          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"

相关问题