- 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 уже существовали)
99 lines
6.0 KiB
Markdown
99 lines
6.0 KiB
Markdown
# K3S Ansible Stack
|
||
|
||
Полный Kubernetes стек на базе K3S с HA (High Availability), управляемый через Ansible внутри Docker-контейнера. Ansible, Helm и kubectl устанавливать **не нужно** — всё работает через `make`.
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
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>`.
|
||
|
||
## Документация
|
||
|
||
| Раздел | Описание |
|
||
|---|---|
|
||
| [Быстрый старт](docs/getting-started.md) | Полная установка с нуля (12 шагов) |
|
||
| [Архитектура](docs/architecture.md) | Топология кластера, CNI, компоненты |
|
||
| [Настройка](docs/configuration.md) | K3S, kube-vip, NFS, ingress, cert-manager |
|
||
| [Аддоны](docs/addons.md) | Каталог всех аддонов, флаги, зависимости |
|
||
| [Хранилище](docs/storage.md) | NFS, Longhorn, MinIO, CSI S3, Ceph, GlusterFS |
|
||
| [Безопасность](docs/security.md) | Vault, External Secrets, CrowdSec, Vaultwarden |
|
||
| [CI/CD](docs/cicd.md) | Jenkins, Gitea Actions, ArgoCD |
|
||
| [Observability](docs/observability.md) | Prometheus, Grafana, Loki, Tempo, Pushgateway |
|
||
| [Сеть](docs/networking.md) | ingress-nginx, cert-manager, Istio, NetBird VPN |
|
||
| [Операции](docs/operations.md) | Управление нодами, etcd backup/restore, K3S upgrade |
|
||
| [Make команды](docs/make-reference.md) | Полный справочник make |
|
||
| [Molecule тесты](docs/molecule-testing.md) | Тестирование ролей, написание тестов |
|
||
| [Решение проблем](docs/troubleshooting.md) | Таблица проблем, диагностика |
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
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
|