Jenkins使用tls方式连接docker构建主机(https)
实验环境:
172.25.2.7 ser6 jenkins主机
172.25.2.8 ser8gitlab仓库
172.25.2.2 ser1 harbor仓库
172.25.2.9 ser9 新添加的主机 (docker服务端)
关闭selinux和firwalld
1.在docker服务端,生成key和ca证书。
# openssl genrsa -aes256 -out ca-key.pem 4096
# openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
生成server-key和csr文件(server3为dcker主机名)
# openssl genrsa -out server-key.pem 4096
#openssl req -subj "/CN=server3" -sha256 -new -key server-key.pem -out server.csr
可以使用ip地址方式进行tls连接
# echo subjectAltName = DNS:server3,IP:172.25.0.13,IP:127.0.0.1 >> extfile.cnf
# echo extendedKeyUsage = serverAuth >> extfile.cnf
# openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
安装docker证书:
# cp ca.pem server-cert.pem server-key.pem /etc/docker/
# cp /usr/lib/systemd/system/docker.service /etc/systemd/system/docker.service
# vim /etc/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376
# systemctl daemon-reload
# systemctl restart docker
# netstat -antlp |grep :2375
生成客户端key和证书
# openssl genrsa -out key.pem 4096
# openssl req -subj '/CN=client' -new -key key.pem -out client.csr
# echo extendedKeyUsage = clientAuth >> extfile.cnf
# openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
1.在ser9上
2)
改为tcp方式连接
创建客户端的证书
3)让jenkins识别到证书
添加客户端的证书
添加客户端的认证
添加server的ca证书
点击添加
4)在docker主机ser9中添加hatbor仓库的解析
5)将harbor仓库的认证给ser9
6)进行测试
代码仓库中的代码等,都参考前面写的文章,这里直接测试。
7)再对整个流程进行测试
在ser8代码仓库中
测试ssh 插件
1.为jenkins添加ssh 模块
2.点击系统设置
点击新增
选择添加用户
点击保存
进行手动推送时
在ser9上
对ssh脚本进行改进
在ser8中改变代码