Harbor

136 阅读2分钟

Harbor

Harbor(私有仓库)是由 VMware 公司中国团队为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全。提升用户使用 Registry 构建和运行环境传输镜像的效率。Harbor 支持安装在多个 Registry 节点的镜像资源复制,镜像全部保存在私有 Registry 中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor 也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

配置HTTPS

# 生成的可视化Harbor界面只支持https所以需要自定义配置https
1、生成CA证书私钥
[root@localhost ~]# mkdir /opt/cert
[root@localhost ~]# cd /opt/cert
[root@localhost cert]# openssl genrsa -out ca.key 4096
​
2、生成CA证书
openssl req -x509 -new -nodes -sha512 -days 3650 \
>  -subj "/C=CN/ST=ShangHai/L=ShangHai/O=Oldboy/OU=Linux/CN=192.168.15.23" \
>  -key ca.key \
>  -out ca.crt  
​
3、生成服务器证书
[root@localhost cert]# openssl genrsa -out 192.168.15.23.key 4096
​
4、生辰证书签名请求
openssl req -sha512 -new \
    -subj "/C=CN/ST=ShangHai/L=ShangHai/O=Oldboy/OU=Linux/CN=192.168.15.101" \
    -key 192.168.15.23.key \
    -out 192.168.15.23.csr
    
5、生成一个x509 v3扩展文件
# 域名版
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
​
[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF# IP版
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:192.168.15.23
EOF
​
​
6、使用该v3.ext文件生成证书
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in 192.168.15.23.csr \
    -out 192.168.15.23.crt
    
7、提供证书给Harbor和Docker
openssl x509 -inform PEM -in 192.168.15.23.crt -out 192.168.15.23.cert
mkdir -pv /etc/docker/certs.d/192.168.15.23/
​
cp 192.168.15.23.cert /etc/docker/certs.d/192.168.15.23/
cp 192.168.15.23.key /etc/docker/certs.d/192.168.15.23/
cp ca.crt /etc/docker/certs.d/192.168.15.23/
​
# 如果nginx端口默认部署443和80
/etc/docker/certs.d/192.168.15.23:port
/etc/docker/certs.d/192.168.15.23:port
​
# 复制Harbor证书
mkdir -p /data/cert 
cp 192.168.15.23.crt  /data/cert
cp 192.168.15.23.key /data/cert
cd /data/cert
​
8、证书受信
在/etc/docker/daemon.json 中添加如下内容
{
  "insecure-registries": ["192.168.15.23"]
}
​
9、docker加载证书
systemctl restart docker
​

安装harbor

[root@localhost ~]# tar -xf harbor-offline-installer-v2.3.3.tgz  -C /usr/local/# 修改配置文件的证书地址和秘钥地址,修改网址地址
[root@localhost ~]# mv /usr/local/harbor/harbor.yml.tmpl /usr/local/harbor/harbo.yml
[root@localhost ~]# vim /usr/local/harbor/harbor.yml
hostname: 192.168.15.23
certificate: /data/cert/192.168.15.23.crt
private_key: /data/cert/192.168.15.23.key
​
# 安装并启动
[root@localhost harbor]# ./install.sh

其他docker主机免密

mkdir -pv /etc/docker/certs.d/192.168.15.23/
​
[root@localhost 192.168.15.23]# scp root@192.168.15.23:/opt/cert/192.168.15.23.cert /etc/docker/certs.d/192.168.15.23/
[root@localhost 192.168.15.23]# scp root@192.168.15.23:/opt/cert/192.168.15.23.key /etc/docker/certs.d/192.168.15.23/# 证书受信
在/etc/docker/daemon.json 中添加如下内容
{
  "insecure-registries": ["192.168.15.23"]
}
​
systemctl restart docker