搭建环境
- 使用
NFS
作为持久化存储 - 使用
Helm
在k8s
上进行搭建
在使用 Helm
安装 Harbor
并配置持久化存储时,不同组件的持久化需求会有所不同。以下是各个组件的持久化需求和建议的存储大小配置。
1. Harbor 组件
1.1 Registry (Harbor Registry)
- 作用:存储镜像和镜像相关的元数据。
- 存储需求:此部分通常是
Harbor
中最占用存储的部分,取决于你存储的镜像数量和镜像大小。 - 建议大小:建议配置至少
100Gi
到500Gi
,具体大小根据你的镜像存储需求进行调整。
1.2 Database (PostgreSQL)
- 作用:存储
Harbor
的元数据,如用户信息、项目信息、镜像信息等。 - 存储需求:数据库的存储需求相对较小,但会随着用户数量、项目数量和镜像数量的增加而增加。
- 建议大小:建议配置
20Gi
到50Gi
,具体大小根据你的使用情况进行调整。
1.3 Jobservice
- 作用:处理后台任务,例如镜像扫描和垃圾回收。
- 存储需求:主要存储任务的中间数据和日志,存储需求相对较小。
- 建议大小:建议配置
10Gi
到20Gi
。
1.4 Chartmuseum
- 作用:存储
Helm Chart
。 - 存储需求:取决于你存储的 Chart 数量和大小,通常不会很大。
- 建议大小:建议配置
5Gi
到20Gi
。
1.5 Redis
- 作用:用于缓存和会话管理。
- 存储需求:存储需求相对较小,主要用于缓存数据。
- 建议大小:建议配置
5Gi
到10Gi
。
1.6 Trivy
- 作用:存储安全扫描的数据库。
- 存储需求:取决于你执行扫描的频率和范围。
- 建议大小:建议配置
5Gi
到20Gi
。
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 China
)Docker
官方的不能访问了。
服务器少的情况下弄个代理,或者找个第三方源临时用还是不错的;当服务器多的情况下,每个服务器都用代理不是很现实,这个时候使用自建的镜像源还是很方便的。