Skip to content

rees46/challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Тестовое задание для DevOps: Локальный кластер на Bare-Metal

Основные требования к стеку

  • Bare-metal: Развёртывание на локальных серверах/машинах без использования облаков.
  • Terraform: Подготовка инфраструктуры (VM, сеть, storage) через IaC.
  • Ansible: Постконфигурация серверов и кластеров.

Окружение

Kubernetes

  • Развёртывание через kubeadm или k3s с High Availability (несколько control-plane и worker-ноды).
  • CNI: Calico или Cilium.
  • MetalLB для LoadBalancer внутри локалки.
  • Istio в качестве Service Mesh.

ClickHouse

  • Настройка кворума (HA-конфигурация).
  • Обеспечение сетевой доступности между инстансами.

Elasticsearch

  • Настройка кластера с репликами.
  • Конфигурирование heap size и refresh_interval.

PostgreSQL

  • Настройка кластера с репликацией (Patroni или репликация на уровне Postgres).
  • Хранение данных в распределённом хранилище (Ceph или Longhorn).

Service Mesh

  • Istio с настройкой ingress gateway.
  • RBAC-политики для ограничения доступа к сервисам.

RBAC

  • Конфигурация ролей и биндов согласно принципу минимальных привилегий.
  • Запрет доступа к control-plane для пользователей.

Хранилище

  • Ceph или Longhorn для распределённого хранения данных.

Безопасность

  • Sealed Secrets для хранения секретов.
  • Network Policies для ограничения трафика между namespace'ами.

CI/CD - тут есть несколько вариантов, можно выбрать любой или придумать свой

  1. GitHub Actions + Self-Hosted Runner:
  • Поднимаешь self-hosted runner на локальной машине.
  • Runner выполняет Terraform и Ansible для развёртывания.
  • Доступ к Kubernetes, ClickHouse и другим сервисам — через локальный runner.
  1. GitHub Actions → SSH на локальный сервер:
  • В воркфлоу добавляешь шаги с SSH-доступом к локальному серверу.
  • Через SSH выполняешь команды Terraform и Ansible.
  1. GitHub Repository Dispatch для триггеров:
  • Локальный сервис слушает события из GitHub через Webhooks и триггерит развертывание.

Мониторинг и Логи

  • Prometheus + Grafana — мониторинг всех сервисов.
  • Loki — сбор и хранение логов.

Условия сдачи задания

  1. В репозитории должны быть Terraform и Ansible-плейбуки для полного развёртывания инфраструктуры.
  2. Kubernetes-кластер должен быть готов к запуску приложений.
  3. Документация с описанием:
    • Минимальные требования к железу.
    • Последовательность развёртывания.
    • Проверка доступности сервисов.

Требования к оформлению репозитория

  • README.md с кратким описанием и инструкцией по запуску.
  • Отдельные каталоги для Terraform и Ansible.
  • Структура файлов должна быть логичной и читаемой.

Критерии оценки

  • Полнота и корректность развёртывания всех компонентов.
  • Читаемость и поддерживаемость кода.
  • Соответствие best practices для Terraform и Ansible.
  • Работа кластера без ошибок и сбоев после перезапуска.

Releases

No releases published

Packages

No packages published