harbor各组件功能介绍及龙芯适配工作

选择harbor作为镜像存储仓库的原因
1、Harbor的安全机制,对用户权限进行详细划分
2、Harbor的镜像同步,实现多仓库之间的同步
3、Harbor可与K8s集成支持高可用

registery、dockerhub、harbor使用指南
https://www.cnblogs.com/edisonchou/p/docker_registry_repository_setup_introduction.html

1.harbor启动后服务名称:

root@long-pc:/home/long/harbor# docker-compose ps
Name Command State Ports

harbor-core /harbor/entrypoint.sh Up (health: starting)
harbor-db /docker-entrypoint.sh Up (health: starting)
harbor-jobservice /harbor/entrypoint.sh Up (health: starting)
harbor-log /bin/sh -c /usr/local/bin/ … Up (health: starting) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (health: starting)
nginx nginx -g daemon off; Up (health: starting) 0.0.0.0:80->8080/tcp
redis redis-server /etc/redis.conf Up (health: starting)
registry /home/harbor/entrypoint.sh Up (health: starting)
registryctl /home/harbor/start.sh Up (health: starting)

2.harbor启动后涉及到的镜像

harbor-registryctl:v2.1.0 docker distribution的控制组件,提供API以便触发垃圾回收动作
harbor-portal:v2.1.0 前端应用,对应的portal容器中有nginx服务,获取图标等信息
registry-photon:v2.1.0 镜像存储相关的服务
harbor-jobservice:v2.1.0 Harbor中镜像扫描、远程仓库复制都是以job的形式启动一个服务,定时执行一些任务,提供API供外部提交任务及查询执行结果
nginx-photon:v2.1.0 nginx服务,向docker client及浏览器暴露端口,将这些客户端发来的请求反向代理到后端Core Services、Registry
redis-photon: v2.1.0 redis服务,用于registry缓存
harbor-core:v2.1.0 主要由多个http服务组成,完成的功能主要有以下几点:
监听Registry上镜像的变化,做相应处理,比如记录日志、发起复制等
充当Docker Authorization Service的角色,对镜像资源进行基于角色的鉴权
连接Database,提供存取projects、users、roles、replication policies和images元数据的API接口
提供UI界面
harbor-db:v2.1.0
harbor-log:v2.1.0 用于存储harbor相关日志
prepare:v2.1.0 用来存放harbor启动过程中需要的一些配置文件

3、核心功能
在这里插入图片描述
存储、管理artifact
3.1、访问控制
访客:可拉取artifact,可以查看项目中其他资源
受限访客:只能拉取artifact,对项目中其他资源如日志等没有读权限
3.2、镜像签名
使用组件:notary
3.3、镜像扫描
涉及组件:trivy、clair
3.4、高级管理功能
artifact复制、存储配额管理、垃圾回收
注意垃圾回收时整个harbor进入只读状态
4、组件介绍
4.1、整体架构
代理层、功能层、数据层
4.2、核心组件
4.2.1、核心组件-功能层
portal:前端应用,对应的portal容器中有nginx服务,获取图标等信息
core:harbor核心组件,封装harbor主要业务逻辑(权限检查、配额检查等)
docker distribution:镜像仓库,实现镜像读写功能
registryCtl:docker distribution的控制组件,提供API以便触发垃圾回收动作
Jobservice:异步组件,负责比较耗时的任务,如复制、扫描、垃圾回收等,后台任务列表
4.2.2、核心组件-数据层
redis:缓存服务器,用于存储生命周期较短的数据,例如镜像扫描工具clair、trivy、chartmuseum等以redis作为缓存,存储临时数据
postgreSQL:保存harbor的应用数据,比如项目信息、用户与项目之间关系、配置信息 等,Artifact的元数据,例如类型、大小、tag等信息也保存在postgreSQL
Artifact存储:镜像存储的目的地,默认安装情况下会写入本地文件系统,用户可以进行更改,将第三方存储作为后端来存储Artifact
4.3、可选组件
4.3.1、可选组件-功能层notary:镜像签名(notary-server、notary-signer)
chartmuseum:helm仓库服务
4.3.2、可选组件-扫描工具
clair:漏洞扫描工具
trivy:漏洞扫描工具
golang-migreate 数据库迁移工具

https://www.youendless.com/post/harbor_base/

龙芯使用harbor案例
2019年龙芯云计算团队成立,最初环境仓库不够健全,使用dockerhub进行镜像托管,但是镜像拉取受网速影响较大,严重影响正常工作效率,2020年7月为解决下载速度问题,龙芯决定适配私有仓库harbor,8月docker宣布对部分国家禁止使用,此时龙芯平台harbor最小闭环组建已适配完毕,已满足基镜像托管需求,团队内部快速相应将全部镜像迁移至内部私有仓库harbor。起初只是供内部员工使用,在对基本功能进行反复测试之后,龙芯已将仓库开放给合作方及龙芯爱好者使用,同时团队内部不断完善harbor相关的周边组件如(notary、chartmuseum、clair、trivy、dragonfly)。另外对部分比较核心的功能组建进行源码测试(如docker distribution,其余组件因时间关系暂未展开)

要求建议问题
1、建议增加页面修改仓库名称功能,方便管理员可视化操作
2、建议增加索引隐藏功能,或者优先显示镜像名称
3、垃圾回收时harbor会进入只读状态,建议可以分项目进入只读状态,见效推送和删除artifact失败风险
4、没有免密访问的场景

为适配harbor做的工作
1、完成harbor2.1.0依赖关系梳理
2、完成photon:2.0镜像适配,完成最小闭环,适配软件包410个
3、适配harbor2.1.0相关镜像17个,依赖基础镜像17个
4、完成photon基本功能测试
5、完成harbor基本功能测试、输出源码测试大纲(暂未投入源码测试)
6、完成了docker distribution源码测试,通过率与x86平齐
7、其余组建暂未展开测试

猜你喜欢

转载自blog.csdn.net/qq_25650463/article/details/114001596