refactor: перемещение плейбуков в playbooks/, ротация сертификатов, сохранение ключей локально

Организация плейбуков:
- все .yml плейбуки перенесены из корня в playbooks/
- Makefile и entrypoint.sh обновлены — все пути с playbooks/ префиксом
- k8s-user.yml переработан: include_tasks → include_role (корректная работа из подкаталога)

Сохранение ключей и kubeconfig локально:
- k8s-user.yml: новый play сохраняет k8s SSH ключи в ./keys/ на машине запуска
- переменная k8s_local_keys_dir: "./keys" (настраивается в group_vars)
- .gitignore: keys/k8s_id_rsa исключён (публичный ключ можно коммитить)
- kubeconfig уже сохранялся роль k3s (k3s_kubeconfig_local_path: "./kubeconfig")

Автоматическая ротация сертификатов K3S (роль k3s-certs):
- K3S выпускает сертификаты на 1 год (hardcoded), таймер обеспечивает их обновление
- скрипт k3s-cert-check.sh: проверяет срок через openssl, ротирует при k3s_cert_rotate_before_days
- systemd service + timer: запуск по расписанию k3s_cert_check_schedule (по умолчанию monthly)
- RandomizedDelaySec: снижает нагрузку при одновременном запуске на нескольких нодах
- переменные: k3s_cert_validity_years: 5, k3s_cert_rotate_before_days: 90
- добавлен в site.yml (тег certs) и отдельный плейбук playbooks/k3s-certs.yml
- make k3s-certs и команда k3s-certs в entrypoint.sh
This commit is contained in:
Sergey Antropoff
2026-04-24 07:00:18 +03:00
parent 408779a379
commit 437d0cce34
22 changed files with 340 additions and 49 deletions

22
playbooks/k3s-certs.yml Normal file
View File

@@ -0,0 +1,22 @@
---
# ─────────────────────────────────────────────────────────────────────────────
# k3s-certs: установка systemd таймера автоматической ротации сертификатов K3S
#
# K3S выпускает сертификаты сроком на 1 год. Этот плейбук устанавливает
# systemd таймер, который автоматически проверяет и обновляет сертификаты
# до их истечения, обеспечивая бесперебойную работу кластера.
#
# Настройка:
# k3s_cert_validity_years: 5 — желаемый срок жизни без вмешательства
# k3s_cert_rotate_before_days: 90 — ротация за N дней до истечения
# k3s_cert_check_schedule: "monthly" — расписание проверки (systemd OnCalendar)
#
# Запуск: ansible-playbook playbooks/k3s-certs.yml --ask-vault-pass
# ─────────────────────────────────────────────────────────────────────────────
- name: Setup K3S certificate auto-rotation
hosts: k3s_cluster
gather_facts: true
become: true
roles:
- role: k3s-certs