告别重复操作:Harbor API批量管理镜像与项目实战指南

告别重复操作:Harbor API批量管理镜像与项目实战指南

【免费下载链接】harbor Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制 【免费下载链接】harbor 项目地址: https://gitcode.com/GitHub_Trending/ha/harbor

你是否还在手动点击界面管理上百个容器镜像?是否因项目权限配置繁琐而焦头烂额?本文将带你掌握Harbor API批量操作技巧,通过简单脚本实现项目创建、镜像清理、权限批量配置,让运维效率提升10倍。读完本文你将学会:

  • 使用API批量创建标准化项目
  • 一键清理过期镜像的自动化脚本
  • 项目成员权限的批量配置方法
  • 监控Harbor系统状态的实用工具

Harbor API概览

Harbor提供完整的RESTful API接口,所有Web界面操作均可通过API实现。API定义文件位于api/v2.0/swagger.yaml,包含认证、项目管理、镜像操作等10+类接口。服务路由配置在src/server/route.go中,核心API路径为/api/v2.0

认证方式支持Basic Auth和Token认证,生产环境建议使用Token认证:

# 获取认证Token
curl -u "admin:Harbor12345" "https://harbor.example.com/api/v2.0/users/login" -X POST -H "Content-Type: application/json"

批量项目管理

批量创建项目

通过API批量创建符合企业规范的项目,设置统一的可见性和存储配额:

import requests
import json

base_url = "https://harbor.example.com/api/v2.0"
auth = ("admin", "Harbor12345")
headers = {"Content-Type": "application/json"}

# 项目配置列表
projects = [
    {"name": "web-app", "public": False, "storage_limit": 50},
    {"name": "backend-service", "public": False, "storage_limit": 100},
    {"name": "tools", "public": True, "storage_limit": 20}
]

for project in projects:
    url = f"{base_url}/projects"
    data = {
        "project_name": project["name"],
        "public": project["public"],
        "metadata": {"storage_limit": f"{project['storage_limit']}GB"}
    }
    response = requests.post(url, auth=auth, headers=headers, data=json.dumps(data))
    if response.status_code == 201:
        print(f"项目 {project['name']} 创建成功")
    else:
        print(f"项目 {project['name']} 创建失败: {response.text}")

批量查询项目信息

使用列表接口配合分页参数获取所有项目详情:

# 获取所有项目(分页)
curl -u "admin:Harbor12345" "https://harbor.example.com/api/v2.0/projects?page=1&page_size=100"

项目元数据管理通过/projects/{project_name_or_id}/metadatas接口实现,支持设置存储配额、 vulnerability 扫描策略等。

镜像批量操作

清理过期镜像

结合标签过滤和删除接口,实现自动清理30天前的非生产标签镜像:

def delete_old_tags(project, repo, days=30):
    url = f"{base_url}/projects/{project}/repositories/{repo}/tags"
    params = {"page": 1, "page_size": 100}
    tags = requests.get(url, auth=auth, params=params).json()
    
    for tag in tags:
        create_time = datetime.fromisoformat(tag["created"].replace("Z", "+00:00"))
        if (datetime.now(timezone.utc) - create_time).days > days and "prod" not in tag["name"]:
            delete_url = f"{url}/{tag['name']}"
            requests.delete(delete_url, auth=auth)
            print(f"Deleted {project}/{repo}:{tag['name']}")

镜像复制任务管理

通过API创建跨数据中心的镜像复制任务,配置文件位于src/core/service/replication/:

// 创建复制规则请求体
{
  "name": "dr-replication",
  "description": "灾备复制规则",
  "source_registry": {
    "id": 1
  },
  "dest_registry": {
    "id": 2
  },
  "trigger": {
    "type": "manual"
  },
  "filters": [
    {
      "type": "name",
      "value": "web-app/*"
    }
  ]
}

权限批量配置

项目成员批量添加

通过/projects/{project_name_or_id}/members接口批量添加用户到项目:

def add_users_to_project(project_id, user_ids, role_id=3):
    """
    role_id: 1-项目管理员, 2-开发人员, 3-访客
    """
    url = f"{base_url}/projects/{project_id}/members"
    for user_id in user_ids:
        data = {
            "user_id": user_id,
            "role_id": role_id
        }
        requests.post(url, auth=auth, headers=headers, data=json.dumps(data))

LDAP用户批量导入

Harbor支持从LDAP服务批量导入用户,相关API定义在api/v2.0/swagger.yaml#L137-L169

# 批量导入LDAP用户
curl -u "admin:Harbor12345" -X POST "https://harbor.example.com/api/v2.0/ldap/users/import" \
  -H "Content-Type: application/json" \
  -d '{"uid_list": ["user1", "user2", "user3"]}'

监控与自动化

系统状态监控

通过/statistics接口获取Harbor运行状态:

# 获取系统统计信息
curl -u "admin:Harbor12345" "https://harbor.example.com/api/v2.0/statistics"

返回结果包含项目总数、镜像数量、存储使用等关键指标,可集成到Prometheus监控系统,监控告警规则配置位于contrib/grafana-dashboard/

API调用频率控制

为避免API请求过载,建议添加请求间隔控制:

import time

def rate_limited_request(url, method="get", **kwargs):
    response = requests.request(method, url, **kwargs)
    if response.status_code == 429:
        retry_after = int(response.headers.get("Retry-After", 10))
        time.sleep(retry_after)
        return rate_limited_request(url, method, **kwargs)
    return response

最佳实践与常见问题

批量操作安全策略

  1. 所有批量操作前先通过GET请求验证筛选结果
  2. 关键操作启用审计日志,配置文件位于src/core/service/audit/
  3. 使用低权限API账号,通过src/core/service/rbac/配置最小权限

性能优化建议

  • 大批量操作使用异步任务,通过src/jobservice/实现后台执行
  • 分页查询时合理设置page_size参数(建议50-100)
  • 避免在业务高峰期执行镜像清理等资源密集型操作

总结与后续学习

通过Harbor API可以实现从基础设施即代码到完整DevOps流程的闭环集成。建议进一步学习:

  • Harbor SDK开发:src/pkg/client/
  • 自定义Webhook开发:src/core/service/webhook/
  • 高级复制策略:src/core/service/replication/

立即尝试本文提供的脚本,体验批量管理带来的效率提升!收藏本文,关注后续《Harbor API与Kubernetes集成实战》。

提示:所有API调用前请先在测试环境验证,生产环境建议启用API请求日志,配置路径src/core/service/log/

【免费下载链接】harbor Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制 【免费下载链接】harbor 项目地址: https://gitcode.com/GitHub_Trending/ha/harbor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值