k3s-ansible is an Ansible collection that automates the deployment of a highly available Kubernetes cluster using k3s.
The tool addresses the complexity of setting up a production-grade, self-hosted Kubernetes cluster by automating the entire provisioning process. It uses Ansible playbooks to configure multiple nodes as a k3s cluster with high availability through etcd, employing kube-vip for control plane load balancing and supporting either MetalLB or kube-vip for service load balancing. The approach handles the configuration of CNI options and manages the cluster lifecycle through repeatable, idempotent playbooks.
The project suits teams deploying k3s on bare metal or virtual machines running Debian, Ubuntu, or Rocky Linux across x64, arm64, and armhf architectures. It is designed for operators who want to avoid manual cluster setup and prefer infrastructure-as-code approaches. The tool requires Ansible 2.11 or newer on the control node, passwordless SSH access to target nodes, and the netaddr Python package. Cluster configuration happens through inventory files and group variables, allowing customization of k3s version and networking options before deployment. The README emphasizes that all nodes must have unique hostnames, as k3s registers nodes by this identifier.
Development activity shows consistent engagement with the codebase through regular commits addressing both features and maintenance. The project maintains comprehensive documentation including a detailed blog post walkthrough and video guide, alongside structured contribution guidelines and testing infrastructure via Molecule for local validation. Pull requests receive timely review and integration, indicating active stewardship of the repository.