部署harbor并实现https(SAN签发证书)
安装依赖
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
本文来自博客园,作者:PunchLinux,转载请注明原文链接:https://www.cnblogs.com/punchlinux/p/16499966.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示