PPPRP_HW1
12 дней назад
12 дней назад
12 дней назад
12 дней назад
12 дней назад
12 дней назад
12 дней назад
README.md
PPPRP_HW1
Домашнее задание: Развёртывание распределённой системы логирования и хранения с резервным копированием
-
Создать пользовательское веб-приложение (API)
Приложение должно реализовать следующие REST-эндпоинты:— возвращает строкуGET /"Welcome to the custom app"— возвращает JSONGET /status{"status": "ok"}— принимает JSONPOST /logи записывает его в файл{"message": "some log"}/app/logs/app.log— возвращает содержимое файлаGET /logs/app/logs/app.log
Приложение должно:
- Писать логи в /app/logs/app.log
- Использовать конфигурационные параметры (например, уровень логирования, порт, заголовок приветствия) из ConfigMap
-
Развернуть приложение как Pod для начального теста
- Написать Dockerfile для приложения
- Создать Pod, монтирующий:
volume вemptyDir/app/logs- ConfigMap с настройками в
(или через переменные окружения)/app/config
-
Развернуть приложение как Deployment
- Создать Deployment с 3 репликами
- Настроить монтирование
для логовemptyDir - Обновить Deployment, чтобы изменения в ConfigMap автоматически применялись
- Проверить через Service и
, что API работаетkubectl port-forward
-
Создать Service для балансировки нагрузки
- ClusterIP-сервис, направляющий трафик на поды приложения
- Проверить:
иcurl http://<service-name>/logscurl -X POST http://<service-name>/log -d '{"message": "test"}' - Убедиться, что запросы распределяются между подами
-
Развернуть DaemonSet с log-agent
- DaemonSet должен:
- Быть запущен на каждом узле
- Собирать логи приложения из подов (через
илиhostPath, при наличии доступа)emptyDir - Перенаправлять логи во stdout или сохранять локально на узле
- Проверить, что
содержит записи изkubectl logs <log-agent-pod>app.log
- DaemonSet должен:
-
Развернуть CronJob для архивирования логов
- CronJob должен запускаться раз в 10 минут
- Команда: tar -czf /tmp/app-logs-<timestamp>.tar.gz /app/logs/
- Логи берутся с сервисов приложения через HTTP API
(например,/logs) или из общей директории, если доступнаcurl - Результат сохраняется в контейнере в
(внутри пода CronJob)/tmp
-
Создать единый bash-скрипт
для автоматического развёртывания всей системыdeploy.sh- Скрипт должен:
- Создавать все необходимые ConfigMap, Pod, Deployment, Service, DaemonSet, StatefulSet, CronJob и другие объекты
- Использовать команды
с заранее подготовленными YAML-файламиkubectl apply -f - Ожидать готовности ключевых компонентов
- В README.md проекта добавьте команду для запуска скрипта из терминала
- Скрипт должен: