我有一个私人注册表,我使用自己的 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 证书?