// Практика · учебные проекты

Проверьте сами: стенды отвечают вживую


Пять учебных заданий: от SQL и скриптов до Kubernetes, конвейера и мониторинга. Все развёрнуты на втором контуре. У каждого — проверки из задания: нажмите «Выполнить», и страница спросит стенд и покажет его настоящий ответ, а не заготовку.

Занятия проходят по видеосвязи: meet.lab.aidyn.stream — откройте ссылку, введите название комнаты, которое даст преподаватель, и разрешите камеру и микрофон. Регистрация не нужна.

Прогон проверок

Агент готов пройти все пять заданий

ответы берутся со стендов вживую

ждёт
  1. 01 Flask + PostgreSQL
  2. 02 Короткие ссылки
  3. 03 Docker Swarm
  4. 04 Корпоративный портал
  5. 05 Финальный Kubernetes
Журнал прогона ждёт
Нажмите «Запустить прогон»: агент пройдёт по заданиям, а здесь появятся команды и ответы стендов.

Сейчас

—

проверено
0
пройдено
0
не пройдено
0
время
0,0 с

Инструменты

Чем пользовался и в каких заданиях

Инструмент 0102030405
Linux и Bash
Скрипты с проверкой аргументов и кодами возврата дада
cron и таймеры systemd дада
SSH только по ключам, firewall ufw дада
Сертификаты и openssl да
Базы данных
PostgreSQL: схема, индексы, планы запросов да
Резервная копия и восстановление да
Redis дада
Контейнеры
Dockerfile: сборка в два этапа, запуск не от root дададада
Docker Compose дада
Свой реестр образов и Harbor дадада
Docker Swarm да
Kubernetes
Deployment, Service, Ingress дададада
StatefulSet и постоянные тома дададада
ConfigMap и Secret дададада
RBAC дадада
HPA да
k3s, k3d, Kustomize дада
Автоматизация
Ansible: плейбуки, роли, обработчики дадада
Ansible Vault да
Terraform: VPC, EKS, RDS, ECR да
Git и CI/CD
GitLab CI: сборка, тесты, выкат дадада
Тесты и проверки кода: pytest, flake8, shellcheck, yamllint, ansible-lint дада
Обновление и откат версии дада
Ветки, merge request, теги да
Наблюдаемость
Prometheus и правила оповещений дада
Grafana дада
Loki и Promtail да
Разбор сбоев дада

01 Большое DevOps-задание

Flask, PostgreSQL и Redis: от SQL до мониторинга

загрузка…

Одно приложение проходит весь путь: база и запросы, образ, Compose, Kubernetes, конвейер с тестами и автоматическим откатом, Terraform для AWS, метрики и журналы.

Сборка

GitLab CIflake8 · pytest · образ
Harborтег = хеш коммита

Вход

Ingressdevops-test.lab.local
LoadBalancer80 → 5000

Приложение

Flask2–5 подов
HPA50% процессора

Данные

PostgreSQL 14том 10 ГиБ
Redisкэш и счётчик

Наблюдение

Prometheus4 цели
Lokiжурнал в JSON
проверка пройдена не пройдена не проверяется со страницы
  • Десять SQL-запросов, у каждого сохранён план выполнения и разбор индексов
  • Скрипты слежения за ресурсами и проверки сроков сертификатов
  • Образ на Alpine: 91 МБ при пороге 200 МБ, процесс не от root
  • Docker Compose из четырёх сервисов, наружу открыт только Nginx
  • Kubernetes: том 10 ГиБ под базу, Ingress, HPA от 2 до 5 реплик
  • Конвейер: flake8, сборка, pytest с настоящими базой и Redis, покрытие 99%, выкат в кластер
  • Автоматический откат: нездоровая версия возвращена сама, сайт ответил на 94 запроса из 94
  • HPA под нагрузкой поднял число реплик с 2 до 5 за минуту
  • Terraform: модули VPC, EKS, RDS и ECR проходят validate
  • Prometheus, Grafana, Loki и Promtail в кластере

Оговорка. Terraform только проверен командой validate — учётной записи AWS для задания нет. Уведомления в Slack не отправлялись: адрес канала не задан.

  • PostgreSQL
  • Redis
  • Flask
  • Docker Compose
  • Kubernetes
  • HPA
  • GitLab CI
  • Terraform
  • Prometheus
  • Grafana
  • Loki

Репозиторий: infrastructure/devops-test — вход по приглашению

Проверки из задания

02 Итоговый проект курса

загрузка…

Маленькое приложение, вокруг которого собрано всё остальное: свой реестр образов, роль Ansible, кластер k3d, конвейер, мониторинг и разбор двух сбоев.

Вход

front1 · Nginxперед Compose
front2 · Nginxперед k3d

Сервис

Docker Composeприложение + база
k3d2 пода, Ingress

Данные

PostgreSQL 16том, резервные копии
Свой registryv0.1.0 → v1.0.0

Наблюдение

Prometheusоповещения
Grafana3 панели
проверка пройдена не пройдена не проверяется со страницы
  • Стенд поднимается с нуля одной командой и сам проверяет созданную ссылку
  • Данные переживают остановку стека и удаление пода базы
  • Роль Ansible готовит фронтовые узлы; повторный прогон ничего не меняет
  • Обновление без потерь: 350 запросов из 350 во время выката
  • Сбой с остановленной базой замечен по оповещению Prometheus за 1 мин 41 с
  • Сбой с заниженным лимитом памяти: сервис продолжал отвечать, причина найдена по описанию пода

Оговорка. Проект собран за один день, а не за четыре учебные недели: недельных отчётов нет.

  • Python
  • PostgreSQL
  • Docker Compose
  • registry
  • Ansible
  • Vault
  • k3d
  • Kustomize
  • Prometheus
  • Grafana

Репозиторий: infrastructure/shortlink — вход по приглашению

Проверки из задания

03 Docker Swarm

Кластер Swarm с тремя репликами

загрузка…

Свой образ Nginx работает сервисом в три реплики за overlay-сетью на трёх узлах. Серверы готовит и кластер собирает один плейбук Ansible.

Управление

infra-01Ansible

Кластер

managerlab-ai-2
worker 1lab-ai
worker 2виртуальная машина

Сервис

demo_web3 реплики, порт 80
overlay-сеть10.200.0.0/16
проверка пройдена не пройдена не проверяется со страницы
  • Плейбук ставит Docker, настраивает firewall, собирает кластер и разворачивает сервис
  • Порты кластера открыты только соседним узлам
  • Отказ контейнера: Swarm вернул третью реплику за 17 секунд, сайт отвечал всё время
  • Отказ worker: задачи переехали на оставшиеся узлы за 25–30 секунд, сайт отвечал всё время
  • Три узла: manager и два worker, по одной реплике на каждом

Оговорка. Второй worker — виртуальная машина на сервере manager, а не отдельный сервер: отказ этого сервера уносит сразу два узла из трёх.

  • Docker Swarm
  • Ansible
  • overlay
  • ufw
  • Nginx

Репозиторий: infrastructure/swarm-mini-project — вход по приглашению

Проверки из задания

04 Kubernetes · промежуточный проект

Корпоративный портал

загрузка…

Nginx в три реплики за Ingress, настройки из ConfigMap, обязательный секрет, Redis в StatefulSet с томом и две роли с разными правами.

Вход

Ingressportal.company.local
ServiceClusterIP

Приложение

Nginx3 реплики
ConfigMap · Secretнастройки и пароль

Данные

RedisStatefulSet, 2 ГиБ

Доступ

viewer · operatorRole + RoleBinding
проверка пройдена не пройдена не проверяется со страницы
  • Значения из ConfigMap видны на странице и в заголовках ответа
  • Без секрета под не запускается
  • Данные Redis переживают пересоздание пода
  • Роль viewer только читает, operator управляет Deployment; секреты закрыты обеим
  • Deployment
  • ClusterIP
  • Ingress
  • ConfigMap
  • Secret
  • PVC
  • StatefulSet
  • RBAC

Репозиторий: infrastructure/company-portal — вход по приглашению

Проверки из задания

05 Kubernetes · финальный проект

Свой образ и развёртывание через Ansible

загрузка…

Собственный образ Nginx, PostgreSQL в StatefulSet с паролем из секрета, роли student-viewer и student-deployer. Всё разворачивает один плейбук.

Сборка

GitLab CIсвой образ Nginx
Ansibleразвёртывание

Вход

Ingressdevops-project.lab.local
ServiceClusterIP

Приложение

Nginx3 реплики

Данные

PostgreSQLStatefulSet, 1 ГиБ

Доступ

student-viewer · deployerServiceAccount
проверка пройдена не пройдена не проверяется со страницы
  • Образ собирает конвейер GitLab и кладёт в реестр контура
  • Один плейбук разворачивает всё; повторный запуск ничего не меняет
  • Пароль базы создаётся при первом запуске и не попадает ни в Git, ни в журнал
  • Данные PostgreSQL переживают пересоздание пода
  • Dockerfile
  • GitLab CI
  • Ansible
  • Deployment
  • Ingress
  • Secret
  • PVC
  • StatefulSet
  • RBAC

Репозиторий: infrastructure/k8s-final-project — вход по приглашению

Проверки из задания

Проверки только читают состояние: ничего не создают и не меняют. Значения секретов стенды странице не отдают.