第31节 horizon


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

Horizon

describe:Production-Grade GitOps CD PlatForm For CloudNative Applications, MiddleWares, etc.

Horizon is a cloud-native application Continues Delivery (CD) platform. Platform team can let the developers deploy their code and MiddleWares to cloud and kubernetes easily, efficiency and with best practice. Horizon is inspired by ArgoCD and AWS Proton.

Why Horizon

standardized : kubernetes is flexible and powerful, but it is complex. it's hard to let all the developers have a comprehensive understanding of kubernetes and practice best practice. so horizon introduce a template system to make the best practice under control, and also provide efficient delivery. For example, Platform Team can provide basic spec of resource tiny(0.5core, 512MB)、small(1core, 1GB), middle(2core, 4GB) etc. by default, not for the developer to select limit or request resource on common case.

security and reliable :security and reliable is always a challenge. In Horizon, Horizon make every change of application durable, reversible and auditable. It's done with our best practice of GitOps. And Horizon introduce rbac&member system to let you have best practice on fine-grained permission control.

multi-cloud : Horizon provide a consistent application platform to manage multi-cloud, hybrid cloud.

infrastructure agnostic :horizon doesn't limit the kind of workload. the basic kubernetes workloads and self defined CRopen in new window are all supported.

efficiency :platform team can quickly make an end to end best practice workload delivery based on Horizon template.

Production-Grade:Within NetEase Cloud Musicopen in new window about thousands of developer use horizon to deploy workload everyday.

Features

In Horizon, Git is Used as the only "The Source Of Truth", Horizon stores template and all values in Git repository. Every change are durable, reversible and auditable, Including code, image, environment variables, resource spec, etc.

Horizon Template is based on helm and jsonschema. The Platform Team can make the basic practice (including security, affinity, priority, resource, etc.) by default, and provide user a simple and uniform interface which is defined by jsonschema files. jsonschema is used for provide a user friend HTML form on the Horizon Based on react-jsonschema-form. It's highly Scalable and flexible to make your own best practice based on the simple template system.

RPAC & Member

Horizon Provide a RBAC & Member system Just like Gitlab. You can easily define your Own PlatForm Member and Role(Just like Kubernetes role and rolebinding). In our Practice, we Provide Role like PE, Owner, Maintainer, Guest. the Owner is binding with the Read(list pods, read all properties, etc.)/Write(deploy, builddeploy, restart, release, delete etc.) Permission, the guest just have the read permission.

Architecture

image-20230301221333656

How to install

Horizon is built entirely on Kubernetes and has been fully tested on its v1.19.3 ~ v1.24.7 release.

We are assuming you have a basic understanding of what the Kubernetes is and how it runs.

You can use Kindopen in new window to run a local Kubernetes cluster quickly. Minikubeopen in new window is another highly useful tool to set up a local Kubernetes cluster.

The following table lists the minimum and recommended hardware configurations for deploying Horizon.

ResourceMinimumRecommended
CPU4 CPU8 CPU
Mem8 GB16 GB
Disk40 GB80 GB

Requirements

  1. Kubernetesopen in new window cluster version 1.19.3 ~ v1.24.7.
  2. Installed kubectlopen in new window command-line tool.
  3. Have a kubeconfigopen in new window file (default location is ~/.kube/config).
  4. Installed helmopen in new window command-line tool.
  5. Installed ingress-nginxopen in new window or any other ingress controller.

Installation Process

We use helm to organize Horizon's whole dependencies, which means you can launch a whole system by Helm.

END 链接