Тема: сущности Kubernetes для веб-API (см. ../../../theory/software-engineering.md → «Сущности Kubernetes»).
Задача целиком операционная: взять готовую hello-world апишку, завернуть её в Docker,
описать k8s-манифесты и поднять в minikube. Дано только app.py — всё
остальное пишешь сам.
Запрос снаружи кластера доходит до пода с апишкой:
curl http://<minikube>/ -> {"message": "hello world"}
curl http://<minikube>/healthz -> {"status": "ok"}
Dockerfile для app.py (base python:3.12-slim, ставит fastapi+uvicorn,
запускает uvicorn app:app --host 0.0.0.0 --port 8000).docker build -t hello-api:0.1 . затем
docker run -p 8000:8000 hello-api:0.1 и curl localhost:8000/.minikube image load hello-api:0.1
(или собери прямо в докере minikube через eval $(minikube docker-env)).Опиши в k8s/ (по файлу на объект или один multi-doc yaml):
hello-api:0.1, imagePullPolicy: IfNotPresent,
liveness/readiness пробы на /healthz.GREETING, прокинь её в контейнер через envFrom/env
(проверь, что ответ / меняется на заданный текст).ClusterIP) — стабильная точка доступа к подам внутри кластера.minikube addons enable ingress.Примени: kubectl apply -f k8s/ и убедись, что поды Running (kubectl get pods).
minikube ip + правило ingress → curl http://<ip>/ возвращает greeting.kubectl delete pod <name>) — Deployment должен поднять новый,
сервис остаётся доступен.NodePort/LoadBalancer?