前面介绍了harbor镜像仓库的基本概念,接下进行harbor的部署
一、harbor仓库的搭建(http模式)准备条件: 系统要安装docker,有docker-compose命令
下载离线包:
wget https://github.com/goharbor/harbor/releases/download/v2.1.1/harbor-offline-installer-v2.1.3.tgz
上传至系统进行解压:
tar -zxvf harbor-offline-installer-v2.1.1.tgz -C /harbor-2.1.1
进入解压目录,加载镜像文件
[root@k8s-master-1 ~]# cd /harbor-2.1.1/harbor/ [root@k8s-master-1 harbor]# docker load -i harbor.v2.1.1.tar.gz 拷贝配置文件,如下: [root@k8s-master-1 harbor]# ll total 538832 -rw-r--r-- 1 root root 3361 Oct 23 11:57 common.sh -rw-r--r-- 1 root root 551729054 Oct 23 11:58 harbor.v2.1.1.tar.gz -rw-r--r-- 1 root root 8136 Oct 23 11:57 harbor.yml.tmpl -rwxr-xr-x 1 root root 2523 Oct 23 11:57 install.sh -rw-r--r-- 1 root root 11347 Oct 23 11:57 LICENSE -rwxr-xr-x 1 root root 1881 Oct 23 11:57 prepare [root@k8s-master-1 harbor]# cp harbor.yml.tmpl harbor.yml 编辑配置文件harbor.yml,主要修改以下几项: hostname = 1.68.5.94 http: ####此处配置的http, port: 80 harbor_admin_password = Harbor12345 ###用户名密码 data_volume: /data ###数据存放路径
开始安装
执行以下命令 [root@k8s-master-1 harbor]# ./prepare [root@k8s-master-1 harbor]# sh install.sh ######################## 启用或者停止harbor,可使用以下命令 docker-compose -f docker-compose.yml down/up -d
结束之后使用本地地址登录页面,默认端口为80,如下:
本地docker添加信任,编辑vim /etc/docker/daemon.json,添加一下内容:
如果不添加信任,本地登录时会出现验证问题
{
"insecure-registries": [ "1.68.5.94" ]
}
重启docker,systemctl restart docker
本地测试登录,如下:
[root@k8s-master-1 ~]# docker login 1.68.5.94 Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@k8s-master-1 ~]#二、harbor仓库的搭建(https模式)
准备条件: 系统要安装docker,有docker-compose命令
下载离线包:
wget https://github.com/goharbor/harbor/releases/download/v2.1.3/harbor-offline-installer-v2.1.1.tgz
上传至系统进行解压:
tar -zxvf harbor-offline-installer-v2.1.1.tgz -C /harbor/
进入解压目录,加载镜像文件
[root@k8s-master-1 ~]# cd /harbor-2.1.1/harbor/ [root@k8s-master-1 harbor]# docker load -i harbor.v2.1.1.tar.gz 拷贝配置文件,如下: [root@k8s-master-1 harbor]# ll total 538832 -rw-r--r-- 1 root root 3361 Oct 23 11:57 common.sh -rw-r--r-- 1 root root 551729054 Oct 23 11:58 harbor.v2.1.1.tar.gz -rw-r--r-- 1 root root 8136 Oct 23 11:57 harbor.yml.tmpl -rwxr-xr-x 1 root root 2523 Oct 23 11:57 install.sh -rw-r--r-- 1 root root 11347 Oct 23 11:57 LICENSE -rwxr-xr-x 1 root root 1881 Oct 23 11:57 prepare [root@k8s-master-1 harbor]# cp harbor.yml.tmpl harbor.yml 编辑配置文件harbor.yml,主要修改以下几项: hostname = 1.68.5.94 https: port: 443 certificate: /data/cert private_key: /data/cart harbor_admin_password = Harbor12345 ###用户名密码 data_volume: /data ###数据存放路径
创建CA证书
mkdir -p /data/cert cd /data/cert
生成CA的key
cd /data/cert openssl genrsa -out ca.key 4096
生成 CA 的 crt
cd /data/cert
openssl req -x509 -new -nodes -sha512 -days 3650
-subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=1.68.5.94"
-key ca.key
-out ca.crt
生成自己ip的 key
cd /data/cert openssl genrsa -out 1.68.5.94.key 4096
生成自己ip的 csr
cd /data/cert
openssl req -sha512 -new
-subj "/C=CN/ST=Beijing/L=Beijing/O=chinatelecom/OU=ecloudcaas/CN=1.68.5.94"
-key 1.68.5.94.key
-out 1.68.5.94.csr
生成一个 openssl 命令需要的外部配置文件
主要是subjectAltName,这里写的IP.1=yourip还可以写DNS.1=yourdomainname cd /data/cert cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] IP=1.68.5.94 EOF
通过 ext 和 csr 生成 crt
cd /data/cert openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in 1.68.5.94.csr -out 1.68.5.94.crt
将服务端的 crt 转换成客户端用的 cert
cd /data/cert openssl x509 -inform PEM -in 1.68.5.94.crt -out 1.68.5.94.cert
将带IP的 cert,key 和 ca.crt 拷贝到 docker client 所在主机的 /etc/docker/certs.d/yourdomain/ 目录下
mkdir -p /etc/docker/cert.d/1.68.5.94 cp /data/cert/1.68.5.94.cert /etc/docker/cert.d/1.68.5.94/ cp /data/cert/1.68.5.94.key /etc/docker/cert.d/1.68.5.94/ cp /data/cert/ca.crt /etc/docker/cert.d/1.68.5.94/
本地docker添加信任,编辑vim /etc/docker/daemon.json,添加一下内容:
如果不添加信任,本地登录时会出现验证问题
{
"insecure-registries": [ "1.68.5.94" ]
}
重启docker,
systemctl daemon-reload
systemctl restart docker
开始安装
执行以下命令 [root@k8s-master-1 harbor]# ./prepare [root@k8s-master-1 harbor]# sh install.sh 之后会提示使用https://1.68.5.94登录



