Harbor应用案例:品高云企业级DevOps实战

2021-03-15 17:05:17 浏览数 (1)

Harbor 在国内外已经有很多落地案例,本文介绍 Harbor 项目合作伙伴品高云的 DevOps 案例,节选自《Harbor权威指南》一书。

品高云是广州市品高软件股份有限公司开发的云操作系统,DevOps 容器服务是品高云面向云原生应用的云服务功能,使用了 Kubernetes 和 Harbor 分别作为容器编排和镜像仓库,可面向企业级用户提供微服务开发、交付、运维等平台支撑能力。

经过数年的发展,品高云使用 Harbor 构建了 ECR(私有容器仓库)服务,实现企业账号管理镜像库,支持镜像推送和拉取、安全扫描、跨区复制,对接 EKS(弹性 Kubernetes 服务)和持续交付流程,实现了 Kubernetes 应用编排和镜像的统一管理,在央企、公安等多个大型项目中得到应用。品高云的 DevOps 容器服务架构如下图所示。

1.使用 Harbor 解决复杂应用的编排和交付

对于大型政企客户来说,其应用一般是由大量服务模块组成的。当这些应用被改造为微服务架构进行部署时,最具挑战的就是保障模块间彼此的依赖关系,并实现业务的持续交付能力。在使用容器架构交付时,还需要涉及持久化存储、集群高可用和绑定负载均衡等一系列方案。

为此,品高云使用了 Helm 实现对应用的统一配置和管理,并在 ECR 服务中引入了 Harbor 的 Helm Charts 管理功能,让平台像管理镜像一样管理应用的 Helm 编排包。开发者可使用品高云的 DevOps 服务,通过可视化与动态方式进行应用编排设计,在后续部署应用时,Kubernetes 集群能够自动从 Harbor 中下载编排包(如下图所示),这解耦了应用编排与集群关系,提升了灵活性;上层开发者也可以更直观地维护和管理应用交付,降低了DevOps 的应用门槛。

2.使用 Harbor 管理应用跨环境部署

在实际应用环境下,由于大型用户对业务稳定可靠及双模IT的架构需求,往往会有多种运行环境,如开发、测试、生产和互联网区等。开发者虽然可以利用品高云的 DevOps 服务创建交付流水线,自动编译源代码和打包、构建 Docker 镜像,并最终将其推送至各种运行环境的 ECR 仓库中,但也面临多套环境下不同镜像版本管理、重复打包和资源浪费等挑战。

为此,品高云引入了 Harbor 的镜像同步功能,在开发人员将镜像和 Helm 编排包推送到一个环境后,会自动根据开发、测试规范定时触发在相应环境下的同步,同时针对高安全环境的合规要求,在 DevOps 平台上显式控制和触发 Harbor 的复制策略,将镜像和 Helm 编排包同步推送到生产环境下,如图所示。

3.使用 Harbor 的多云协作

品高云在容器使用和运维过程中,针对大型政企客户多环境、多地理位置服务交付的支撑需要,逐步形成了基于 Harbor 的多云协作架构,如图所示。

在多云协作架构下,品高云的 DevOps 服务被部署在主云上,各个云通过对接企业统一认证实现对用户的统一管理,并对其他从云的 EKS 和 ECR 进行纳管。DevOps 服务通过流水线实现了对应用的持续集成和持续交付,管理应用从代码编译到部署的整个生命周期。

在具体的应用支撑过程中,开发者在 DevOps 服务中配置好代码仓库源之后交付时,DevOps 服务会自动从指定的代码仓库中拉取应用代码,然后对代码进行编译,将编译好的程序构建成 Docker 镜像推送到主云的 Harbor 镜像仓库中。主云会按照复制策略自动增量地将镜像推送到纳管的其他云的 Harbor 镜像仓库,接着 DevOps 服务根据用户定义的 Helm Charts 编排,将应用部署到EKS集群中。

出于应用灾备或应用多活的目的,将应用部署到其他云环境时,DevOps 服务能够管理多个环境的配置,根据用户指定的云环境,向对应的 EKS 集群下发应用部署的任务。集群在收到任务后,就近访问同一云环境的 Harbor 来下载 Docker 镜像和 Helm 编排包。Kubernetes 集群对 Harbor 的就近访问,能够缩短应用的部署启动时间,减少应用从主云拉取镜像的带宽。

在整个过程中,Harbor 都充当着重要的角色,Docker 镜像在被推送到 Harbor 后会触发 Harbor 的漏洞扫描功能,用户可以在 DevOps 上看到镜像的漏洞扫描结果,也可以基于项目设置同步策略,将需要在从云中用到的 Docker 镜像和 Helm 编排同步到从云的 Harbor 中。在 Harbor 中存在无用镜像时,还可以触发 Harbor 的垃圾回收,清理无用镜像占用的存储空间。


0 人点赞