网易云音乐最近开源了 Horizon[1] 应用部署平台,旨在为基于 Kubernetes 的云原生应用部署提供可靠、安全、高效的标准化方案。Horizon是一个基于 Kubernetes 的云原生持续部署平台,并且全面践行 GitOps。PlatForm Team可以自定义创建版本化的服务模板,为业务应用程序和中间件定义符合统一标准的部署和运维。Developer可以选择预先定义的模板,进行自动化的服务部署,确保基于Kubernetes的统一最佳实践。通过Horizon GitOps机制,确保任意变更(代码、配置、环境)持久化、可回滚、可审计。
Horizon 受 Argo CD 和 AWS Proton 的启发,并由网易云音乐、网易数帆等团队合作开发,现在 Horizon 已被大规模应用到了网易云音乐和网易传媒的实际生产环境中。
网易云音乐全面启动云原生、容器化的时间并不是非常早,大约在2020年,云原生的发展也是日新月异,诸多技术方案基于Cloud和Kubernetes都有被重新打造的潜力和趋势。当时我们关注到GitOps领域的发展,以及CICD领域的云原生的前沿进展,决定基于这些最新的理念和方案去打造一款能够中长期满足公司长远发展的CD平台。
目前该项目已经全面落地到网易云音乐,以及其他事业部。网易云音乐通过Horizon全面管理国内外7大机房,支持各种类型的业务,包括在线应用(Web服务)、Serverless(支持音视频)、实时计算、AI推理、中间件等的部署和运维。基于Horizon的日均构建和发布达到上千次,各类微服务集群8K+。全面高效支撑了云音乐实现云原生容器化的技术迭代和转型,并且有效地支持了公司降本增效目标的落地。
经过2年多来,协同业务不断地打磨、迭代,以及大规模业务落地实践,我们认为Horizon 在 GitOps 持续部署领域相比业界解决方案拥有优势。正好,网易集团也鼓励我们做创新做开源。所以此次,我们将Horizon正式全面开源,希望Horizon同样帮助更多同行和公司,创造更大的价值。当然我们希望社区和有兴趣的同仁能够参与到Horizon的开源建设,一起交流,一起学习,一起进步。
Horizon-Core 是 Horizon 平台的核心,Horizon-Core 是一个 Restful 服务器,为Web UI、CLI 等各种系统,提供了 OpenAPI 接口。它提供了丰富的功能,包括 Kubernetes 和环境管理,模板管理,私有令牌和访问令牌管理,组、应用程序和集群管理,CI/CD 流水线管理,Webhook 管理,用户和成员管理以及 IDP 管理。
Horizon 使用 Gitlab 存储应用程序所有配置,而 Argo CD 则是 Horizon 默认的 GitOps 引擎,用于将应用程序的配置文件(Kubernetes Manifest)从 Git 仓库渲染同步到 Kubernetes。
Horizon 使用云原生流水线 Tekton 作为默认的 CI 引擎,可以自动从源代码构建镜像。一旦流水线完成,Horizon 将流水线归档存储在 S3 存储中,兼容 Mino 和 AWS S3等服务。
为了监控平台的健康状况,Horizon 集成了 Grafana。如果配置了 Prometheus 源,Horizon 将自动探测指标并在指标仪表板上显示所有指标。
最后,Horizon 使用 MySQL 和 Redis 存储和缓存基本元信息,包括成员、用户、令牌、Webhook、IDP 等相关数据。
Argo CD 对于 Kubernetes 运维团队和熟悉 Kubernetes 的用户来说是一个很好的工具,实际上,Horizon 使用 Argo CD 作为默认的 GitOps 引擎。但是我们认为 Argo CD 对于广大的业务研发的全流程支撑并不是很友好。基于 Group、Member、RBAC 和 Template 等核心特性, Horizon 对于业务开发者更加友好。
产品功能 | Horizon | Argo CD |
---|---|---|
CI | 支持(待完善) | 不支持 |
CD | 支持 | 支持 |
GitOps | 支持 | 支持 |
Group | 支持 | 不支持 |
RBAC 与 Member | 支持 | 支持 |
Template | 支持 | 不支持 |
应用 | 支持自定义 | 支持自定义 |
我们认为 Horizon 和 Openshift 都想要解决同一个问题。两者都给予了用户在Kubernetes上构建、部署和运行应用的能力。但是 Horizon 与 Openshift 存在根本性的差异,Openshift 更像是 Kubernetes 的发行版,但是 Horizon 的目标是成为基于 Kubernetes 的持续交付平台。
产品功能 | Horizon | OpenShift |
---|---|---|
CI | 支持(待完善) | 支持 |
CD | 支持 | 支持 |
GitOps | 支持 | 支持 |
Group | 支持 | 支持 |
RBAC 与 Member | 支持 | 支持 |
Template | 支持 | 不支持 |
应用 | 支持自定义 | 丰富,支持各种预置中间件 |
和 Horizon 一样,KubeVela 通过 OAM 掩盖了 Kubernetes 的复杂性。但是 Horizon 和 KubeVela 的定位不同,KubeVela 是一个部署工具,而 Horizon 则是一个功能完善的平台,支持登录、RBAC、Group管理等功能。对于企业来说,这些功能都是不可或缺的。
产品功能 | Horizon | KubeVela |
---|---|---|
CI | 支持(待完善) | 不支持 |
CD | 支持 | 支持 |
GitOps | 支持 | 不支持 |
Group | 支持 | 支持 |
RBAC 与 Member | 支持 | 支持 |
Template | 支持 | 支持 |
应用 | 支持自定义 | 支持自定义 |
Horizon计划建设一个关于 GitOps 与 CD 的国际化社区,如果你对GitOps、云原生或者 CICD 感兴趣,请与我们联系,或者在 GitHub 上给我们一个 Star。
Github:https://github.com/horizoncd/horizon[3]
官网与文档:https://horizoncd.github.io/[4]
Slack:https://join.slack.com/t/horizoncd/shared_invite/zt-1pqpobiwn-1mgV60SIa1oi4mL1WXf7uA[5]
微信:
注:如果二维码过期,请前往 Horizon Github 仓库查看最新二维码
Horizon: https://github.com/horizoncd/horizon
[2]CRD: https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions
[3]https://github.com/horizoncd/horizon: https://github.com/horizoncd/horizon
[4]https://horizoncd.github.io/: https://horizoncd.github.io/
[5]https://join.slack.com/t/horizoncd/shared_invite/zt-1pqpobiwn-1mgV60SIa1oi4mL1WXf7uA: https://join.slack.com/t/horizoncd/shared_invite/zt-1pqpobiwn-1mgV60SIa1oi4mL1WXf7uA