https://github.com/rees46/challenge
Challenge Repo
https://github.com/rees46/challenge
Last synced: 5 months ago
JSON representation
Challenge Repo
- Host: GitHub
- URL: https://github.com/rees46/challenge
- Owner: rees46
- License: bsd-3-clause
- Created: 2025-02-22T20:27:47.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-22T20:36:00.000Z (over 1 year ago)
- Last Synced: 2025-02-22T21:26:56.655Z (over 1 year ago)
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.
- Работа кластера без ошибок и сбоев после перезапуска.
---