企业级Devops— 打造完整 CICD 实践指南(五):Harbor企业级镜像仓库

📦 Harbor企业级镜像仓库:安全与高效的镜像管理

💻 机器B中安装

Harbor简介

Harbor是一个开源的 企业级Docker镜像仓库,旨在提供高效、安全的镜像管理服务,支持对Docker镜像的存储、管理、镜像版本控制、权限控制、审计日志等功能。Harbor是由VMware提供的,可以运行在 Kubernetes集群中,也可以自托管在其他平台上。它在Docker Hub的基础上,加入了企业级的安全性、权限管理、审计等功能。

Harbor的主要功能特点:

  • 高效的镜像管理:

    ✅ 支持Docker镜像的上传、下载和存储,方便管理多个镜像版本。 ✅ 支持多仓库、多项目管理,用户可以根据需要在不同项目和仓库中管理镜像。

  • 安全性和权限控制:

    🔑 用户管理:通过LDAP或内部身份验证,支持细粒度的访问控制。 🔒 角色管理:可以为不同的用户分配不同的角色和权限,确保安全。 🛡️ 镜像签名:Harbor集成了Notary,支持镜像签名和验证,确保镜像的安全性。

  • 镜像扫描:

    🕵️‍♂️ 集成了Clair安全扫描工具,可以自动扫描镜像中的漏洞,并给出修复建议。

  • 支持Helm Charts:

    📦 除了支持Docker镜像,Harbor还支持Helm Charts的存储和管理,适用于Kubernetes环境。

  • 多种存储后端支持:

    💾 Harbor支持多种后端存储选项,包括本地文件系统、NFS、S3 和其他分布式存储服务。

  • 高可用性(HA)支持:

    🔄 支持集群部署,可以配置多个Harbor实例,提高系统的可用性和负载均衡。

  • 审计日志:

    📝 审计日志功能可以记录所有操作,确保镜像的使用情况可以被追踪,符合企业安全要求。

  • 界面友好:

    👨‍💻 Harbor 提供了一个基于Web的用户界面,用户可以通过浏览器进行镜像管理、权限设置等操作。

Harbor 的主要组件

  1. 🧠 Core(核心服务) Core组件是Harbor的基础,它负责大部分的核心功能,包括用户管理、权限控制、任务调度等。所有其他组件都依赖于Core组件进行交互。
  • 用户管理:提供用户注册、登录、身份验证(支持LDAP集成)等功能。
  • 项目管理:用户可以在Harbor中创建多个项目,每个项目可以包含多个仓库。
  • 权限管理:提供不同角色的权限管理功能,支持细粒度的权限控制。
  1. 📦 Registry (镜像仓库) Registry是Harbor的核心存储组件,它用于存储Docker镜像。Registry组件是Harbor的镜像存储后端,支持对Docker镜像的CRUD(创建、读取、更新、删除)操作。
  • 支持多个仓库:

    一个Harbor实例可以包含多个镜像仓库(Repository),每个仓库中可以存储多个镜像版本。

  • 支持 Helm Charts:

    除了Docker镜像,Harbor 还支持Helm Charts的存储和管理,适用于Kubernetes环境。

  • 分层存储:Registry 采用分层存储,每个镜像由多个层组成,支持高效存储和下载。

  1. 🌐 UI (用户界面) UI 组件提供了一个友好的Web界面,用户可以通过浏览器访问并管理Harbor。
  • 镜像管理:用户可以通过UI查看、上传、下载镜像。
  • 用户和角色管理:通过UI可以管理用户、分配角色、设置权限。
  • 项目和仓库管理:用户可以创建、删除项目,管理仓库。
  • 安全扫描和审计日志:UI提供了镜像安全扫描和审计日志查看功能,帮助用户更好地管理镜像安全。
  1. ⚙️ Job Service (任务服务) Job Service组件负责处理异步任务,确保Harbor中的任务(如镜像扫描、数据迁移等)能够可靠地执行。
  • 任务调度:Job Service负责管理后台任务,例如镜像安全扫描、同步外部镜像仓库等。
  • 状态管理:Job Service会跟踪任务的状态,确保任务执行完毕,并在任务失败时发出警告。
  1. 🕵️‍♀️ Clair (镜像安全扫描) Clair 是一个用于扫描容器镜像中漏洞的工具。它集成在Harbor中,用于扫描镜像中的已知安全漏洞,帮助用户确保使用的镜像没有已知的安全风险。
  • 漏洞扫描:Clair会扫描镜像中的每个层,并将发现的漏洞与漏洞数据库对比,生成漏洞报告。
  • 报告查看:用户可以通过Harbor的UI查看镜像的安全报告,并根据报告中的建议采取措施。
  1. 📝 Notary (镜像签名) Notary是Harbor的另一个重要安全组件,主要用于为镜像添加数字签名,以确保镜像的来源和完整性。Notary集成了Docker Content Trust(DCT),它允许用户对镜像进行签名和验证,确保镜像在传输过程中没有被篡改。
  • 签名和验证:用户可以使用Notary对镜像进行签名,确保镜像的完整性和可信性。
  • 镜像的版本控制:支持多个镜像版本的签名,增强了对镜像版本的信任控制。
  1. 🔌 Portal (API 服务) Portal组件提供了Harbor的RESTful API接口,方便用户和第三方系统进行集成。通过 API,用户可以自动化管理Harbor的各种功能,如镜像上传、仓库创建、用户管理等。
  • RESTful API:提供完整的API文档,支持镜像管理、用户管理、权限控制等功能。
  • 集成与自动化:可以与CI/CD工具(如 Jenkins、GitLab)集成,实现自动化构建和部署。
  1. 📊 ChartMuseum (Helm Charts 存储) ChartMuseum是Harbor集成的Helm Charts存储系统,支持存储和管理Kubernetes中使用的Helm Charts。
  • Helm Charts存储:可以将Helm Charts上传到Harbor中,方便在Kubernetes中使用。
  • 版本管理:支持Helm Charts的版本管理,可以查看和回滚到特定版本的Chart。
  • 集成Kubernetes:Helm Charts存储功能与Kubernetes集成,简化了Helm Charts的管理和分发。
  1. ⚡ Redis (缓存和队列) Redis组件用于Harbor中的缓存和队列管理。它优化了Harbor的性能,减少了数据库的负载。
  • 缓存:缓存机制加快了数据访问速度。
  • 队列管理:处理异步任务队列,确保任务能够高效排队和执行。
  1. 🗄️ Database (数据库) 数据库 组件是Harbor存储所有配置信息、用户数据、镜像元数据等重要信息的地方。Harbor默认使用 PostgreSQL作为数据库。
  • 存储元数据:数据库存储镜像的元数据、用户信息、权限配置、项目等数据。
  • 高可用配置:数据库可以与Harbor配合配置为高可用环境,确保数据的持久性和可靠性。

Harbor安装

🔧 Harbor的安装可以通过Docker或Kubernetes两种方式进行。这里以Docker方式为例,演示如何在单机环境下搭建Harbor。

1. 系统要求

  • 操作系统:Linux 系统(如 Ubuntu、CentOS)

  • Docker:Harbor 依赖 Docker 来运行容器化应用,确保您的服务器上已安装 Docker 和 Docker Compose。

  • Docker Compose:用于编排多个Docker容器。

2. 安装 Docker 和 Docker Compose(如果尚未安装)

  • 安装Docker:参考前面的安装方法。

  • 安装Docker Compose:

bash 复制代码
sudo apt-get update
sudo apt-get install docker-compose
  • 检查安装是否成功✅:
bash 复制代码
docker --version
docker-compose --version

3. 安装 Harbor

可以从Harbor的GitHub或官方发布页面下载最新版本的Harbor。

  1. 下载Harbor安装包
bash 复制代码
# 进入您想下载 Harbor 的目录
wget https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz
  1. 解压安装包并进入目录

解压下载的文件:

bash 复制代码
tar xvf harbor-offline-installer-v2.11.2.tgz
cd harbor
  1. 配置Harbor

在 Harbor 解压后的目录中,有一个配置文件harbor.yml。需要根据实际情况修改配置文件中的一些参数。

编辑harbor.yml配置文件:

bash 复制代码
vim harbor.yml

常见的配置项:

  • hostname:设置Harbor的访问域名,建议使用静态IP或域名。
  • http / https 配置:如果需要HTTPS配置,可以设置证书和私钥路径;如果使用HTTP协议,则可以跳过。
bash 复制代码
hostname: <your-domain>
http:
  port: 9200
https:
  port: 443
  certificate: /etc/docker/certs.d/<your-domain>_public.crt
  private_key: /etc/docker/certs.d/<your-domain>.key
data_volume: /home/harbor/data
harbor_admin_password: xxx
jobservice:
  # Maximum number of job workers in job service
  max_job_workers: 10
notification:
  # Maximum retry count for webhook job
  webhook_job_max_retry: 10
log:
  # options are debug, info, warning, error, fatal
  level: info
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900

chart:
  # Change the value of absolute_url to enabled can enable absolute url in chart
  absolute_url: disabled

# Log configurations
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    # The directory on your host that store log
    location: /var/log/harbor

💡 强调, 这一步很重要:证书可以到云服务提供商创建一个,放到/etc/docker/certs.d下面;

数据库配置:如果使用外部数据库,可以修改相关配置。 保存文件并退出。

  1. 安装Harbor

在Harbor解压后的目录中,执行以下命令安装Harbor。

bash 复制代码
sudo ./install.sh

该命令会根据harbor.yml配置文件启动Docker容器,拉取相关镜像并启动Harbor服务。

  1. 启动Harbor

安装完成后,Harbor会自动启动。如果需要手动启动,可以运行:

bash 复制代码
sudo docker-compose up -d
  1. 停止Harbor

如果需要停止Harbor,使用以下命令:

bash 复制代码
sudo docker-compose down -v

Harbor使用

  1. 访问Harbor Web界面

打开浏览器,访问 https://<your-domain>(即配置文件中设置的hostname地址)。使用默认用户名 admin 和密码(harbor.yaml文件中填的密码)

  1. 设置用户和权限

登录后,可以在Web界面中创建新的用户、设置仓库权限等。

  1. 创建项目

创建develop项目,后面jenkins构建镜像时,会将构建产物上传到harbor develop中,然后Kubectl会从harbor develop中拉取镜像。

  1. Jenkins中添加Harbor凭证
相关推荐
Ikalus19881 天前
假成功有四种形状:给 AI 写自动化工具的自检清单
自动化运维
johnsmithCA1 天前
给搜索的法规条文做了个「版本核验」流程:怎么确认手上的条文还是现行有效版
人工智能·自动化运维
liangshanbo12152 天前
面试题:AI 对话上下文超限怎么办?
面试·webpack·devops
海海不掉头发5 天前
软件项目管理学习笔记-从软件危机到敏捷与DevOps
笔记·学习·devops
效率工作实验室5 天前
AI Agent 管理平台如何与现有 DevOps 和 ITSM 体系集成?
ai·agent·devops·集成·管理平台
极小狐5 天前
CI 作业里 kubectl 连不上集群?用 Kubernetes Agent 打通部署链路的 7 个步骤
ci/cd·kubernetes·gitlab·devops·k8s部署
天天喝旺仔5 天前
CI/CD 实战:GitHub Actions 自动化构建、测试与发布流水线
ci/cd·自动化·github·devops·持续集成
小稀土1235 天前
内网私有化部署 DevOps 软件落地指南:8 个坑、6 个步骤,一次讲清
devops
cakeism8255 天前
金融行业 DevOps 平台推荐:2026年主流方案对比与 Gitee 选型解析
金融·gitee·devops
智能运维指南6 天前
研发效能平台建设路径:从工具堆砌到价值流驱动的效能革命
devops·研发效能度量·嘉为蓝鲸·研发效能平台