Files
K3S/playbooks/uninstall.yml
Sergey Antropoff 437d0cce34 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
2026-04-24 07:00:18 +03:00

102 lines
2.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
# Полное удаление всего стека
# Порядок: обратный установке
# Запуск: ansible-playbook uninstall.yml
- name: Confirm uninstall
hosts: localhost
gather_facts: false
tasks:
- name: Ask for confirmation
ansible.builtin.pause:
prompt: |
⚠️ ВНИМАНИЕ! Будут удалены: ingress-nginx, CSI NFS, kube-vip, K3S и ВСЕ данные.
Введите 'yes' для подтверждения
register: confirm
when: confirm_uninstall is not defined
- name: Abort if not confirmed
ansible.builtin.fail:
msg: "Отменено."
when:
- confirm_uninstall is not defined
- confirm.user_input != 'yes'
- name: Remove ingress-nginx
hosts: k3s_master
gather_facts: false
become: true
tags: [ingress_nginx]
tasks:
- name: Uninstall ingress-nginx Helm release
ansible.builtin.command: >
helm uninstall ingress-nginx -n ingress-nginx
failed_when: false
changed_when: true
environment:
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
- name: Delete ingress-nginx namespace
ansible.builtin.command: k3s kubectl delete namespace ingress-nginx --ignore-not-found
changed_when: true
- name: Remove CSI NFS Driver
hosts: k3s_master
gather_facts: false
become: true
tags: [csi_nfs]
tasks:
- name: Uninstall CSI NFS Helm release
ansible.builtin.command: >
helm uninstall csi-driver-nfs -n kube-system
failed_when: false
changed_when: true
environment:
KUBECONFIG: "{{ k3s_kubeconfig_path }}"
- name: Delete NFS StorageClass
ansible.builtin.command: >
k3s kubectl delete storageclass nfs-client --ignore-not-found
changed_when: true
- name: Remove kube-vip
hosts: k3s_master
gather_facts: false
become: true
tags: [kube_vip]
tasks:
- name: Remove kube-vip manifests
ansible.builtin.file:
path: "{{ item }}"
state: absent
loop:
- "{{ k3s_data_dir }}/server/manifests/kube-vip.yaml"
- "{{ k3s_data_dir }}/server/manifests/kube-vip-rbac.yaml"
- name: Uninstall K3S workers
hosts: k3s_workers
gather_facts: true
become: true
tags: [k3s]
tasks:
- ansible.builtin.include_role:
name: k3s
tasks_from: uninstall
- name: Uninstall K3S master
hosts: k3s_master
gather_facts: true
become: true
tags: [k3s]
tasks:
- ansible.builtin.include_role:
name: k3s
tasks_from: uninstall
- name: Done
hosts: localhost
gather_facts: false
tasks:
- ansible.builtin.debug:
msg: "✓ Весь стек удалён."