k3s role

This Ansible role configures a single node K3s cluster on an Alpine Linux host.

It is designed to configure VMs cloned using the machine Terraform module.

After running, the kubeconfig is fetched to secrets/k3s.<ip>.yaml and can be used to authenticate with the cluster.

Variables

  • k3s_version - K3s version to use. Default is v1.25.4+k3s1.

It is recommended to specify k3s_version to avoid collection updates from upgrading your Kubernetes version.

It is recommended to use k3s_version from the stable release channel.

Example Playbook

Given a production group in the Ansible inventory, this playbook installs a single node K3s cluster on each host:

---
- name: Configure Kubernetes cluster
  hosts: production
  roles:
    - role: lkummer.homelab.k3s

To access the cluster, set the KUBECONFIG environment variable to the k3s.<ip>.yaml file created in the secrets directory. The following command sets KUBECONFIG to the latest config in the secrets directory.

export KUBECONFIG="$(ls -lt secrets/k3s* | head -n 1 | sed 's/.*\(secrets.*$\)/\1/')"

You can also put it in a .env file to automatically set your KUBECONFIG.