一、环境说明

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