harbor依赖于dockercompose和docker
安装docker-compose
从Github上下载它的二进制包来使用,最新发行的版本地址:
https://github.com/docker/compose/releases
下载后上传到服务器
移动到/usr/local/bin目录下直接系统全局变量下使用
root@Harbor:/tools# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
查看版本信息
root@Harbor:/tools# docker-compose version
Docker Compose version v2.3.4
安装Harbor
GitHub 地址 https://github.com/goharbor/harbor/releases
将下载好的Harbor解压
将模板文件复制一份新的yml
配置Harbor https认证
如果使用containerd部署容器使用harbor则需要参考官网说明,与传统docker部署的Harbor自签发 SSL证书不同需要使用SAN包含多域名签发对象:
https://goharbor.io/docs/2.4.0/install-config/configure-https/
创建自签发SSL
root@Harbor:/usr/local/harbor# mkdir /usr/local/harbor/certs
root@Harbor:/usr/local/harbor# cd certs/
#创建CA私钥
root@Harbor:/usr/local/harbor/certs# openssl genrsa -out ca.key 4096
#自签名机构生成CA证书
root@Harbor:/usr/local/harbor/certs# openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Jangsu/L=Nanjing/O=example/OU=Personal/CN=cncf.net" \
-key ca.key \
-out ca.crt
#参数说明:
## C,Country,代表国家
## ST,STate,代表省份
## L,Location,代表城市
## O,Organization,代表组织,公司
## OU,Organization Unit,代表部门
## CN,Common Name,代表服务器域名
## emailAddress,代表联系人邮箱地址。
#客户端私钥证书生成
root@Harbor:/usr/local/harbor/certs# openssl genrsa -out cncf.net.key 4096
root@Harbor:/usr/local/harbor/certs# openssl req -sha512 -new \
-subj "/C=CN/ST=Jangsu/L=Nanjing/O=example/OU=Personal/CN=cncf.net" \
-key cncf.net.key \
-out cncf.net.csr
#生成多个域名请求
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=cncf.com
DNS.2=harbor.cncf.net
DNS.3=harbor.cncf.local
EOF
#使用自签名CA签发证书
root@Harbor:/usr/local/harbor/certs# openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in cncf.net.csr \
-out cncf.net.crt
配置harbor配置文件
#修改域名和https SSL签发的私钥和证书路径
root@Harbor:/usr/local/harbor# vim harbor.yml
hostname: harbor.cncf.net
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /usr/local/harbor/certs/cncf.net.crt
private_key: /usr/local/harbor/certs/cncf.net.key
data_volume: /data
建立Harbor数据目录,并使用数据盘挂载到/data目录
root@Harbor:/usr/local/harbor# mkdir /data
安装Harbor
root@Harbor:/usr/local/harbor# ./install.sh --help
Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https.
Please set --with-trivy if needs enable Trivy in Harbor
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor
#--with-trivy 开启trivy扫描
root@Harbor:/usr/local/harbor# ./install.sh --with-trivy --with-chartmuseum
安装完成
执行安装后访问harbor验证https
使用域名访问:电脑配置hosts本地解析(配置略)
密码则为配置文件中设置的123456
docker 客户端配置证书验证,并推送镜像到Harbor
创建证书的名称必须是harbor域名的名称
#docker客户端创建证书保留位置
root@ubuntu20:~# mkdir /etc/docker/certs.d/harbor.cncf.net -p
#Harbor将证书发送给客户端
root@Harbor:/usr/local/harbor/certs# scp cncf.net.crt 192.168.119.110:/etc/docker/certs.d/harbor.cncf.net/
#docker客户端配置hosts域名解析Harbor
root@ubuntu20:~# vim /etc/hosts
192.168.119.10 harbor.cncf.net
#docker登录harbor
root@ubuntu20:~# docker login harbor.cncf.net
Username: admin
Password:
登录成功
新建项目
docker push推送镜像到harbor
root@ubuntu20:~# docker tag web/nginx:1.20.2 harbor.cncf.net/web/nginx:1.20.2
root@ubuntu20:~# docker push harbor.cncf.net/web/nginx:1.20.2
查看Harbor
以上就是关于部署harbor并实现https(SAN签发证书)。如果对你有帮助或有建议疑问可以评论区留言!