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

  • Post author:
  • Post category:其他


选择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、其余组建暂未展开测试



版权声明:本文为qq_25650463原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。