Files
K3S/README.md
Sergey Antropoff eccc1c2a01 docs: полная документация проекта — docs/ и README.md для каждого аддона
- 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 уже существовали)
2026-04-26 00:22:06 +03:00

99 lines
6.0 KiB
Markdown
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.

# 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