Harbor 不同模块作用以及持久化数据大小建议

搭建环境

  • 使用 NFS 作为持久化存储
  • 使用 Helmk8s 上进行搭建

在使用 Helm 安装 Harbor 并配置持久化存储时,不同组件的持久化需求会有所不同。以下是各个组件的持久化需求和建议的存储大小配置。

1. Harbor 组件

1.1 Registry (Harbor Registry)

  • 作用:存储镜像和镜像相关的元数据。
  • 存储需求:此部分通常是 Harbor 中最占用存储的部分,取决于你存储的镜像数量和镜像大小。
  • 建议大小:建议配置至少 100Gi500Gi,具体大小根据你的镜像存储需求进行调整。

1.2 Database (PostgreSQL)

  • 作用:存储 Harbor 的元数据,如用户信息、项目信息、镜像信息等。
  • 存储需求:数据库的存储需求相对较小,但会随着用户数量、项目数量和镜像数量的增加而增加。
  • 建议大小:建议配置 20Gi50Gi,具体大小根据你的使用情况进行调整。

1.3 Jobservice

  • 作用:处理后台任务,例如镜像扫描和垃圾回收。
  • 存储需求:主要存储任务的中间数据和日志,存储需求相对较小。
  • 建议大小:建议配置 10Gi20Gi

1.4 Chartmuseum

  • 作用:存储 Helm Chart
  • 存储需求:取决于你存储的 Chart 数量和大小,通常不会很大。
  • 建议大小:建议配置 5Gi20Gi

1.5 Redis

  • 作用:用于缓存和会话管理。
  • 存储需求:存储需求相对较小,主要用于缓存数据。
  • 建议大小:建议配置 5Gi10Gi

1.6 Trivy

  • 作用:存储安全扫描的数据库。
  • 存储需求:取决于你执行扫描的频率和范围。
  • 建议大小:建议配置 5Gi20Gi

2. 示例 values.yaml

以下是一个示例的 values.yaml 文件,配置了各个组件的持久化存储大小。下面的值是当时搭建时规划确定的值,请根据实际情况修改即可。

因为用的是 NFS 文件存储,而非块存储系统,所以存储空间是按需分配的。实际使用时才会占用空间,尽管 PV 已经创建,也方便后续的调整。

persistence:
  enabled: true
  persistentVolumeClaim:
    registry:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 500Gi  # 根据需要调整
    jobservice:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 20Gi
    database:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 50Gi
    chartmuseum:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 20Gi
    redis:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 10Gi
    trivy:
      storageClass: "your-storage-class"
      accessMode: ReadWriteOnce
      size: 20Gi

helm 命令执行文件执行:

# 安装
helm install harbor -f prod-helm-harbor.yaml  harbor/harbor -n harbor

# 更新
helm upgrade harbor -f prod-helm-harbor.yaml  harbor/harbor -n harbor

3. 总结

根据实际的使用情况评估,一般把常用的镜像源放到 Harbor 里面,毕竟(in ChinaDocker 官方的不能访问了。

服务器少的情况下弄个代理,或者找个第三方源临时用还是不错的;当服务器多的情况下,每个服务器都用代理不是很现实,这个时候使用自建的镜像源还是很方便的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注