Организация плейбуков: - все .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
41 lines
1.1 KiB
YAML
41 lines
1.1 KiB
YAML
---
|
|
# Плейбук обновления K3S
|
|
# Workers обновляются по одному (serial: 1) чтобы не потерять кворум
|
|
#
|
|
# Запуск: ansible-playbook upgrade.yml -e k3s_version=v1.30.0+k3s1
|
|
|
|
- name: Upgrade K3S master
|
|
hosts: k3s_master
|
|
gather_facts: true
|
|
become: true
|
|
tasks:
|
|
- name: Upgrade K3S server
|
|
ansible.builtin.include_role:
|
|
name: k3s
|
|
tasks_from: upgrade
|
|
|
|
- name: Upgrade K3S workers (one by one)
|
|
hosts: k3s_workers
|
|
gather_facts: true
|
|
become: true
|
|
serial: 1 # ← обновляем по одной ноде за раз
|
|
tasks:
|
|
- name: Upgrade K3S agent
|
|
ansible.builtin.include_role:
|
|
name: k3s
|
|
tasks_from: upgrade
|
|
|
|
- name: Verify cluster after upgrade
|
|
hosts: k3s_master
|
|
gather_facts: false
|
|
become: true
|
|
tasks:
|
|
- name: Final node status
|
|
ansible.builtin.command: k3s kubectl get nodes -o wide
|
|
register: final_status
|
|
changed_when: false
|
|
|
|
- name: Show final cluster state
|
|
ansible.builtin.debug:
|
|
msg: "{{ final_status.stdout_lines }}"
|