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