文档章节

VMware Harbor组件原理分析

China_OS
 China_OS
发布于 2018/07/05 17:56
字数 1181
阅读 279
收藏 1

Harbor

    harbor是vmware开源的企业级registry,可以让你迅速的搭建自己的私有registry,harbor扩展的docker的registry,使harbor支持以下特性:

  • RBAC 基于角色的权限控制
  • 基于策略的镜像复制
  • 漏扫
  • LDAP/AD支持
  • 镜像删除和垃圾清理
  • Notary 镜像签名
  • 用户界面
  • 审计
  • RESTful api
  • 安装简单(基于compose)

组件

    今天只聊聊harbor的架构,harbor主要有6大模块,默认的每个harbor的组件都被封装成一个docker container,所以可以通过compose来部署harbor,总共分为8个容器运行,通过docker-compose ps来查看

    简易架构图

harbor-adminserver   /harbor/start.sh                 Up (healthy)                                                                   
harbor-db            /usr/local/bin/docker-entr ...   Up (healthy)   3306/tcp                                                        
harbor-jobservice    /harbor/start.sh                 Up                                                                             
harbor-log           /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp                                       
harbor-ui            /harbor/start.sh                 Up (healthy)                                                                   
nginx                nginx -g daemon off;             Up (healthy)   0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
redis                docker-entrypoint.sh redis ...   Up             6379/tcp                                                        
registry             /entrypoint.sh serve /etc/ ...   Up (healthy)   5000/tcp        
  1. harbor-adminserver:harbor系统管理接口,可以修改系统配置以及获取系统信息
  2. harbor-db:存储项目的元数据、用户、规则、复制策略等信息
  3. harbor-jobservice:harbor里面主要是为了镜像仓库之前同步使用的
  4. harbor-log:收集其他harbor的日志信息。rsyslogd
  5. harbor-ui:一个用户界面模块,用来管理registry。主要是前端的页面和后端CURD的接口
  6. nginx:harbor的一个反向代理组件,代理registry、ui、token等服务。这个代理会转发harbor web和docker client的各种请求到后端服务上。是个nginx。nginx负责流量转发和安全验证,对外提供的流量都是从nginx中转,它将流量分发到后端的ui和正在docker镜像存储的docker registry
  7. registry:存储docker images的服务,并且提供pull/push服务。harbor需要对image的访问进行访问控制,当client每次进行pull、push的时候,registry都需要client去token服务获取一个可用的token。
  8. redis:存储缓存信息
  9. webhook:当registry中的image状态发生变化的时候去记录更新日志、复制等操作。
    token service:在docker client进行pull/push的时候今天token的发放。

harbor-login

a  nginx代理在80端口收到client发来的请求,然后把该请求转发到后端的registry。

b  registry收到请求,因为registry是配置的token-based的认证,所以会直接返回一个401状态码,然后返回一个url,通知client去哪里获取token,也就是token service

c  当docker client收到这个url后,会对这个url发起请求,需要在请求头中植入用户名和密码。

d  当请求到达nginx反向代理后,nginx会把该请求转发至ui服务上,因为ui符合token服务在一个容器里面,token服务会解码请求头中用户名和密码

e  拿到用户名和密码后会和db中的进行对比,如果验证无误,则返回成功,在返回的http请求中包含一个私有key

 

harbor-push

省略了proxy转发这一步
当你登录harbor成功后,docker push就可以使用了。

a  docker client和registry交互,获取到token service的url
b  随后docker client和token service交互,告诉token需要进行push操作
c  token服务查看db,该用户是否有相关的权限来push image,如果有相关权限,则返回一个私有的key
d  docker client拿到token后,会对registry发起push请求,当registry收到请求后,会用自己的公钥解密token,如果验证token是合格的,则开始image传输过程 

 

附加

    clair

        是 coreos 开源的容器漏洞扫描工具,在容器逐渐普及的今天,容器镜像安全问题日益严重。clair 是目前少数的开源安全扫描工具,主要提供OS(centos,debian,ubuntu等)的软件包脆弱性扫描。clair的可以单机部署也可以部署到k8s上,可以与现有的registry集成。harbor 很好的整合了 clair ,通过简单的UI就可以对上传的镜像扫描,还可以通过每天的定时扫描对所有镜像进行统一扫描,架构如下:

    Notary
        是一套docker镜像的签名工具, 用来保证镜像在pull,push和传输工程中的一致性和完整性。避免中间人攻击,避免非法的镜像更新和运行。

 

© 著作权归作者所有

共有 人打赏支持
下一篇: Harbor配置详解
China_OS
粉丝 421
博文 460
码字总数 513906
作品 0
静安
技术主管
私信 提问
企业级容器Registry开源项目Harbor架构简介

企业级容器Registry开源项目Harbor架构简介 作者:姜坦 张海宁 (本文作者为Harbor项目组核心成员,于2016年9月5日作了更新。) 1. Harbor项目 VMware公司最近开源了企业级Registry项目Harbo...

project_harbor
2016/03/31
3K
4
开源Registry项目Harbor源代码结构解析

上周我们介绍了Harbor开源企业级容器Registry的架构,获得了社区很多朋友的反馈和建议,再次一并感谢,希望和大家一起,共同建设一个优秀的开源项目。本文请Harbor项目工程师尹文开介绍源码结...

project_harbor
2016/04/11
105
0
Harbor 开源镜像仓库成为 CNCF 托管项目

云原生计算基金会(CNCF)今天宣布接纳云原生Harbor开源镜像仓库项目作为CNCF托管的沙箱项目(Sandbox),对Harbor项目来说是里程碑式的事件。Harbor用于容器镜像管理,主要提供基于角色的镜...

oschina
2018/08/01
1K
4
Harbor开源镜像仓库成为CNCF托管项目

云原生计算基金会(CNCF)今天宣布接纳 Harbor 开源镜像仓库项目作为 CNCF托管的沙箱项目(Sandbox),对 Harbor 项目来说是里程碑式的事件。Harbor用于容器镜像管理,主要提供基于角色的镜像...

亨利笔记
2018/08/01
0
0
构建docker高可用私有仓库基于Harbor开源系统

操作系统及相关软件版本说明: 测试服务器IP地址: IP 1 = 192.168.85.158,简称A仓库 IP 2 = 192.168.85.157,简称B仓库 一、Harbor项目介绍 1、Harbor来源 VMware公司最近开源了企业级Reg...

msj0905
2018/06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux shell使用代理

export http_proxy=http://proxyAddress:port export http_proxy=http://proxyAddress:port

萌萌哒的小萝卜
6分钟前
0
0
Krpano 插入视频/音频

视频 <hotspot name="videospot" url="%SWFPATH%/plugins/videoplayer.swf" alturl="%SWFPATH%/plugins/videoplayer.js" videourl="%SWFPATH%/image/video.flv|%SWFPATH%/......

华山猛男
9分钟前
0
0
el-select使用方法及遇到数据回显的坑

<el-select v-model="temp.lang" class="filter-item" placeholder="Please select"> <el-option v-for="item in langs" :key="item.value" :label="item.label" :value="item.value"/> </el......

BraveLN
10分钟前
0
0
百度贴吧自动签到

实现百度贴吧自动签到功能 1.编写签到Python脚本 2.服务器配置定时任务执行签到脚本

MrPei
15分钟前
0
0
windows nginx

之前一直是在linux上使用nginx,今天百度了一下,发现原来nginx在windows也有软件。 最近在研究jeecg-boot,现在越来越多的框架开始采用前后分离的模式了,看来也是时候跟进了。 nginx: dow...

miaojiangmin
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部