← [Главная](../README.md)

# 10 — Деплой и инфраструктура

## Цель

Понять путь от **кода до production**: контейнеры, оркестрация в Kubernetes, **CI/CD** и **GitOps**, а также **Infrastructure as Code** (Terraform) — как единый язык для архитектора и команды эксплуатации.

## Предварительно

- [Раздел 09 — Тестирование](../09-testing/README.md)
- Базовый Linux: файлы, процессы, сеть
- Git: ветки, pull request

## Время

**8–12 часов**

---

## 12-factor и облако

Приложение для облака:

- конфиг в **environment**, не в образе;
- логи в **stdout**;
- процессы **stateless**;
- админ-задачи — **one-off** jobs;
- **graceful shutdown**.

Нарушение любого пункта усложняет Kubernetes и autoscaling.

---

## Оглавление раздела

| Страница | Содержание |
|----------|------------|
| [kontejnery-i-docker.md](kontejnery-i-docker.md) | Образы, Dockerfile, registry, безопасность |
| [kubernetes-bazovo.md](kubernetes-bazovo.md) | Pod, Deployment, Service, Ingress, HPA |
| [ci-cd-i-gitops.md](ci-cd-i-gitops.md) | Pipeline, Argo CD / Flux, стратегии выката |
| [terraform-iac.md](terraform-iac.md) | IaC, state, модули, окружения |

---

## Карта поставки

```mermaid
flowchart LR
  Dev[Код] --> CI[CI pipeline]
  CI --> Image[Container image]
  Image --> Reg[Registry]
  Reg --> CD[GitOps / CD]
  CD --> K8s[Kubernetes]
  TF[Terraform] --> Cloud[Сеть, БД, IAM]
  Cloud --> K8s
```

---

## Окружения

| Окружение | Назначение | Данные |
|-----------|------------|--------|
| dev | Эксперименты | Синтетика |
| staging | Предпрод, тесты | Маскированная копия |
| production | Пользователи | Реальные |

**Паритет** staging ↔ prod по версии k8s и размеру (не обязательно 1:1 по железу, но без сюрпризов типа «только в prod есть Redis cluster»).

---

## Версионирование

- Образ: `myapp:1.4.2` или git sha `myapp:abc1234` — **не** `latest` в prod.
- Инфраструктура: теги Terraform модулей, lock file провайдеров.
- Манифесты k8s: в Git, reviewed как код.

---

## Практика на 20 минут

Нарисуйте pipeline для своего учебного сервиса: три обязательных шага CI и два шага CD. Отметьте, где rollback.

---

## Самопроверка

1. Назовите три принципа 12-factor, важных для k8s.
2. Чем CI отличается от CD?
3. Зачем отдельный container registry?
4. Что такое паритет окружений?

---

## Дальше

→ [Контейнеры и Docker](kontejnery-i-docker.md)  
← [Раздел 09](../09-testing/README.md)
