企业级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支持多种后端存储选项,包括本地文件系统、NFSS3 和其他分布式存储服务。

  • 高可用性(HA)支持

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

  • 审计日志

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

  • 界面友好

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

Harbor 的主要组件

  1. 🧠 Core(核心服务) Core组件是Harbor的基础,它负责大部分的核心功能,包括用户管理、权限控制、任务调度等。所有其他组件都依赖于Core组件进行交互。
  • 用户管理:提供用户注册、登录、身份验证(支持LDAP集成)等功能。
  • 项目管理:用户可以在Harbor中创建多个项目,每个项目可以包含多个仓库。
  • 权限管理:提供不同角色的权限管理功能,支持细粒度的权限控制。
  1. 📦 Registry (镜像仓库) RegistryHarbor的核心存储组件,它用于存储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会扫描镜像中的每个层,并将发现的漏洞与漏洞数据库对比,生成漏洞报告。
  • 报告查看:用户可以通过HarborUI查看镜像的安全报告,并根据报告中的建议采取措施。
  1. 📝 Notary (镜像签名) NotaryHarbor的另一个重要安全组件,主要用于为镜像添加数字签名,以确保镜像的来源和完整性。Notary集成了Docker Content Trust(DCT),它允许用户对镜像进行签名和验证,确保镜像在传输过程中没有被篡改。
  • 签名和验证:用户可以使用Notary对镜像进行签名,确保镜像的完整性和可信性。
  • 镜像的版本控制:支持多个镜像版本的签名,增强了对镜像版本的信任控制。
  1. 🔌 Portal (API 服务) Portal组件提供了HarborRESTful API接口,方便用户和第三方系统进行集成。通过 API,用户可以自动化管理Harbor的各种功能,如镜像上传、仓库创建、用户管理等。
  • RESTful API:提供完整的API文档,支持镜像管理、用户管理、权限控制等功能。
  • 集成与自动化:可以与CI/CD工具(如 JenkinsGitLab)集成,实现自动化构建和部署。
  1. 📊 ChartMuseum (Helm Charts 存储) ChartMuseumHarbor集成的Helm Charts存储系统,支持存储和管理Kubernetes中使用的Helm Charts
  • Helm Charts存储:可以将Helm Charts上传到Harbor中,方便在Kubernetes中使用。
  • 版本管理:支持Helm Charts的版本管理,可以查看和回滚到特定版本的Chart
  • 集成KubernetesHelm Charts存储功能与Kubernetes集成,简化了Helm Charts的管理和分发。
  1. ⚡ Redis (缓存和队列) Redis组件用于Harbor中的缓存和队列管理。它优化了Harbor的性能,减少了数据库的负载。
  • 缓存:缓存机制加快了数据访问速度。
  • 队列管理:处理异步任务队列,确保任务能够高效排队和执行。
  1. 🗄️ Database (数据库) 数据库 组件是Harbor存储所有配置信息、用户数据、镜像元数据等重要信息的地方。Harbor默认使用 PostgreSQL作为数据库。
  • 存储元数据:数据库存储镜像的元数据、用户信息、权限配置、项目等数据。
  • 高可用配置:数据库可以与Harbor配合配置为高可用环境,确保数据的持久性和可靠性。

Harbor安装

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

1. 系统要求

  • 操作系统:Linux 系统(如 UbuntuCentOS

  • DockerHarbor 依赖 Docker 来运行容器化应用,确保您的服务器上已安装 DockerDocker 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

可以从HarborGitHub或官方发布页面下载最新版本的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凭证
相关推荐
易样2 小时前
企业级Devops— 打造完整 CICD 实践指南(六):Kubernetes集群搭建
自动化运维·devops
易样2 小时前
企业级Devops— 打造完整 CICD 实践指南(十一):Rancher可视化管理
自动化运维·devops
易样2 小时前
企业级Devops— 打造完整 CICD 实践指南(四):Gitlab代码仓库搭建
自动化运维·devops
易样2 小时前
企业级Devops— 打造完整 CICD 实践指南(三):Jenkins搭建
自动化运维·devops
易样2 小时前
企业级Devops— 打造完整 CICD 实践指南(一):手册核心内容亮点
devops
易样2 小时前
企业级DevOps——打造完整CICD实践指南(二):环境准备
自动化运维·devops
数聚天成DeepSData13 小时前
数聚天成 DeepSData 数据价值落地实战指南
java·maven·devops
热爱运维的小七1 天前
算力下沉时代,如何攻克“边缘”与“雾”计算的监控难题?
it运维·devops·服务器监控
薛少杰1 天前
什么是阿里云 CLI
自动化运维·命令行工具·插件化架构·阿里云cli·生态协作