eccc1c2a014eafb8f5bb06ad3a3d321f791ec4e3
- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/ - docs/: 13 файлов — getting-started, architecture, configuration, addons, storage, security, cicd, observability, networking, operations, make-reference, molecule-testing, troubleshooting - addons/*/README.md: 31 новый файл — описание, параметры, примеры кода для каждого из 34 аддонов (vault и external-secrets уже существовали)
K3S Ansible Stack
Полный Kubernetes стек на базе K3S с HA (High Availability), управляемый через Ansible внутри Docker-контейнера. Ansible, Helm и kubectl устанавливать не нужно — всё работает через make.
Быстрый старт
git clone <url> k3s-ansible && cd k3s-ansible
make setup # создать .env
# → отредактируй .env, inventory/hosts.ini, group_vars/all/main.yml
make vault-create # создать vault с секретами
make build # собрать Docker образ
make install # развернуть K3S HA кластер
make install-addons # установить аддоны (из group_vars/all/addons.yml)
Архитектура
┌──────────────────────────────────────────────────────────────┐
│ Локальная сеть 192.168.1.0/24 │
│ VIP: 192.168.1.100 (kube-vip) │
│ ├── :6443 K3S API Server (HA) │
│ └── :80/:443 ingress-nginx → приложения │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ master01 │ │ worker01 │ │ rpi01 │ │
│ │ K3S server │ │ K3S server │ │ K3S server │ │
│ │ etcd #1 │ │ etcd #2 │ │ etcd #3 │ │
│ │ NFS server │ │ workloads ✓ │ │ NoSchedule │ │
│ │ workloads ✓ │ │ │ │ workloads ✗ │ │
│ └──────────────┘ └──────────────┘ └────────────────┘ │
│ StorageClass: nfs-master01 (default) │
└──────────────────────────────────────────────────────────────┘
HA-режим (embedded etcd): при отказе любой одной ноды кластер продолжает работать.
CNI: flannel (встроен) | calico (Network Policy, BGP) | cilium (eBPF, Hubble)
Аддоны (34)
| Категория | Аддоны |
|---|---|
| Сеть | ingress-nginx, cert-manager, istio + kiali, crowdsec, netbird VPN |
| Хранилище | nfs-server, csi-nfs, longhorn, minio, csi-s3, csi-ceph, csi-glusterfs |
| Базы данных | postgresql, mysql, databasus |
| Observability | metrics-server, prometheus+grafana+alertmanager, loki, promtail, tempo, pushgateway |
| CI/CD | jenkins, gitea + actions, argocd |
| Безопасность | vault, external-secrets, vaultwarden |
| Инфраструктура | harbor, kubernetes-dashboard, velero, smtp-relay |
| Файловые хранилища | nextcloud, owncloud |
Все аддоны включаются флагами в group_vars/all/addons.yml. Установка: make addon-<name>.
Документация
| Раздел | Описание |
|---|---|
| Быстрый старт | Полная установка с нуля (12 шагов) |
| Архитектура | Топология кластера, CNI, компоненты |
| Настройка | K3S, kube-vip, NFS, ingress, cert-manager |
| Аддоны | Каталог всех аддонов, флаги, зависимости |
| Хранилище | NFS, Longhorn, MinIO, CSI S3, Ceph, GlusterFS |
| Безопасность | Vault, External Secrets, CrowdSec, Vaultwarden |
| CI/CD | Jenkins, Gitea Actions, ArgoCD |
| Observability | Prometheus, Grafana, Loki, Tempo, Pushgateway |
| Сеть | ingress-nginx, cert-manager, Istio, NetBird VPN |
| Операции | Управление нодами, etcd backup/restore, K3S upgrade |
| Make команды | Полный справочник make |
| Molecule тесты | Тестирование ролей, написание тестов |
| Решение проблем | Таблица проблем, диагностика |
Структура проекта
k3s-ansible/
├── Makefile ← Все команды (единая точка входа)
├── Dockerfile ← Ansible + Helm + kubectl
├── group_vars/all/
│ ├── main.yml ← Переменные кластера
│ ├── addons.yml ← Флаги и настройки аддонов
│ └── vault.yml ← Зашифрованные секреты
├── inventory/hosts.ini ← IP и параметры серверов
├── host_vars/ ← Настройки конкретных нод
├── playbooks/
│ ├── site.yml ← Основной плейбук
│ └── addons.yml ← Плейбук аддонов
├── roles/ ← Роли кластера (k3s, kube-vip, nfs...)
├── addons/ ← Аддоны (каждый с README.md)
└── docs/ ← Документация
Требования
Локальная машина: Docker >= 24.0, make, SSH ключ
Серверы: Ubuntu 20.04/22.04/24.04 или Debian 11/12, SSH доступ, sudo без пароля, 2+ ГБ RAM
Description
Languages
Jinja
56.1%
Makefile
20%
Python
10.7%
Shell
7.7%
Smarty
3.8%
Other
1.7%