目录

Harbor系列-03-企业化部署的提升

概述

一般在使用 Harbor 上,大部分场景就是部署一个 Harbor 然后就上线了,运维一定时间之后,就会遇到各种问题,下面就这些问题,针对通过 Helm 部署在 Kubernetes 集群的的 Harbor,简单介绍一下场景和建议。

事件中心接入事件

Harbor 部署在 Kubernetes 中,那么所有的组件包括数据库,Redis,Registry 这些组件都是以 Pod 的方式运行的,下面是组件的清单:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# k get pods
NAME                                        READY   STATUS    RESTARTS   AGE
harbor-chartmuseum-6d8c569d78-dgdpr         1/1     Running   0          7d14h
harbor-core-cf7b8dddc-mcpxz                 1/1     Running   0          11d
harbor-database-0                           1/1     Running   0          7d14h
harbor-database-exporter-546cc57689-6wts2   1/1     Running   0          22d
harbor-exporter-5ddf5d9cf4-78spw            1/1     Running   1          22d
harbor-jobservice-677ff54ccb-grlpz          1/1     Running   0          7d16h
harbor-notary-server-59c4bf75c7-lbfn9       1/1     Running   25         11d
harbor-notary-signer-74d4d49bd8-rjpsp       1/1     Running   0          22d
harbor-portal-5466f7479f-6hdkf              1/1     Running   0          22d
harbor-portal-5466f7479f-hdpwc              1/1     Running   0          22d
harbor-redis-0                              1/1     Running   0          11d
harbor-redis-exporter-5f8b8c6468-dcj7r      1/1     Running   0          22d
harbor-registry-7df594dd8c-rlj6t            2/2     Running   0          7d14h

既然这么多组件,那么随便挂一个 Pod 或者重启有问题,都需要即时可以发现的,所以这里的建议是将 Kubernetes 的事件,尤其是告警级别的事件采集出来,通过公司内部的告警通道发送到负责人,这样才能及时发现 Harbor 的问题,迅速做出反应。

LDAP支持

Harbor 提供的 UI 的访问能力,在公司内的用户肯定不会少,针对开发或者其他角色的人员,不能每来一个人申请,就手动创建一个账户,即使通过接口来创建,后续也会面临很多关于用户方面的维护问题,因此这里建议公司内的 Harbor 可以通过接入 LDAP,并且同步接入公司的 OA 等人员、架构的信息。

基础镜像预热

Harbor 虽然是部署在 Kubernetes 上,理论上已经提供了相当不错的高可用的能力了,但是为了防止 Harbor 意外崩溃,导致无法拉取一些关键镜像,比如说 Harbor 崩溃了,但是 Harbor 部署的时候需要从 Harbor 拉取镜像这样的「鸡生蛋,蛋生鸡」的问题,因此一些业务、组件重要的基础镜像,需要有一个机制来预热到 Kubernetes 中的工作节点。

公网镜像同步

这里主要是指一些国内无法拉取的镜像的场景,不如 gcr.io 这些镜像仓库,需要一些机制来同步到公司内部,这里不管是通过代理还是其他方法,都是需要考虑实现的,否则公司内部在拉取这些镜像的时候就会非常麻烦,影响开发迭代的速度。

项目功能对接和启用

Harbor 中的镜像仓库是有项目概念的,需要利用好,项目内还会针对用户可以提供一些细粒度的权限管理的机制。

仓库密码管理

针对一些项目维度的镜像,可以通过分发一些机器人账号密码来提供给 Kubernetes 集群使用,这里面可以通过写一个后台的服务,给业务或者用户来去获取。

警告
本文最后更新于 2022年2月26日,文中内容可能已过时,请谨慎参考。