0

我有一个私人注册表,我使用自己的 SSL 证书。我似乎无法做的是让代理(Kubernetes pod 模板)登录(或推送)到注册表,我花了很多小时试图弄清楚这一切是如何粘合在一起的。

pipeline {

agent {
    kubernetes {
        label "saas-fwk-deploy-${cto.devops.jenkins.Utils.getTimestamp()}"
        inheritFrom 'k8s-dind'
        yaml """
        spec:
          containers:
          - name: opstools
            image: registry/tools:latest
            workingDir: /home/jenkins
            command:
            - cat
            tty: true
            env:
            - name: DOCKER_HOST
              value: "tcp://127.0.0.1:2375"
            securityContext:
              allowPrivilegeEscalation: true
            privileged: true
        """
        
    }
}

options {
    timeout(time: 12, unit: 'HOURS')
    buildDiscarder(logRotator(daysToKeepStr: '7', artifactDaysToKeepStr: '0'))
    skipDefaultCheckout()
    disableConcurrentBuilds()
    timestamps()
}



stages {

    stage('deploy') {
        steps {
            container('opstools') {
                sh "docker --version"
                sh """
                pwd
                ls -al
                mkdir -p ~/.docker/certs.d/harbor.net
                curl -k -b cookie -o ~/.docker/certs.d/harbor.net/ca.crt https://saas2.cert.com/api/v1/pub/ingressca
                cat ~/.docker/certs.d/harbor.net/ca.crt
                docker info 
                docker login -u superadmin -p example harbor.net
                """
            }
        }
    }
}

我得到了这个错误:

 docker login -u superadmin -p example harbor.net
21:01:55  WARNING! Using --password via the CLI is insecure. Use --password-stdin.
21:01:55  Error response from daemon: Get https://harbor.net/v2/: x509: certificate signed by unknown authority

证书没有被考虑在内,即使我将其位置更改为 /etc/docker/certs.d/*

本质上,我知道 docker 需要拥有我的 CA 证书,但我无法弄清楚我如何给代理(或代理正在使用的 docker dind 容器)。(我可以登录到我的注册表并通常拉/推图像,所以我知道我的 SSL 证书很好)。

我在哪里/如何给 docker 我的 ca 证书?

4

0 回答 0