讲师中心 微信公众号
AI工具推荐 视频效率加速

怎么在CI/CD流水线中部署开源网关Harbor并基于API实现镜像全生命周期的自动化管理

星雪吖_7686

星雪吖_7686

发布时间:2026-06-09 10:31:46

|

477人浏览过

|

来源于php中文网

原创

Harbor需预置部署并深度集成CI/CD,通过API实现项目创建、镜像推送、漏洞扫描、跨环境同步与自动清理等全生命周期自动化管理,同时强化HTTPS、权限隔离与限流告警等安全稳定性设计。

怎么在ci/cd流水线中部署开源网关harbor并基于api实现镜像全生命周期的自动化管理

在CI/CD流水线中部署Harbor并实现镜像全生命周期自动化管理,核心在于“环境可复现”和“操作可编程”。Harbor不是单纯部署完就结束的组件,而是要深度嵌入GitOps或CI/CD流程中——从项目创建、镜像推送、漏洞扫描、复制分发到清理归档,全部通过API驱动。

一、Harbor部署需适配CI/CD运行时环境

不建议在CI流水线中动态安装Harbor(耗时且不可靠),而应采用预置+配置即代码的方式:

  • 使用Docker Compose或Helm Chart统一定义Harbor服务拓扑,所有参数(如域名、证书路径、数据库连接)通过环境变量注入
  • 在Jenkins或GitLab Runner所在节点提前拉取Harbor离线包或镜像,确保无外网依赖
  • 通过harbor.yml模板 + sed/yq工具动态替换配置项,再执行install.sh完成轻量级部署
  • 部署后调用GET /api/v2.0/systeminfo验证API服务就绪,作为流水线下一步的准入检查

二、用API接管镜像全生命周期关键节点

Harbor v2.0+ API覆盖镜像从入库到下线的完整链路,无需登录Web控制台。以下为高频自动化场景对应接口:

  • 项目准备:调用POST /api/v2.0/projects按需创建私有项目,设置public=false与cve_whitelist策略
  • 凭证安全注入:创建机器人账户(POST /api/v2.0/projects/{project_id}/robots),仅授予pull/push权限,返回的token直接用于docker login --username=robot$xxx --password=xxx
  • 构建后自动推送:Jenkins/GitLab CI脚本中,在docker build完成后执行docker push harbor.example.com/project/app:git-tag,触发Harbor内置扫描器
  • 质量门禁拦截:推送后立即调用GET /api/v2.0/projects/{pid}/repositories/{repo}/artifacts/{tag}/scan/log轮询扫描结果;若发现CRITICAL级别CVE,返回非零状态码中断流水线
  • 跨环境同步:通过POST /api/v2.0/replication/policies创建事件驱动型复制规则,源为dev/project/app,目标为prod/project/app,标签匹配release-*
  • 镜像自动清理:定时任务调用GET /api/v2.0/projects/{pid}/repositories/{repo}/artifacts获取历史镜像,结合last_updated字段筛选过期镜像,再用DELETE /api/v2.0/projects/{pid}/repositories/{repo}/artifacts/{digest}批量删除

三、安全与稳定性必须前置设计

自动化意味着放大的风险面,以下三点不能妥协:

  • 所有API请求强制启用HTTPS,校验Harbor服务端证书;客户端JWT Token有效期设为2小时,由CI系统定期刷新
  • 为不同环境(dev/staging/prod)分配独立机器人账户,禁止跨项目写权限;审计日志中所有机器人操作标记为robot@xxx,便于溯源
  • 大镜像复制时启用带宽限流(Harbor配置replication.bandwidth_quota),避免压垮CI网络出口;关键复制任务配置失败重试+钉钉/企业微信告警

四、与主流CI工具链的典型集成方式

不同平台接入方式略有差异,但底层逻辑一致:

  • GitLab CI:将Harbor机器人Token存为Project CI Variables(masked & protected),在.gitlab-ci.yml中用before_script完成登录与环境准备
  • Jenkins:使用Credentials Plugin存储机器人账号,Pipeline脚本中通过withCredentials安全注入,避免密码明文出现在日志中
  • Argo CD/GitOps:将Harbor项目配置、复制规则等声明为YAML资源,通过harbor-operator(社区CRD)同步到集群,实现真正的Git驱动管理

热门AI工具

更多
Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

相关专题

更多
Java 单元测试
Java 单元测试

本专题聚焦 Java 在软件测试与持续集成流程中的实战应用,系统讲解 JUnit 单元测试框架、Mock 数据、集成测试、代码覆盖率分析、Maven 测试配置、CI/CD 流水线搭建(Jenkins、GitHub Actions)等关键内容。通过实战案例(如企业级项目自动化测试、持续交付流程搭建),帮助学习者掌握 Java 项目质量保障与自动化交付的完整体系。

1166

2025.10.24

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

506

2025.12.13

Figma AI自动化智能数据填充与交互生成实战
Figma AI自动化智能数据填充与交互生成实战

告别机械重复,详细演示如何用 AI 填充业务真实数据,并自动为页面添加交互连线,将静态设计稿快速转变为动态原型。

345

2026.05.13

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

40

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

160

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

140

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

120

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

80

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn