- Bare-metal: Развёртывание на локальных серверах/машинах без использования облаков.
- Terraform: Подготовка инфраструктуры (VM, сеть, storage) через IaC.
- Ansible: Постконфигурация серверов и кластеров.
- Развёртывание через
kubeadm
илиk3s
с High Availability (несколько control-plane и worker-ноды). - CNI: Calico или Cilium.
- MetalLB для LoadBalancer внутри локалки.
- Istio в качестве Service Mesh.
- Настройка кворума (HA-конфигурация).
- Обеспечение сетевой доступности между инстансами.
- Настройка кластера с репликами.
- Конфигурирование heap size и refresh_interval.
- Настройка кластера с репликацией (Patroni или репликация на уровне Postgres).
- Хранение данных в распределённом хранилище (Ceph или Longhorn).
- Istio с настройкой ingress gateway.
- RBAC-политики для ограничения доступа к сервисам.
- Конфигурация ролей и биндов согласно принципу минимальных привилегий.
- Запрет доступа к control-plane для пользователей.
- Ceph или Longhorn для распределённого хранения данных.
- Sealed Secrets для хранения секретов.
- Network Policies для ограничения трафика между namespace'ами.
- GitHub Actions + Self-Hosted Runner:
- Поднимаешь self-hosted runner на локальной машине.
- Runner выполняет Terraform и Ansible для развёртывания.
- Доступ к Kubernetes, ClickHouse и другим сервисам — через локальный runner.
- GitHub Actions → SSH на локальный сервер:
- В воркфлоу добавляешь шаги с SSH-доступом к локальному серверу.
- Через SSH выполняешь команды Terraform и Ansible.
- GitHub Repository Dispatch для триггеров:
- Локальный сервис слушает события из GitHub через Webhooks и триггерит развертывание.
- Prometheus + Grafana — мониторинг всех сервисов.
- Loki — сбор и хранение логов.
- В репозитории должны быть Terraform и Ansible-плейбуки для полного развёртывания инфраструктуры.
- Kubernetes-кластер должен быть готов к запуску приложений.
- Документация с описанием:
- Минимальные требования к железу.
- Последовательность развёртывания.
- Проверка доступности сервисов.
- README.md с кратким описанием и инструкцией по запуску.
- Отдельные каталоги для Terraform и Ansible.
- Структура файлов должна быть логичной и читаемой.
- Полнота и корректность развёртывания всех компонентов.
- Читаемость и поддерживаемость кода.
- Соответствие best practices для Terraform и Ansible.
- Работа кластера без ошибок и сбоев после перезапуска.