Sergey Antropoff 404347b535 feat: добавить аддон yandex-dns-controller — управление DNS Yandex 360
CronJob (*/5 мин) reconcile ConfigMap → Yandex 360 DNS API.
Safe mode: управляет только записями с managed: true.
Никогда не удаляет неуправляемые записи (MX, DKIM, SPF и т.д.).

Удаление только при двух условиях одновременно:
  1. Запись была создана контроллером (есть в state ConfigMap)
  2. Запись полностью удалена из ConfigMap (не просто managed: false)

Переключение managed: true → false = release без удаления из DNS.

API: /directory/v1/org/{org_id}/domains/{domain}/dns
Fields: A→content, CNAME→target, TXT→text, MX→exchange+preference
2026-04-26 12:16:32 +03:00
2026-04-17 08:37:27 +03:00
2026-04-17 08:37:27 +03:00
2026-04-17 08:37:27 +03:00
2026-04-17 08:37:27 +03:00
2026-04-17 08:58:26 +03:00
2026-04-17 08:37:27 +03:00
2026-04-17 08:37:27 +03:00

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)

Аддоны (37)

Категория Аддоны
Сеть 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
Медиасервер mediaserver — Plex, Sonarr, Radarr, Lidarr, Bazarr, Prowlarr + Hysteria2, Overseerr, Transmission, Samba
VPN / Прокси 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>.

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

Раздел Описание
Быстрый старт Полная установка с нуля (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
No description provided
Readme 1.9 MiB
Languages
Jinja 56.1%
Makefile 20%
Python 10.7%
Shell 7.7%
Smarty 3.8%
Other 1.7%