YAZONG 我的开源

Kubernetes(六)(迁移Kubernetes前准备)(6.1)Harbor入门

  , , ,
0 评论0 浏览

#接着从第五章集群服务器使用。

#Harbor的更多介绍这里不再过多阐述。下述只是简单的描述。

集群准备好之后,下一步,开始迁移业务,服务进行docker,用K8S管理起来。

迁移之前准备工作:首先服务docker化之后会有很多的镜像,需要一个地方去管理镜像,包括镜像的存储、拉取等,需要一个docker的registry,但是镜像的服务就不能用阿里的仓库了,

速度慢、安全性,那么需要一个私有的仓库,

首先想到的是docker原生的registry。

image.png

docker原生的registry问题,功能比较简单,就一个镜像存储和拉取的基本功能,没有相应的UI,主要的问题就是过于简单。

还有一个方案是业界开源的,叫做harbor,是vmvare开源的docker仓库,功能比较全,还有UI方便维护,是一个很好的选择。

这里选择habor作为仓库的选择。

image.png

image.png

Harbor是一个开源的、可信任的、云原生的registry仓库,用来存储、签名和扫描content(这里应该指镜像)。

Harbor扩展了开源的二进制版本,添加了一些被用户所需要的功能,比如安全、实名认证和管理。

使仓库更加的接近构建运行的环境,可以提高镜像的传输的效率。

Harbor提供复制,在各个registry中间提供复制,提供了安全的高级特性,比如用户的管理、访问的控制和活动的审计。

Harbor已经托管在了CNCF。

image.png

特性:

云原生仓库:支持container以容器的方式来运行,用来支持helm(K8S内部用于软件管理的项目),harbor作为镜像仓库是以云原生的方式提供镜像服务的,比如container运行时和orchestration这种平台。

基于角色的访问控制:用户和仓库可以以项目的方式组织起来,用户在不同的项目下面可以有不同的权限。

基于策略的镜像的复制:镜像可以在多个仓库实例之间进行复制,可以有很多策略过滤(仓库、tag、label)。仓库可以自动的重试,当遇到错误的时候。在多个实例之间可以有高可用、负载均衡、多数据中心等等。

漏洞扫描:harbor可以定期的去扫描镜像,如果有漏洞的话,可以给我们发送警告。

支持AD用户的配置:

镜像的删除和辣鸡的回收:

Notary:可以确保镜像的真实和正确性。

用户的图形界面的接口:UI操作

审计:。

RESTFUL API:支持其他系统通过API跟Harbor进行交互。

易部署:提供线上和线下两种方式

可访问harbor的官方测试控制台查看:”https://demo.goharbor.io/,admin/Harbor12345”

image.png

image.png

image.png

"https://github.com/goharbor/harbor/releases?page=18"

推荐离线安全方式。下载所有的文件都在一个包中,速度比较快。

在安装前要考虑的问题,要安装的是高可用的版本。

在网上查,大家给出的是相对比较复杂的方案,看前面那个架构图,网上是把这个架构给拆开了。

Harbor给出的本身方案是一个docker compose,把所有的镜像都放在一起,依赖关系等都规划好了,执行一条命令就可以把它们都跑起来。

复杂的高可用方案是把它们都拆开,比如registry、database、都是公用的,一个高可用的数据库+高可用的共享存储,这都是事先在自己的环境中搭建准备的工作,还要对harbor本身的yaml配置做一些修改,包括数据库的也需要修改,才可能搭建这样一个环境。

这个搭建的过程和成本都很高。

但harbor通过helm的方式在K8S中的安装也需要共享存储之类的东西,并且把它运行在了K8S的内部。

中小公司,没必要搞的这么复杂,直接原生的docker compose去运行,运行多个实例也同样可以达到高可用的效果,也非常简单,毕竟harbor是镜像的仓库,保护这个仓库,高可用最重要的一点是不能让镜像丢掉,这是必须要保证的这件事。还有就是,镜像在推送和拉取的时候,要高可用,并不是说特别在意几秒或几分钟之内不能用的这种情况,如果出了问题,我们可以在分钟级的恢复,它是不影响业务的,因为它并不是对外/用户提供服务的一种服务,对工程师来说,在服务升级和上线的时候,可能会去推送和拉取。

通过上述种种的一种原因,中小公司还是比较多,相对采用简单、而且高可用的,harbor的双主复制。

image.png

Harbor-A和Harbor-B会互相同步复制到对方。这叫双主复制。

上面挂nginx,做负载均衡,nginx可以请求到Harbor-A和Harbor-B,不管哪个点挂掉,镜像在两个点都有的,可以保证数据的安全,挂掉一个点之后,还有一个节点可以使用。

Harbor-A和Harbor-B都是可以通过Harbor原生的安装的方式去进行安装的,非常简单,当一台机器彻底坏掉之后,也可以在另外一台机器去搭建同样的环境,能够非常快的复制这个环境。

当然这个nginx的负载均衡、流量分发,也可以使用hadproxy做一个四层代理。


标题:Kubernetes(六)(迁移Kubernetes前准备)(6.1)Harbor入门
作者:yazong
地址:https://blog.llyweb.com/articles/2022/11/10/1668009815128.html