当前位置: 首页 > 工具软件 > Harbor > 使用案例 >

harbor的搭建

翁良弼
2023-12-01

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

5、我们需要build自己的docker image 
      vi dev/docker-compose.yml  修改要build的文件。要注意build的文件的env_file路径,有些文件是在common下面的
6、在dev文件夹下运行 docker-compose up,自动build出我们自定义的image,docker images查看
7、把这些images上传到dockerhub或者其他的registry中,以便kubenetes创建pod的时候下载image

     
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
9、启动 
kubectl create -f make/kubernetes





 类似资料: