Harbor仓库搭建及配置https方式登录

2021-01-04 12:31

阅读:627

标签:ons   war   企业   复制   sig   sign   day   ssl   gen   

1、Harbor镜像仓库介绍

随着容器技术的不断发展,越来越多的企业开始使用docker容器及K8S部署应用,那在容器化部署应用过程中,一个很重要的流程就是生成项目镜像,最后通过镜像部署应用,容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署私有环境内的Registry也是非常必要的。目前使用较广泛的如Harbor,Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

2、 Harbor安装部署

harbor官方地址:https://goharbor.io/
Harbor的所有服务组件都是在Docker中部署的,官方安装使用Docker-compose快速部署,所以需要安装Docker、Docker-compose。由于Harbor是基于Docker Registry V2版本,所以就要求Docker版本不小于1.10.0,Docker-compose版本不小于1.6.0。
所以在安装harbor前,需要先安装docker及docker-compose,这里harbor采用离线安装方式。
1.安装docker
安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
添加docker源,这里采用阿里的,国内的下载比较快
cd /etc//yum.repos.d/ && wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce –y
配置docker加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh|sh -s http://bc437cce.m.daocloud.io
Docker默认连接的国外官方镜像,通常根据网络情况不同,访问时快时慢,大多时候获取速度非常慢,为了提高效率可以自建仓库或者先修改为国内仓库源,提升拉取镜像的速度。
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://pee6w651.mirror.aliyuncs.com"]
}
修改为阿里云的
2.安装Docker-Compose快速编排工具
yum install epel-release –y
yum install python-pip –y
pip install --upgrade pip
pip install docker-compose
以上安装完后可以安装harbor
3.harbor网站下载离线安装包并进行解压配置
https://github.com/goharbor/harbor/releases 从github中下载需要的版本
本次安装的是最新发行版。
wget https://github.com/goharbor/harbor/releases/download/v2.0.2/harbor-offline-installer-v2.0.2.tgz
解压后目录中有配置文件及安装脚本,harbor1版本中配置文件为harbor.cfg,在harbor v2中配置文件有所改变,变成了yml文件。
本次下载的2.0.2版本解压后配置文件为harbor.yml.tmpl,将其改为harbor.yml。
配置文件中可以配置主机名,登陆harbor网站的用户名和密码,如果配置https,需要在配置文件中配置证书路径。
设置完后就可以执行脚本安装。

3、Harbor配置本地自签证书,实现https登陆

默认情况harbor是用http登陆的,在生产环境中为了安全,采用https登陆,下面是根据harbor官方指导创建证书。
要配置 https,必须创建 ssl 证书。可以使用由受信任的第三方 ca 签名的证书,也可以使用自签名证书。本节描述如何使用 openssl 创建 ca,以及如何使用 ca 签署服务器证书和客户端证书。主机名已my-cloud,域名已tuwei1314.cn为例,下面是将创建证书命令整理成脚本方式。
#!/bin/bash
openssl genrsa -out ca.key 4096

openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=tuwei1314.cn.com" -key ca.key -out ca.crt

openssl genrsa -out tuwei1314.cn.com.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=tuwei1314.cn.com" -key tuwei1314.cn.com.key -out tuwei1314.cn.com.csr

cat > v3.ext authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=tuwei1314.cn.com
DNS.2=tuwei1314.cn
DNS.3=my-cloud
EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in tuwei1314.cn.com.csr -out tuwei1314.cn.com.crt
mkdir -p /data/cert
cp tuwei1314.cn.com.crt /data/cert/
cp tuwei1314.cn.com.key /data/cert/
openssl x509 -inform PEM -in tuwei1314.cn.com.crt -out tuwei1314.cn.com.cert
mkdir -p /etc/docker/certs.d/tuwei1314.cn.com/

cp tuwei1314.cn.com.cert /etc/docker/certs.d/tuwei1314.cn.com/
cp tuwei1314.cn.com.key /etc/docker/certs.d/tuwei1314.cn.com/
cp ca.crt /etc/docker/certs.d/tuwei1314.cn.com/

创建完后重启docker服务,然后在harbor配置文件中配置主机名为上面的域名,证书路径为上面创建的路径。
certificate: /data/cert/tuwei1314.cn.com.crt
private_key: /data/cert/tuwei1314.cn.com.key
至此本地自签证书就完成了,如果是内部域名,可以加到host文件中进行访问。
如果购买了CA证书,可以直接进行配置,安装harbor后,实际上是运行了很多容器,其中有nginx容器,可以对nginx配置SSL,查看nginx配置文件中SSL配置路径及配置证书名称,然后将CA证书下载到服务器,通过docker cp 命令将证书文件复制到docker容器对应目录,通过root用户进入容器,修改文件属组为nginx,然后重启harbor服务,这样登陆网站就不会提示证书不受信任。

Harbor仓库搭建及配置https方式登录

标签:ons   war   企业   复制   sig   sign   day   ssl   gen   

原文地址:https://blog.51cto.com/tuwei/2529024


评论


亲,登录后才可以留言!