2020-07-09 15:33:00 +00:00
KubeZero - Zero Down Time Kubernetes platform
========================
2021-01-27 12:20:11 +00:00
KubeZero is a Kubernetes distribution providing an integrated container platform so you can focus on your applications.
2020-05-01 13:57:31 +00:00
2021-01-27 12:20:11 +00:00
# Design philosophy
2020-05-01 14:08:55 +00:00
2021-01-27 12:20:11 +00:00
- Cloud provider agnostic, bare-metal/self-hosted
2022-05-03 13:58:03 +00:00
- Focus on security and simplicity before feature bloat
2021-01-26 13:47:33 +00:00
- No vendor lock in, most components are optional and could be exchanged
2021-01-27 12:20:11 +00:00
- Organic Open Source / open and permissive licenses over closed-source solutions
2020-07-09 15:33:00 +00:00
- No premium services / subscriptions required
2021-01-26 13:47:33 +00:00
- Staying and contributing back to upstream projects as much as possible
2021-10-21 15:10:56 +00:00
- Corgi approved :dog:
2021-01-26 13:47:33 +00:00
2020-05-01 14:08:55 +00:00
2021-10-21 15:13:13 +00:00
# Architecture
![aws_architecture ](docs/aws_architecture.png )
2021-01-12 15:27:21 +00:00
# Version / Support Matrix
2021-10-21 13:24:52 +00:00
KubeZero releases track the same *minor* version of Kubernetes.
2022-02-01 15:53:55 +00:00
Any 1.21.X-Y release of Kubezero supports any Kubernetes cluster 1.21.X.
2021-01-12 15:27:21 +00:00
2021-10-21 13:24:52 +00:00
KubeZero is distributed as a collection of versioned Helm charts, allowing custom upgrade schedules and module versions as needed.
| KubeZero Version | Kubernetes Version | EOL |
|------------------|---------------------|-------------|
2022-05-03 13:58:03 +00:00
| v1.23.X-Y | v1.23.X | Alpha |
| v1.22.8-Y | v1.22.8 | 30 Sep 2022 |
2022-03-11 15:56:31 +00:00
| v1.21.9-Y | v1.21.9 | 31 May 2022 |
| v1.20.8 | v1.20 | Feb 2022 |
2021-10-21 15:10:56 +00:00
| v1.19 | v1.19 | Jul 2021 |
| v1.18 | v1.18 | Apr 2021 |
2021-07-01 14:42:39 +00:00
[Upstream release policy ](https://kubernetes.io/releases/ )
2021-01-12 15:27:21 +00:00
2021-01-26 14:27:22 +00:00
# Components
2022-05-03 13:58:03 +00:00
## OS
- all nodes are based on Alpine V3.15
- 2 GB encrypted root filesystem
- no 3rd party dependencies at boot ( other than container registries )
- minimal attack surface
- extremely small memory footprint / overhead
2021-01-26 14:27:22 +00:00
## Container runtime
- cri-o rather than Docker for improved security and performance
2020-07-09 15:33:00 +00:00
2020-08-26 10:41:28 +00:00
## Control plane
2022-05-03 13:58:03 +00:00
- all Kubernetes components compiled against Alpine OS using `buildmode=pie`
2020-08-26 10:41:28 +00:00
- support for single node control plane for small clusters / test environments to reduce costs
- access to control plane from within the VPC only by default ( VPN access required for Admin tasks )
- controller nodes are used for various platform admin controllers / operators to reduce costs and noise on worker nodes
2021-01-26 13:47:33 +00:00
## GitOps
2021-10-21 15:10:56 +00:00
- cli / cmd line install
- optional full ArgoCD support and integration
2022-02-01 15:53:55 +00:00
- fuse device plugin support to build containers as part of a CI pipeline leveraging rootless podman build agents
2020-07-09 15:33:00 +00:00
2021-10-21 13:24:52 +00:00
## AWS integrations
- IAM roles for service accounts allowing each pod to assume individual IAM roles
- access to meta-data services is blocked all workload containers on all nodes
2022-02-01 15:53:55 +00:00
- all IAM roles are maintained via CloudBender automation
- aws-node-termination handler integrated
- support for spot instances per worker group incl. early draining etc.
2022-05-03 13:58:03 +00:00
- support for [Inf1 instances ](https://aws.amazon.com/ec2/instance-types/inf1/ ) part of [AWS Neuron ](https://aws.amazon.com/machine-learning/neuron/ ).
2020-07-09 15:33:00 +00:00
2020-08-26 10:41:28 +00:00
## Network
2022-02-01 15:53:55 +00:00
- Multus support for multiple network interfaces per pod, eg. additional AWS CNI
- Calico using VxLAN incl. increased MTU
allows flexible / more containers per worker node compared to eg. AWS VPC CNI
2020-08-26 10:41:28 +00:00
- isolates container traffic from VPC by using VxLAN overlay
- no restrictions on IP space / sizing from the underlying VPC architecture
2020-07-09 15:33:00 +00:00
## Storage
2020-08-26 10:41:28 +00:00
- flexible EBS support incl. zone awareness
2021-10-21 13:24:52 +00:00
- EFS support via automated EFS provisioning for worker groups via CloudBender automation
- local storage provider (OpenEBS LVM) for latency sensitive high performance workloads
2022-02-01 15:53:55 +00:00
- CSI Snapshot controller and Gemini snapshot groups and retention
2020-08-26 10:41:28 +00:00
## Ingress
2022-05-03 13:58:03 +00:00
- AWS Network Loadbalancer and Istio Ingress controllers
- no additional costs per exposed service
- real client source IP available to workloads via HTTP header and access logs
- ACME SSL Certificate handling via cert-manager incl. renewal etc.
2020-08-26 10:41:28 +00:00
- support for TCP services
2022-05-03 13:58:03 +00:00
- optional rate limiting support
2020-08-26 10:41:28 +00:00
- optional full service mesh
## Metrics
- Prometheus support for all components
- automated service discovery allowing instant access to common workload metrics
2021-10-21 15:13:13 +00:00
- pre-configured Grafana dashboards and alerts
- Alertmanager events via SNSAlertHub to Slack, Google, Matrix, etc.
2020-05-01 14:08:55 +00:00
2020-08-26 10:41:28 +00:00
## Logging
2021-10-21 13:24:52 +00:00
- all container logs are enhanced with Kubernetes and AWS metadata to provide context for each message
2021-01-26 13:47:33 +00:00
- flexible ElasticSearch setup, leveraging the ECK operator, for easy maintenance & minimal admin knowledge required, incl. automated backups to S3
- Kibana allowing easy search and dashboards for all logs, incl. pre configured index templates and index management
2021-10-21 13:24:52 +00:00
- [fluentd-concerter ](https://git.zero-downtime.net/ZeroDownTime/container-park/src/branch/master/fluentd-concenter ) service providing queuing during highload as well as additional parsing options
- lightweight fluent-bit agents on each node requiring minimal resources forwarding logs secure via TLS to fluentd-concenter