An open API service indexing awesome lists of open source software.

https://github.com/rees46/challenge

Challenge Repo
https://github.com/rees46/challenge

Last synced: 5 months ago
JSON representation

Challenge Repo

Awesome Lists containing this project

README

          

# Тестовое задание для 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.
2. GitHub Actions → SSH на локальный сервер:
- В воркфлоу добавляешь шаги с SSH-доступом к локальному серверу.
- Через SSH выполняешь команды Terraform и Ansible.
3. GitHub Repository Dispatch для триггеров:
- Локальный сервис слушает события из GitHub через Webhooks и триггерит развертывание.

---

## Мониторинг и Логи
- **Prometheus + Grafana** — мониторинг всех сервисов.
- **Loki** — сбор и хранение логов.

---

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

---

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

---

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

---