# Kubernetes Cluster Deployment Guide This guide describes how to deploy a Kubernetes cluster tailored to my environment using the provided `redbutton.sh` script. Just be sure to edit the `inventory.ini` file for the ansible playbook and the variables in the `init-deploy.sh` script. I think you can scale this out by adding more hosts and adjusting the for loop but I haven't tried it yet. I needed three machines and that is what I worked with. DO NOT FORGET TO SET YOUR CLOUDFLARE API KEY IN THE CERT-MANAGER MANIFEST FILE!!! ## ⚙️ Pre-requisites Before running the deployment script, ensure the following are in place: - `kubectl` and `helm` are installed on your local machine - The remote user can execute `sudo` commands **without a password prompt** - SSH host keys of the target nodes are already added to your system (to avoid interactive confirmation prompts) ## 🧭 Deployment Goals This setup will create a Kubernetes cluster with the following topology and components: - **1 Control Plane Node** - **2 Worker Nodes** - **Calico** as the CNI (Container Network Interface) - **MetalLB** as the cloud load balancer for bare metal services (change the configmap to adapt it to your network) - **Traefik** as the ingress controller on IP 10.50.3.30 (change it in the values.yaml to adapt it to your network) - **Cert-Manager** to manage the internal certificates. Remember to update the API key! - **Longhorn** as the persistent storage provider (change the host to adapt it to your network) ## 🚀 How to Deploy To initiate the deployment, run the provided script: ```bash chmod +x init-deploy.sh chmod +x helm-deploy.sh chmod +x redbutton.sh ./redbutton.sh ``` May the kubelets be ever in your favor, and your etcd never split! ![alt text](robotnik.png)