harbor是VMware推出的企业级docker registry平台。搭建方式分为2种,一种是下载安装包直接搭建,另一种是下载源码编译(用于kubernetes),这样可以自定义一些个性化配置。
运行环境:
1、必须有python环境
2、harbor是用docker-compose运行的,所以要安装docker-compose,docker版本要在10以上才能安装docker-compose
下载安装包搭建
https://github.com/vmware/harbor/releases
下载harbor-offline-installer-0.5.0.tgz
解压安装。
然后编辑harbor.cfg配置文件,编辑完成后运行./install.sh 这个文件会读取harbor.cfg文件,然后自动生成各个模块所需要的配置文件
一共有6个模块
proxy 是nginx的代理
ui 是harbor的web界面
registry docker的registry
db 一个mysql数据库,用于ui存储数据
log 日志模块
job_service 用于颁发token
主要配置:
hostname:nginx中的servername,用于nginx过滤用的
ui_url_protocol: 用http 还是 https
Email settings:用户修改密码时候,email发送者的设置。如果不需要修改密码等服务,可以不设置
harbor_admin_password:ui 管理员密码,默认用户名:admin,密码:Harbor12345
auth_mode:认证模式----数据库认证还是ldap认证 db_auth or ldap_auth
self_registration:是否运行用户自己注册
use_compressed_js:是否压缩js,生产环境设为on,开发环境设为off
max_job_workers:
secret_key:加密解密复制策略中远程registry的密码,长度16位,在生产环境改变这个值
token_expiration: token的有效期,默认30分钟
verify_remote_cert:与远程registry通信时,是否需要解析ssl加密的证书。设置off用于远程registry是不被信任的,或者自认证的
customize_crt: 设为on,用于prepare脚本创建配置文件时,创建私有key和根证书,用于创建、校验远程registry的token
crt_country等用于生成私有key,根证书。当harbor访问registry的时候,需要一个token,这个 token需要到token service去申请,token service返回一个数字签名(用私钥加密)的token,然后用这个token去访问registry,regsitry用根证书绑定的公钥解密。验证通过,docker客户端就可以push了。
配置完成后 运行 ./install.sh
输入http://你的ip或者域名 访问ui
docker login ip or domain 登录registry
docker push
如果出现验证问题,要在docker的启动选项里加入(for ubuntu: vi /etc/default/docker) DOCKER_OPTS="--insecure-registry 你的ip或者域名"
然后重启docker服务 systemctl restart docker
重新修改harbor配置文件方法:
1、docker-compose down
2、修改harbor.cfg
3、./install.sh
重新配置端口号:
1、停掉服务 docker-compose down
2、修改docker-compose.yml
proxy:
image: library/nginx:1.11.5
restart: always
volumes:
- ./config/nginx:/etc/nginx
ports:
- 8000:80
- 443:443
depends_on:
- mysql
- registry
- ui
- log
logging:
driver: "syslog"
options:
syslog-address: "tcp://127.0.0.1:1514"
tag: "proxy"
3、修改templates/registry/config.yml的8000为端口号
realm: $ui_url:8000/service/token
4、./install.sh
日志
查看本机 /var/log/harbor
HTTPS搭建
上述是用http搭建的,在每个docker的客户端都要加上insecure-registry的参数,不太方便。可以利用https搭建。想用https必须有一个公网的域名,如果没有可以申请一个。
利用Letencrypt 获取证书,参考http://blog.csdn.net/qq_26299837/article/details/53505917
1、先停止docker-compose down
2、配置harbor.cfg
2-1、ui_url_protocol=https
2-2、ssl_cert=你的cert
2-3、ssl_cert_key=你的key
3、install.sh
kubernetes搭建harbor
1、下载源码:https://github.com/vmware/harbor.git
2、cd make 这个文件夹是我们自己编译的主文件夹,以下操作都在这个文件夹下进行。
3、编辑harbor.cfg
4、运行 ./prepare 生成配置文件,生成的配置文件在common/config下面,是根据common/template文件夹为模板生成的。kubernetes文件夹下有dockerfile,以及各个rc,svc的基础yaml
cd make
docker build -f kubernetes/dockerfiles/proxy-dockerfile -t {your_account}/proxy .
docker build -f kubernetes/dockerfiles/registry-dockerfile -t {your_account}/registry .
docker tag 你build出来的ui {your_account}/deploy_ui .
docker tag 你build出来的mysql {your_account}/deploy_mysql
docker push {your_account}/proxy
docker push {your_account}/registry
docker push {your_account}/deploy_ui
docker push {your_account}/deploy_mysql
8、修改kubernetes下的 每个*-rc.yaml的image属性,使之指向刚才上传到dockerhub上的image
make/kubernetes/mysql-rc.yaml make/kubernetes/proxy-rc.yaml make/kubernetes/registry-rc.yaml make/kubernetes/ui-rc.yaml
kubectl create -f make/kubernetes