前提
主机以及地址
k8smaster1 192.168.56.29 (harbor安装在该主机上)
k8smaster2 192.168.56.27
k8snode1 192.168.56.26
Harbor服务地址 harbor.k8smaster1.com
1.安装docker、docker-compose
步骤略过,未安装的可以按照文章末尾参考资料安装。三台主机都需要安装docker
2.下载harbor安装包
#下载离线包
wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.1.tgz
#解压
tar xvf harbor-offline-installer-v2.1.1.tgz -C /home/ && cd /home/harbor/
#创建目录
mkdir -p /home/harbor/certs /home/harbor/data
3.修改harbor配置文件
这里加压后有些是harbor.yml.tmpl这个名字,我们直接改成harbor.yml就可以了,harbor.k8smaster1.com这个是服务地址,hostname:port就可以访问到harbor仓库
mv /home/harbor/harbor.yml.tmpl /home/harbor/harbor.yml
vi /home/harbor/harbor.yml
...
#我指定的地址是hostname: harbor.k8smaster1.com
hostname: harbor.k8smaster1.com
http:
port: 80
https:
port: 443
certificate: /home/harbor/certs/harbor.k8smaster1.com.crt #需要自己生成的证书文件
private_key: /home/harbor/certs/harbor.k8smaster1.com.key #需要自己生成的证书文件
#admin用户的登录密码
harbor_admin_password: Harbor12345
database:
password: root123
max_idle_conns: 50
max_open_conns: 1000
#数据存放的目录
data_volume: /home/harbor/data
...
生成配置文件里面所需要的证书文件以及客户端证书,harbor.k8smaster1.com是harbor服务的地址。
我们这里会生成三个文件:harbor.k8smaster1.com.cert、harbor.k8smaster1.com.crt、harbor.k8smaster1.com.key
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /home/harbor/certs/harbor.k8smaster1.com.key -x509 -out /home/harbor/certs/harbor.k8smaster1.com.crt -subj /C=CN/ST=BJ/L=BJ/O=DEVOPS/CN=harbor.k8smaster1.com -days 3650
openssl x509 -inform PEM -in harbor.k8smaster1.com.crt -out harbor.k8smaster1.com.cert
4.安装harbor
./install.sh
在这里,如果我们安装完之后,后面又修改了配置文件则需要使用以下命令来重新生成程序文件
./prepare
docker-compose down -v
docker-compose up -d
5.访问harbor的ui界面
https://192.168.56.29
新建一个项目,这里我已经创建过了
6.docker访问harbor仓库
在另外主机k8smaster2、k8snode1上面配置hosts信息
#配置hosts
vi /etc/hosts
192.168.56.29 harbor.k8smaster1.com
在k8smaster1主机上面配置仓库,测试http方式登录harbor仓库。
#配置仓库,使用http方式登录则需要配置仓库信息
vi /etc/docker/daemon.json
{
"insecure-registries":["harbor.k8smaster1.com"]
}
#重启服务
systemctl daemon-reload
systemctl restart docker
#登录harbor,使用admin账号登录
docker login http://harbor.k8smaster1.com
注意1:在这里有时候重启docker会导致harbor服务down掉,这个时候可以重新启动一下
cd /home/harbor/common/config
docker-compose restart
注意2:重启docker有时候会报错,这个时候看下配置文件有没有写错,找不到问题在哪的话可以将这个文件/etc/docker/daemon.json改回去,再重新启动,没继续报错再改回来重新启动就好了。
这里直接访问成功。
在k8snode1主机上面配置证书,测试https方式登录harbor仓库。
#在k8snode1主机上创建目录,harbor.k8smaster1.com目录对应仓库服务地址的hostname或者ip
mkdir -p /etc/docker/certs.d/harbor.k8smaster1.com/
#在k8smaster1主机上面将证书文件复制到k8snode2主机上去
scp /home/harbor/certs/* [email protected]:/etc/docker/certs.d/harbor.k8smaster1.com/
#重启k8snode1主机上的docker服务
systemctl daemon-reload
systemctl restart docker
#使用https的方式访问仓库,账号admin
docker login https://harbor.k8smaster1.com
7.将镜像打包push到harbor仓库
以下在k8snode1主机上操作
#给docker添加一个国内镜像源
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
#重启docker
systemctl daemon-reload
systemctl restart docker
#拉取镜像
docker pull nginx
#重新打包镜像。harbor.k8smaster1.com这个是我们harbor服务地址;local-repository这个是我们harbor创建的仓库
docker tag nginx:latest harbor.k8smaster1.com/local-repository/mynginx:v1
#登录仓库
docker login https://harbor.k8smaster1.com
#推送镜像
docker push harbor.k8smaster1.com/local-repository/mynginx:v1
推送完成
在harbor的ui界面查看我们推送的镜像
至此,操作完成。
参考资料:(第一个缺少了证书的配置;第二个资料操作不是很明了,对着操作可能会出现一些问题)
k8s搭建安装 Harbor 私有镜像仓库(详细)
使用Harbor搭建Docker私有仓库并建立访问(http与https自签名方式)