* Add Cilium CNI option * Tweak version checks and add BGP resource verify * Update metallb detection for kube-vip feat compat
80 lines
3.1 KiB
Markdown
80 lines
3.1 KiB
Markdown
# Test suites for `k3s-ansible`
|
|
|
|
This folder contains the [molecule](https://molecule.rtfd.io/)-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](../inventory/sample/).
|
|
- **ipv6**:
|
|
A cluster that is externally accessible via IPv6 ([more information](ipv6/README.md))
|
|
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:
|
|
|
|
- [Python 3](https://www.python.org/downloads)
|
|
- [Vagrant](https://www.vagrantup.com/downloads)
|
|
- [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
|
|
|
|
### 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](https://www.virtualbox.org/manual/ch06.html#network_hostonly).
|
|
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](../requirements.txt) via [pip](https://pip.pypa.io/).
|
|
Usually, it is advisable to work in a [virtual environment](https://docs.python.org/3/tutorial/venv.html) for this:
|
|
|
|
```bash
|
|
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`](default/molecule.yml) for more details.
|