乐趣区

关于云原生:网易云音乐全面开源一款云原生应用部署平台Horizon

网易云音乐最近开源了 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 的开源建设,一起交换,一起学习,一起提高。

劣势与个性

劣势

  1. 标准化部署 :抉择 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)等,防止出现资源的碎片化且保障用户接口的更加敌对而简洁。
  2. 平安和牢靠 :Horizon 的另一个长处是平安和牢靠。Horizon 100% 基于 GitOps,通过 Horizon 对应用程序所做的每个变更都是长久化的、可回滚和可审计。保障牢靠平安的状况下,仍然可能助力业务进行麻利实际。
  3. 凋谢且可扩大 :Horizon 还反对各种类型的工作负载,包含根本的 Kubernetes 工作负载和云原生工程师自主研发的 CRD。基于通用的申明式 API,实现宽泛的兼容与凋谢。大部分状况下,Horizon 平台不必任何前后端代码研发,即可疾速将各种云原生能力赋能到业务一线研发。
  4. 多云反对 :Horizon 提供了对立的应用程序平台来治理多云和混合云,这使得 Horizon 成为各种应用场景下的现实平台。
  5. 高效 :Horizon 治理团队可能基于模板以及低代码的能力疾速交付合乎最佳实际的利用部署,疾速赋能业务全面实际 DevOps。

个性

  1. GitOps: Horizon 基于 GitOps 部署利用,Git 仓库贮存了所有的配置及其变更,使每个应用程序的更改都是长久化的、可逆的和可审计的。
  2. 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 定义本人的最佳实际。
  3. RBAC & Member: Horizon 提供了一个与 Gitlab/GitHub 相似的 RBAC & Member 零碎,Horizon 治理团队能够轻松地创立合乎本身需要的 Role(与 Kubernetes 的 role、rolebinding 相似)和 Member。在咱们的生产实践中,咱们定义了 PE、Owner、Maintainer、Guest 等角色。Owner 领有读(查问 Pods,读取配置等),写(部署,构建部署,重启,公布,删除等)权限,Guest 只有读权限。
  4. 内部集成 :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 OpenShift
CI 反对(待欠缺) 不反对
CD 反对 反对
GitOps 反对 不反对
Group 反对 反对
RBAC 与 Member 反对 反对
Template 反对 反对
利用 反对自定义 反对自定义

社区

Horizon 打算建设一个对于 GitOps 与 CD 的国际化社区,如果你对 GitOps、云原生或者 CICD 感兴趣,请与咱们分割,或者在 GitHub 上给咱们一个 Star。

Github:https://github.com/horizoncd/horizon

官网与文档:https://horizoncd.github.io/

Slack:https://join.slack.com/t/horizoncd/shared_invite/zt-1pqpobiwn-1mgV60SIa1oi4mL1WXf7uA

微信:

注:如果二维码过期,请返回 Horizon Github 仓库查看最新二维码

退出移动版