前面介绍了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登录