Files
k3s-ansible/molecule
Timothy Stewart 6d49ad6977 fix(dependencies): address PR review findings
- Read the MetalLB speaker tag check from the managed host with slurp
  instead of a controller-side file lookup, and match the full image
  reference
- Restore the tigera-operator namespace on the Calico operator Deployment
  wait while keeping the managed CRD waits cluster-scoped
- Make Molecule verify inputs durable and scenario-specific via a
  per-scenario verify-vars.yml, driven by explicit verify_cni/verify_lb
  values instead of non-persisted converge facts
- Rename the kube-vip multi-peer BGP env var from bgppeers to bgp_peers
  and vip_cidr to vip_subnet so v1.2.2 actually reads them
- Map the legacy Cilium routed mode to tunnel and stop passing the alias
  directly to the chart
- Use return-code based failed_when on apply and preflight commands so
  non-error failures are no longer treated as success
- Clarify the sequential K3s upgrade path and backups in the README
- Add kube-vip and MetalLB regression tests and a Cilium mode mapping unit
2026-08-01 22:36:14 -05:00
..
2024-01-29 19:29:13 -06:00

Test suites for k3s-ansible

This folder contains the molecule-based test setup for this playbook.

Scenarios

We have these scenarios:

  • default: A 3 control + 2 worker node cluster based very closely on the sample inventory.
  • ipv6: A cluster that is externally accessible via IPv6 (more information) To save a bit of test time, this cluster is not highly available, it consists of only one control and one worker node.
  • single_node: Very similar to the default scenario, but uses only a single node for all cluster functionality.
  • calico: The same as single node, but uses calico cni instead of flannel.
  • cilium: The same as single node, but uses cilium cni instead of flannel.
  • kube-vip The same as single node, but uses kube-vip as service loadbalancer instead of MetalLB

How to execute

To test on your local machine, follow these steps:

System requirements

Make sure that the following software packages are available on your system:

Set up VirtualBox networking on Linux and macOS

You can safely skip this if you are working on Windows.

Furthermore, the test cluster uses the 192.168.30.0/24 subnet which is not set up by VirtualBox automatically. To set the subnet up for use with VirtualBox, please make sure that /etc/vbox/networks.conf exists and that it contains this line:

* 192.168.30.0/24
* fdad:bad:ba55::/64

Install Python dependencies

You will get Molecule, Ansible and a few extra dependencies via pip. Usually, it is advisable to work in a virtual environment for this:

cd /path/to/k3s-ansible

# Create a virtualenv at ".env". You only need to do this once.
python3 -m venv .env

# Activate the virtualenv for your current shell session.
# If you start a new session, you will have to repeat this.
source .env/bin/activate

# Install the required packages into the virtualenv.
# These remain installed across shell sessions.
python3 -m pip install -r requirements.txt

Run molecule

With the virtual environment from the previous step active in your shell session, you can now use molecule to test the playbook. Interesting commands are:

  • molecule create: Create virtual machines for the test cluster nodes.
  • molecule destroy: Delete the virtual machines for the test cluster nodes.
  • molecule converge: Run the site playbook on the nodes of the test cluster.
  • molecule side_effect: Run the reset playbook on the nodes of the test cluster.
  • molecule verify: Verify that the cluster works correctly.
  • molecule test: The "all-in-one" sequence of steps that is executed in CI. This includes the create, converge, verify, side_effect and destroy steps. See molecule.yml for more details.