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 в таблицу аддонов
This commit is contained in:
Sergey Antropoff
2026-04-26 18:57:11 +03:00
parent 225f77598a
commit 91299fcc1b
25 changed files with 2376 additions and 72 deletions

View File

@@ -0,0 +1,42 @@
---
- name: Prepare cluster test environment
hosts: all
become: true
gather_facts: false
tasks:
- name: Wait for systemd to start
ansible.builtin.command: systemctl is-system-running
register: systemd_running
until: systemd_running.stdout in ['running', 'degraded']
retries: 20
delay: 3
changed_when: false
failed_when: false
- name: Install Python3
ansible.builtin.raw: apt-get update && apt-get install -y python3
changed_when: true
- name: Create k3s directories
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- /etc/kubernetes/k3s
- /var/lib/kubernetes/k3s/server
- /var/lib/kubernetes/k3s/agent
- name: Mock k3s binary (simulates pre-installed K3s)
ansible.builtin.copy:
content: "#!/bin/bash\necho 'k3s mock'; exit 0\n"
dest: /usr/local/bin/k3s
mode: "0755"
- name: Mock k3s node-token (masters only)
ansible.builtin.copy:
content: "K10::server:molecule-test-node-token\n"
dest: /var/lib/kubernetes/k3s/server/node-token
mode: "0600"
when: inventory_hostname in groups['k3s_master']