This repository has been deprecated, as I've moved my home setup over to NixOS.
Running a home cluster was a great opportunity to learn about the inner workings and challenges of Kubernetes, and I highly recommend doing it for learning purposes.
Sadly, after the learning phase, it turned out to be more difficult to maintain and the benefits of high availability don't create a lot of benefit in a home environment.
Welcome to the flux-home repository! This repository contains the Kubernetes manifests for my K3s Kubernetes cluster at home. It enables me to manage my cluster efficiently and automate the deployment of applications using various tools and services.
-
Cert Manager: Cert Manager is a Kubernetes add-on that automates the management and provisioning of TLS certificates. It simplifies the process of obtaining and renewing certificates from certificate authorities like Let's Encrypt. It uses Cloudflare DNS to generate Let's Encrypt certificates, ensuring secure communication for both external and internal-only services.
-
Cilium: Cilium is a powerful networking and network security solution for Kubernetes. It serves as the Kubernetes CNI in my home cluster. In addition, Cilium is used as a Service IPAM to assign IP addresses to LoadBalancer services and publish them to my VyOS Router via BGP.
-
External DNS: External DNS is a Kubernetes add-on that automatically manages DNS records for your services and ingresses. It integrates with various DNS providers, ensuring that DNS entries are updated dynamically as your services and ingresses change. I have configured two instances of External DNS:
-
External DNS (Cloudflare): Manages my external Cloudflare DNS records, allowing external access to my services.
-
Internal DNS (Active Directory via RFC2136): Manages my internal Active Directory DNS records using RFC 2136 dynamic DNS updates. This enables internal access to services within my cluster.
-
-
FluxCD: FluxCD is a GitOps operator that helps in automating the deployment and lifecycle management of Kubernetes applications. It synchronizes the cluster state with the Git repository, ensuring that the desired state is always maintained.
-
GarageHQ: GarageHQ is a lightweight, self-hosted object storage system compatible with the Amazon S3 API. It allows you to store and retrieve data using the S3 protocol within your Kubernetes cluster.
-
Ingress-Nginx: Ingress-Nginx is an Ingress controller for Kubernetes that enables the routing of incoming traffic to your services. It provides features like SSL/TLS termination, load balancing, and path-based routing.
-
kube-vip: kube-vip provides a highly available solution for the Kubernetes control plane. It ensures stable network connectivity and smooth operation of the control plane, contributing to the overall reliability and resilience of the Kubernetes cluster.
-
Kured: Kured is a tool used to automatically reboot nodes when a reboot is required.
-
OnePassword Connect + Operator: The OnePassword Operator is a tool for integrating the 1Password secrets management platform with Kubernetes. It provides secure and convenient access to secrets and credentials for your applications. The Operator uses OnePassword Connect to fetch the secrets from 1Password.
-
Rancher Longhorn: Longhorn provides a distributed block storage system for Kubernetes, offering replicated storage with high availability and data durability.
-
Renovate: Renovate is an automated dependency management tool. It keeps track of the dependencies in your project and automatically updates them to their latest versions, ensuring that your cluster stays up-to-date and secure.
-
Smarter Device Manager: Smarter Device Manager is a tool used for managing devices in Kubernetes environments. It allows the assignment of
/dev/fuse
devices to containers using requests, enhancing control over device usage within the cluster. -
System Upgrade Controller: The System Upgrade Controller by Rancher is used to automatically upgrade K3s according to a Plan object.
-
Tekton: Tekton is a flexible and scalable Kubernetes-native framework for building Continuous Integration/Continuous Delivery (CI/CD) systems. It allows you to define and run CI/CD pipelines as code, enabling automation and collaboration.
Name | Node | Processor | Memory | Storage |
---|---|---|---|---|
Ananke | Prodesk 400 G5 | Intel Core i5-9500T | 32 GB | 1TB SSD |
Nyx | Prodesk 400 G3 | Intel Core i5-7500T | 16 GB | 1TB SSD |
Ourea | Elitedesk 800 G2 (VM) | Intel Core i5-6500T | 8 GB | 1TB SSD |
These nodes collectively form the backbone of my home Kubernetes cluster, providing the necessary resources for running and managing containerized applications.
Disclaimer: This README was generated with the assistance of artificial intelligence (AI). While efforts have been made to ensure the accuracy and clarity of the information presented, please note that the content may not always reflect human-written documentation. If any of the links are incorrect, I might have missed checking them. Use the provided information at your own discretion and if in doubt refer to official documentation.