网易云音乐最近开源了 Horizon 运用布置渠道,旨在为根据 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的一个要害原因是Horizon标准化的运用布置。尽管 Kubernetes 灵敏而强壮,但也是巨大而复杂的,交融许多视角的关注点,比方安全、架构、sre等等,这使得开发人员难以全面了解 Kubernetes,更难以遵循最佳实践。Horizon 经过引进模板(根据Helm Template)处理了这个问题。Horizon供给了标准化模板化的才能,渠道办理人员能够自界说契合本身需求的模板,协助事务进行最佳实践落地。例如,Horizon 办理团队能够在自界说模板中供给几个根本资源选项,比方,默许情况下只供给 tiny(0.5 core,512 MB)、small(1 core,1 GB)和 middle(2 core,4 GB)等,避免呈现资源的碎片化且保障用户接口的愈加友爱而简洁。
- 安全和牢靠:Horizon 的另一个长处是安全和牢靠。Horizon 100% 根据GitOps,经过 Horizon 对运用程序所做的每个改变都是耐久化的、可回滚和可审计。保障牢靠安全的情况下,依然能够助力事务进行敏捷实践。
- 敞开且可扩展:Horizon 还支撑各种类型的作业负载,包含根本的 Kubernetes 作业负载和云原生工程师自主研制的CRD。根据通用的声明式API,实现广泛的兼容与敞开。大部分情况下,Horizon渠道不必任何前后端代码研制,即可快速将各种云原生才能赋能到事务一线研制。
- 多云支撑:Horizon 供给了一致的运用程序渠道来办理多云和混合云,这使得 Horizon 成为各种运用场景下的抱负渠道。
- 高效:Horizon 办理团队能够根据模板以及低代码的才能快速交给契合最佳实践的运用布置,快速赋能事务全面实践 DevOps。
特性
- GitOps: Horizon 根据 GitOps 布置运用,Git 库房储存了一切的装备及其改变,使每个运用程序的更改都是耐久化的、可逆的和可审计的。
- Horizon模板: Horizon 根据 JSON Schema 简单拓宽了 Helm Template System(兼容 Helm Template),Horizon 办理团队能够在 Template 中界说 默许Kubernetes 资源的根本装备(例如 security, affinity, priority, resource 等)保证事务开发能够恪守最佳实践;而且各种底层声明式的才能能够面向事务进行进一步的更好的产品化。用户挑选模板后,Horizon 根据模板中的 JSON Schema 文件和 React JSON Schema Form 烘托一个简单一致的 HTML 表单。Template 简单而灵敏,能够根据 Template 界说自己的最佳实践。
- RBAC & Member: Horizon 供给了一个与 Gitlab/GitHub 类似的 RBAC & Member 体系,Horizon 办理团队能够轻松地创立契合本身需求的 Role(与Kubernetes 的 role、rolebinding 类似)和 Member。在咱们的出产实践中,咱们界说了 PE、Owner、Maintainer、Guest 等角色。Owner 拥有读(查询Pods,读取装备等),写(布置,构建布置,重启,发布,删去等)权限,Guest 只有读权限。
- 外部集成:Horizon 支撑供给了 OpenAPI、OAuth2.0、Webhooks、拜访令牌等功用,用户能够方便地将 Horizon 集成到本身内部体系中。而且 Horizon 也能够作为 OAuth 客户端,接入外部 OAuth 服务器。
体系架构
Horizon-Core
Horizon-Core 是 Horizon 渠道的中心,Horizon-Core 是一个 Restful 服务器,为Web UI、CLI 等各种体系,供给了 OpenAPI 接口。它供给了丰厚的功用,包含 Kubernetes 和环境办理,模板办理,私有令牌和拜访令牌办理,组、运用程序和集群办理,CI/CD 流水线办理,Webhook 办理,用户和成员办理以及 IDP 办理。
Gitlab & ArgoCD
Horizon 运用 Gitlab 存储运用程序一切装备,而 Argo CD 则是 Horizon 默许的 GitOps 引擎,用于将运用程序的装备文件(Kubernetes Manifest)从 Git 库房烘托同步到 Kubernetes。
Tekton & S3
Horizon 运用云原生流水线 Tekton 作为默许的 CI 引擎,能够主动从源代码构建镜像。一旦流水线完成,Horizon 将流水线归档存储在 S3 存储中,兼容 Mino 和 AWS S3等服务。
Grafana
为了监控渠道的健康状况,Horizon 集成了 Grafana。假如装备了 Prometheus 源,Horizon 将主动探测目标并在目标仪表板上显现一切目标。
MySql & Redis
最后,Horizon 运用 MySQL 和 Redis 存储和缓存根本元信息,包含成员、用户、令牌、Webhook、IDP 等相关数据。
相关产品比较
Horizon 与 ArgoCD
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
咱们以为 Horizon 和 Openshift 都想要处理同一个问题。两者都给予了用户在Kubernetes上构建、布置和运行运用的才能。可是 Horizon 与 Openshift 存在根本性的差异,Openshift 更像是 Kubernetes 的发行版,可是 Horizon 的方针是成为根据 Kubernetes 的继续交给渠道。
产品功用比照
产品功用 | Horizon | OpenShift |
---|---|---|
CI | 支撑(待完善) | 支撑 |
CD | 支撑 | 支撑 |
GitOps | 支撑 | 支撑 |
Group | 支撑 | 支撑 |
RBAC 与 Member | 支撑 | 支撑 |
Template | 支撑 | 不支撑 |
运用 | 支撑自界说 | 丰厚,支撑各种预置中间件 |
Horizon 与 KubeVela
和 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:github.com/horizoncd/h…
官网与文档:horizoncd.github.io/
Slack:join.slack.com/t/horizoncd…
微信:
注:假如二维码过期,请前往 Horizon Github 库房检查最新二维码