Files
K3S/README.md
Sergey Antropoff 38aaadbfb1 docs: sync addon docs with explicit external/internal service modes
Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
2026-04-29 23:21:04 +03:00

107 lines
7.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)
## Аддоны (48)
| Категория | Аддоны |
|---|---|
| **Сеть** | ingress-nginx, cert-manager, istio + kiali, crowdsec, netbird VPN, technitium-dns, yandex-dns-controller |
| **Хранилище** | nfs-server, csi-nfs, longhorn, minio, csi-s3, csi-ceph (Ceph CSI), ceph-rock, csi-glusterfs |
| **Базы данных** | postgresql, mysql, redis, mongodb, kafka, kafka-ui, rabbitmq, databasus |
| **Observability** | metrics-server, prometheus+grafana+alertmanager, loki, promtail, tempo, pushgateway |
| **CI/CD** | jenkins, gitea + actions, gitlab + runners, argocd |
| **Безопасность** | vault, external-secrets, vaultwarden, authelia |
| **Инфраструктура** | harbor, kubernetes-dashboard, velero, smtp-relay |
| **Файловые хранилища** | nextcloud, owncloud |
| **Медиасервер** | mediaserver — Plex, Sonarr, Radarr, Lidarr, Bazarr, Prowlarr + Hysteria2, Overseerr, Transmission, Samba |
| **VPN / Прокси** | hysteria2-server, splitgw — прозрачный split-tunnel gateway (sing-box + Hysteria2 TPROXY, YouTube → прокси) |
| **Ingress Proxy** | ingress-proxypass — проксировать внешние сервисы (IP:PORT) через ingress-nginx по домену |
Все аддоны включаются флагами в `group_vars/all/addons.yml`. Установка: `make addon-<name>`.
Для сервисов с БД/кэшем добавлены явные режимы подключения:
- `*_database_mode`: `auto` / `internal` / `external_postgresql`
- `*_redis_mode`: `auto` / `internal` / `external_redis``disabled` для Authelia)
## Документация
| Раздел | Описание |
|---|---|
| [Быстрый старт](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/custom-addons.md) | Как добавить и подключить собственный аддон (роль, плейбук, make, Molecule) |
| [Решение проблем](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