独自の SSL 証明書を使用するプライベート レジストリがあります。私ができないように見えるのは、エージェント (Kubernetes ポッド テンプレート) をレジストリにログイン (またはプッシュ) させることです。
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 証明書を与える場所/方法は?