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

7.0 KiB
Raw Permalink Blame History

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)

Аддоны (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_redisdisabled для Authelia)

Документация

Раздел Описание
Быстрый старт Полная установка с нуля (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 тесты Тестирование ролей, написание тестов
Свои аддоны Как добавить и подключить собственный аддон (роль, плейбук, 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