第31节 horizon
❤️💕💕记录sealos开源项目的学习过程。k8s,docker和云原生的学习。Myblog:http://nsddd.top
[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 CR 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 Music 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
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 Kind to run a local Kubernetes cluster quickly. Minikube 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.
Resource Minimum Recommended CPU 4 CPU 8 CPU Mem 8 GB 16 GB Disk 40 GB 80 GB
Requirements
- Kubernetes cluster version 1.19.3 ~ v1.24.7.
- Installed kubectl command-line tool.
- Have a kubeconfig file (default location is
~/.kube/config
). - Installed helm command-line tool.
- Installed ingress-nginx 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 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©