/kubernetes-the-alta3-way

The greatest k8s installer on the planet!

Primary LanguageShell

Kubernetes The Alta3 Way

This repo contains a fully automated installer to deploy a Highly Available Kubernetes cluster using Ansible. The Kubernetes The Alta3 Way playbook is optimized for learning; with explicit steps and install mechanisms which ensure understanding each task required to bootstrap a production-grade Kubernetes cluster.

Kubernetes The Alta3 Way is used extensively within the student lab environments for Alta3's Kubernetes Bootcamp and Certified Kubernetes Administrator courses. In each course students have access to their own Kubernetes environments capable of demonstrating all of the “K8s” features and components used in CKAD and CKA certifications (Certified Kubernetes Application Developer, Certified Kubernetes Administrator).

Copyright

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Target Audience

The target audience for this tutorial is someone planning to support a production Kubernetes cluster and wants to understand how everything fits together.

Cluster Details

Kubernetes The Alta3 Way guides you through bootstrapping a highly available Kubernetes cluster with:

  • A highly available control plane backed by etcd
  • End-to-end TLS encryption between components
  • RBAC authenticated services and users
  • Isolated and default-deny networking
  • gVisor runtime protection on nodes

Components and versions:

k8s_version: "1.29.4"        # https://kubernetes.io/releases/#release-v1-28
etcd_version: "3.5.12"       # https://github.com/etcd-io/etcd/releases
cni_version: "1.4.1"         # https://github.com/containernetworking/plugins/releases 
containerd_version: "1.7.16" # https://github.com/containerd/containerd/releases
cri_tools_version: "1.30.0"  # https://github.com/kubernetes-sigs/cri-tools/releases
cfssl_version: "1.6.5"       # https://github.com/cloudflare/cfssl/releases
runc_version: "1.1.9"        # https://github.com/opencontainers/runc/releases
coredns_version: "1.11.12"   # https://github.com/coredns/coredns/releases
calico_version: "3.27.2"     # https://github.com/projectcalico/calico/releases
helm_version: "3.14.3"       # https://github.com/helm/helm/releases
gvisor_version: "latest"     # https://github.com/google/gvisor/releases

Upgrade Schedule

Kubernetes the Alta3 Way aligns its release cycle closely with Kubernetes, adopting a strategic one-version-behind approach to ensure stability and thorough integration with the latest developments.

Kubernetes Release Cycle:

  • Frequency: Kubernetes issues new releases three times a year.
  • Support: The Kubernetes project supports the three most recent minor releases. Detailed information on the release cycle can be found here.

Approach:

  • One Version Behind: To ensure stability and thorough integration, Kubernetes the Alta3 Way is maintained one major version behind the latest Kubernetes Upstream Release. This strategy allows for adequate time to manage subcomponent updates and gracefully handle any deprecations.
  • Release Branches: With each new major release of Kubernetes a corresponding branch is created, named after the version number, dedicated to testing and adaptations.
  • Repository Tags: Each major release is tagged to facilitate easy access to specific versions.