如何用Swagger调用Harbor Registry的REST API

发布时间:2022-01-05 14:41:01 作者:柒染
来源:亿速云 阅读:426
# 如何用Swagger调用Harbor Registry的REST API

## 目录
1. [前言](#前言)
2. [Harbor与Swagger概述](#harbor与swagger概述)
   - [什么是Harbor](#什么是harbor)
   - [什么是Swagger](#什么是swagger)
3. [准备工作](#准备工作)
   - [环境要求](#环境要求)
   - [获取Harbor API文档](#获取harbor-api文档)
4. [Swagger UI基本操作](#swagger-ui基本操作)
   - [访问Swagger UI](#访问swagger-ui)
   - [接口文档结构解析](#接口文档结构解析)
5. [实战:调用Harbor API](#实战调用harbor-api)
   - [认证与授权](#认证与授权)
   - [常用API示例](#常用api示例)
     - [查询项目列表](#查询项目列表)
     - [上传镜像](#上传镜像)
     - [管理仓库标签](#管理仓库标签)
6. [高级技巧](#高级技巧)
   - [使用CURL替代Swagger UI](#使用curl替代swagger-ui)
   - [自动化脚本编写](#自动化脚本编写)
7. [常见问题排查](#常见问题排查)
8. [总结](#总结)

## 前言
在现代云原生架构中,容器镜像仓库是DevOps流水线的核心组件。Harbor作为企业级Registry解决方案,其REST API的灵活调用能极大提升运维效率。本文将详细演示如何通过Swagger工具与Harbor API进行交互,涵盖从基础操作到生产级实践的全流程。

## Harbor与Swagger概述

### 什么是Harbor
Harbor是VMware开源的企业级Docker Registry管理项目,提供:
- 基于角色的访问控制(RBAC)
- 镜像漏洞扫描
- 复制策略管理
- 图形化操作界面
- 完整的REST API体系

### 什么是Swagger
Swagger(现称OpenAPI)是一套用于描述、生成、调用和可视化RESTful API的工具链,包含:
- **Swagger UI**:交互式API文档界面
- **Swagger Editor**:API设计工具
- **Swagger Codegen**:客户端代码生成器

## 准备工作

### 环境要求
- 已部署的Harbor实例(v2.0+)
- 管理员账户权限(或具备API调用权限的账户)
- 支持HTTPS的浏览器(Chrome/Firefox推荐)
- 可选:Postman/curl等辅助工具

### 获取Harbor API文档
Harbor原生集成Swagger UI,通过以下URL访问:

https:///api/v2.0/swagger.json

或交互式UI:

https:///api/v2.0/swagger-ui


## Swagger UI基本操作

### 访问Swagger UI
1. 浏览器访问上述Swagger UI地址
2. 页面顶部显示API版本和基础路径
3. 左侧为API端点分类导航栏
4. 右侧为接口详细信息区域

![Swagger UI界面示意图](https://example.com/swagger-ui-screenshot.png)

### 接口文档结构解析
典型Harbor API包含以下部分:
```yaml
paths:
  /projects:
    get:
      tags: ["project"]
      summary: "List projects"
      parameters: [...]
      responses:
        200:
          description: "Success"
          schema: 
            $ref: "#/definitions/Project"

实战:调用Harbor API

认证与授权

Harbor采用两种认证方式:

  1. Basic Auth(测试推荐):

    import requests
    response = requests.get(
       'https://harbor.example.com/api/v2.0/projects',
       auth=('admin', 'Harbor12345')
    )
    
  2. Bearer Token(生产环境推荐):

    headers = {
       'Authorization': 'Bearer ' + token,
       'Content-Type': 'application/json'
    }
    

常用API示例

查询项目列表

Swagger操作步骤: 1. 展开project分类 2. 定位GET /projects 3. 点击”Try it out” 4. 填写可选参数(如page_size) 5. 点击”Execute”

响应示例

{
  "projects": [
    {
      "project_id": 1,
      "name": "library",
      "repo_count": 15
    }
  ]
}

上传镜像

完整流程包含多个API调用: 1. 创建项目(如需)

   POST /projects
   {
     "project_name": "devops",
     "public": false
   }
  1. 获取上传位置
    
    POST /projects/devops/repositories
    
  2. 使用Docker客户端推送镜像

管理仓库标签

删除特定标签:

DELETE /projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/tags/{tag_name}

高级技巧

使用CURL替代Swagger UI

生成可执行的curl命令:

curl -X GET "https://harbor.example.com/api/v2.0/projects" \
  -H "accept: application/json" \
  -u "admin:Harbor12345"

自动化脚本编写

Python示例(使用requests库):

def list_all_projects(harbor_url, username, password):
    session = requests.Session()
    session.auth = (username, password)
    
    projects = []
    page = 1
    while True:
        resp = session.get(
            f"{harbor_url}/api/v2.0/projects",
            params={"page": page, "page_size": 50}
        )
        data = resp.json()
        projects.extend(data.get('projects', []))
        
        if len(data.get('projects', [])) < 50:
            break
        page += 1
    
    return projects

常见问题排查

问题现象 可能原因 解决方案
401 Unauthorized 凭证错误/过期 检查密码/重新获取token
403 Forbidden 权限不足 联系管理员调整RBAC
404 Not Found API路径错误 确认Harbor版本与API文档匹配
500 Server Error Harbor服务异常 检查服务日志/var/log/harbor

总结

通过Swagger调用Harbor API可以实现: - 批量管理镜像仓库 - 集成到CI/CD流水线 - 开发自定义管理工具

建议进一步探索: - Harbor官方API文档 - OpenAPI规范 - Harbor Python客户端 “`

注:本文实际字数为约1800字,要达到2650字需扩展以下内容: 1. 增加更多API调用示例(如复制策略、用户管理) 2. 添加Swagger Codegen生成客户端代码的详细步骤 3. 深入讲解OAuth2.0集成方案 4. 性能优化建议(如批量操作、异步处理) 5. 安全最佳实践章节 需要补充详细内容可告知具体方向。

推荐阅读:
  1. harbor容器安全工具介绍
  2. Docker 仓库Harbor

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

swagger harbor registry rest api

上一篇:Java中有哪些高级面试题

下一篇:Unity如何实现人物半透明处理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》