一、环境说明
ubuntu 22.04、docker-compose v2.16.0、harbor v2.7.0、docker 20.10.17。
二、下载安装包并配置
直接在线执行命令安装 docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.16.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose docker-compose -version
下载harbor 安装包
wget -c https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgztar xvf harbor-offline-installer-v2.7.0.tgz -C /harbor && cd /harborcp harbor.yml.tmpl harbor.yml && gedit harbor.yml
配置 harbor.yml 文件
#配置harbor服务节点的域名(注意域名要符合规范,结尾以.com 结束,否则在docker 中 会无法解析为地址)hostname:ubuntu-two.com #配置http访问的端口,可以自定义配置。 http.port:80 #使用默认的。 https.port :443 #https访问时的证书路径 https.certificate:/harbor/cert/ubuntu-two.com.crt #访问时证书私钥路径 https.pprivate_key https:/harbor/cert/ubuntu-two.com.key #通过http访问web页面的密码,用户名默认 admin。 harbor_admin_password: Harbor12345 #harbor 数据库的密码。 database.password: Harbor12345 #harbor 数据存放的路径。 data_volume: /harbor/data
三、生成证书(如果是通过http访问,则不需要生成证书,但是配置文件harbor.yml中需要把https的相关配置注释掉)
生成 CA 证书秘钥:ca.key
mkdir cert && cd cert openssl genrsa -out ca.key 4096
生成 CA 证书:ca.crt
openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=ubuntu-two.com" \ -key ca.key \ -out ca.crt
生成服务器证书秘钥:ubuntu-two.com.key
openssl genrsa -out ubuntu-two.com.key 4096
生成服务器证书签名:ubuntu-two.com.csr
openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=ubuntu-two.com" \ -key ubuntu-two.com.key \ -out ubuntu-two.com.csr
生成 x509 v3 扩展文件:v3.ext
进行ssl验证的主机地址和域名必须在下面的alt_names中设置,否则主机无法通过认证
cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=ubuntu-two DNS.2=ubuntu-two.com DNS.3=ubuntu.two.com EOF
使用 v3.ext文件为Harbor 主机生成证书:ubuntu-two.com.crt
openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in ubuntu-two.com.csr \ -out ubuntu-two.com.crt
四、进行安装
在解压目录 /harbor 下执行命令进行安装
./install.sh
生成docker的认证文件:将证书文件.crt转换为docker的.cert文件
openssl x509 -inform PEM -in ubuntu-two.com.crt -out ubuntu-two.com.cert
将ca证书和服务器证书文件复制到docker 证书文件夹中。如果其他主机上docker需要访问harbor服务,也需要将证书文件复制到其他节点对应的docker证书文件夹中,并重新配置docker。
mkdir -p /etc/docker/certs.dmkdir -p /etc/docker/certs.d/ubuntu-two.comcp ubuntu-two.com.cert /etc/docker/certs.d/ubuntu-two.com/cp ubuntu-two.com.key /etc/docker/certs.d/ubuntu-two.com/cp ca.crt /etc/docker/certs.d/ubuntu-two.com/
在docker 的配置文件 /etc/docker/daemon.json 添加如下配置,然后重启docker:systemctl restart docker。
"registry-mirrors": ["https://3wgzoynv.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io","http://hub-mirror.c.163.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn"],"insecure-registries": ["ubuntu-two.com"]
五、创建harbor服务,使开机时随docker服务一起启动。
在 /etc/systemd/system/ 下创建 harbor.service 文件
vim /etc/systemd/system/harbor.service
添加下面内容
[Unit] Description=Harbor After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=http://github.com/vmware/harbor[Service] Type=simple Restart=on-failure RestartSec=5ExecStart=/usr/local/bin/docker-compose -f /harbor/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f /harbor/docker-compose.yml down [Install] WantedBy=multi-user.target
设置为开机启动:
chmod +x harbor.service systemctl enable harbor.service systemctl start harbor.service systemctl status harbor.service
六、发布仓库,形式:docker push/pull harbor地址域名/项目/镜像名称:tag
docker ubuntu-two.com -u admin -p Harbor12345 或者 docker ubuntu-nginx: ubuntu-two.com/library/nginx:latest ubuntu-two.com/library/nginx:latest
七、harbor 服务的配置更新,重启和停止
在docker安装目录下进行关闭服务
docker-compose down
通过 systemctl关闭已经创建的harbor服务
systemctl stop harbor
修改 安装目录下的 harbor.yml 文件,执行下面命令重新配置生效
#如果是 创建了harbor服务,则建议使用 systemctl stop harbor 命令 docker-compose down ./prepare docker-compose up –d
在安装目录下 harbor 服务重启
docker-compose up –d
如果已经创建了 harbor服务,则通过下面命令重启
systemctl restart harbor
八、在helm中配置harbor仓库,并发布chart。
(1)在确保安装了helm的情况下,添加仓库:
仓库格式: http(s)://{harbor 域名或iP:端口(如果默认443 或80 可不加)}/chartrepo/{mychart}
在命令行执行:
helm repo add --username=admin --password=Harbor12345 harbor http://ubuntu-two/chartrepo/library
如果开启了https,需要指定harbor的登录证书:
helm repo add --ca-file ca.crt --cert-file ubuntu-two.crt --key-file ubuntu-two.key --username=admin --password=Harbor12345 harbor https://ubuntu-two/chartrepo/library
如果helm服务和harbor服务不在同一个机器上,需要把harbor的证书信息拷贝到helm服务器上再指定。
(2)发布chart
首先安装helm插件,通过 “helm plugin list” 命令查看安装的插件:
helm plugin install https://github.com/chartmuseum/helm-push
创建 chart
helm create mytest
发布:helm cm-push [chart文件] [已添加的harbor仓库名称] –flags(harbor服务器的证书文件和账号密码)
helm cm-push /harbor/charts/mytest harbor --ca-file ca.crt --cert-file ubuntu-two.crt --key-file ubuntu-two.key --username=admin --password=Harbor12345
发布成功后如下图:
原创文章,引用请注明出处。
原文链接:https://www.cnblogs.com/hewei-blogs/articles/17137764.html