Files
K3S/molecule/cluster/molecule.yml
Sergey Antropoff 91299fcc1b test: добавить полное покрытие Molecule + HTML report генератор
Molecule тесты для всех аддонов и кластерный topology тест:

Аддоны (Helm lint + template + assertions):
- addons/technitium-dns/role/molecule/ — Primary/Secondary DNS, CronJob, kube-vip
- addons/authelia/role/molecule/ — OIDC clients, access_control, manifests
- addons/ingress-proxypass/role/molecule/ — proxies, Service/Endpoints/Ingress
- addons/ingress-add-domains/role/molecule/ — entries, Ingress per namespace
- addons/yandex-dns-controller/role/molecule/ — CronJob, ConfigMap, RBAC

Кластер:
- molecule/cluster/ — 3 master (embedded etcd HA) + 2 worker topology тест

Инфраструктура:
- scripts/molecule-report.py — генератор HTML отчётов из JUnit XML
  (читает /tmp/molecule-junit/*.xml → /tmp/molecule-report.html)
- requirements-python.txt — комментарий к отчётному блоку
- docker/entrypoint.sh — добавлены команды molecule-addon, molecule-cluster,
  molecule-report с автоматическим включением junit callback
- Makefile — targets: molecule-cluster, molecule-addon-*, molecule-addon-all,
  molecule-report; molecule-all генерирует HTML отчёт
- docs/molecule-testing.md — полная документация всех сценариев
- docs/addons.md — добавлены technitium-dns и authelia в таблицу аддонов
2026-04-26 18:57:11 +03:00

101 lines
2.7 KiB
YAML

---
# HA Cluster scenario: 3 masters (embedded etcd) + 2 workers
# Tests: k3s config rendering, kube-vip template, agent config
# Topology mirrors a real home-lab cluster.
driver:
name: docker
platforms:
# ── 3 мастера — embedded etcd HA ──────────────────────────────────────────
- name: master01
image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
command: /lib/systemd/systemd
groups:
- k3s_master
- k3s_cluster
- name: master02
image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
command: /lib/systemd/systemd
groups:
- k3s_master
- k3s_cluster
- name: master03
image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
command: /lib/systemd/systemd
groups:
- k3s_master
- k3s_cluster
# ── 2 воркера ─────────────────────────────────────────────────────────────
- name: worker01
image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
command: /lib/systemd/systemd
groups:
- k3s_workers
- k3s_cluster
- name: worker02
image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true
privileged: true
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
command: /lib/systemd/systemd
groups:
- k3s_workers
- k3s_cluster
provisioner:
name: ansible
playbooks:
prepare: prepare.yml
converge: converge.yml
verify: verify.yml
config_options:
defaults:
interpreter_python: auto_silent
inventory:
group_vars:
# Masters — server config with cluster-init / join logic
k3s_master:
k3s_etcd_type: embedded
k3s_join_address: "192.168.1.100" # mock kube-vip VIP
# Workers — agent config
k3s_workers:
k3s_api_url: "https://192.168.1.100:6443"
k3s_node_token: "K10::server:molecule-test-node-token"
k3s_node_taints: []
k3s_node_labels: []
verifier:
name: ansible
lint: |
set -e
yamllint .
ansible-lint