最近有个需求是通过 Harbor API 获取 image 的最新 tag,来发送提醒进行更新,于是简单研究了一下 Harbor 的API 用法。
Harbor 是一个功能丰富、易用且安全的开源 Docker Registry 项目,专为企业级容器镜像管理而设计。

主要特性包括:

  • 安全与合规性:Harbor 提供安全扫描和漏洞管理功能,自动扫描镜像中的漏洞并生成详细报告。
  • 多租户支持:为每个项目提供独立的命名空间,支持自定义角色,实现多租户镜像管理。
  • 多镜像源:支持镜像在多个 Registry 之间的复制、备份和迁移。
  • 直观界面:提供易用的图形界面,支持镜像的推送、拉取、删除、日志查询和配置管理。
  • 垃圾回收:定期清理不再使用的镜像,释放存储空间。
  • 可扩展性:架构设计支持功能扩展和插件添加。

Harbor REST-API 的认证和用法

Harbor的 REST-API 提供了灵活的接口,下面是API认证及简单用法的介绍:

API认证

Harbor API 采用基于 HTTP 的认证,可使用 curl 命令直接提供用户名和密码进行请求,示例:

curl -X GET -u 'username:password' "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/projects"

可以通过 base64 算法加密用户名和密码,然后添加 Authorization 头进行认证:

curl -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/projects"

API 的使用方法

查看 Harbor 状态

可以通过/health API查看 Harbor 组件状态,示例:

curl -H 'Accept: application/json' "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/health"

列出全部 projects

curl -H "Accept: application/json" -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/projects"

列出某个 project 下的全部 repositories

curl -H "Accept: application/json" -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/projects/{PROJECT_NAME}/repositories"

列出某个 repo 下的 artifacts

curl -H "Accept: application/json" -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" "https://{HarborURL.OPSWILL.COM}:{PORT}/api/v2.0/projects/{PROJECT_NAME}/repositories/{REPO_NAME}/artifacts"

通过上述命令可获取镜像的详细信息,包括标签、漏洞情况、命令、环境变量、暴露端口等。

全部 Harbor REST-API

可通过 Swagger 查看和使用所有可用 API ,直接访问链接:
Harbor REST-API Swagger

总结

Harbor API 使用起来还是不难的,配合脚本使用很方便。闲着没事又水了一篇文章 :) 。