# Kubernetes — учебный курс с нуля до Senior

Добро пожаловать в **полный курс по Kubernetes** на русском языке. Материал ведёт от **нулевых знаний** через **Junior** и **Middle** к уровню **Senior / Platform Engineer**: архитектура, все ключевые компоненты, production-практики, проектирование платформы, DR и SRE.

> **Как читать:** идите **по этапам** — не перескакивайте уровни. В каждой папке `README.md` — оглавление. На страницах: **Уровень**, **Цель**, **Предварительно**, **Время**, **Самопроверка**.

---

## Публикация и просмотр

| | |
|--|--|
| **Viewer** | https://docs.nazeebo.site/kubernetes |
| **Git** | `Kubernetes/` в [docs-nazeebo-site](https://github.com/muroed/docs-nazeebo-site) |
| **Обновление** | `git push` в `main` — viewer подтянет изменения автоматически |

### Локальный просмотр

```bash
git clone https://github.com/muroed/gitmd-viewer.git
export GIT_REPO_PATH=/path/to/docs-nazeebo-site
export GIT_ROOT=Kubernetes
export DOCS_TITLE=Kubernetes
make -C gitmd-viewer run
```

---

## Поэтапная карта: 0 → Junior → Middle → Senior

Общая оценка: **320–520 часов** (12–18 месяцев при 6–10 ч/нед).

| Этап | Разделы | Уровень | Часы | Что получите |
|------|---------|---------|------|--------------|
| 0 | [00 — Карта пути](00-karta-puti/README.md) | навигация | 4–6 | План, окружение, контрольные точки |
| 1 | [01 — Уровень 0](01-uroven-0/README.md) | **0** | 20–40 | Контейнеры, Linux, сеть, YAML, облако |
| 2 | [02–04 — Junior](02-junior/README.md) | **Junior** | 80–120 | Архитектура, **все компоненты**, 5 lab |
| 3 | [10–12 — Middle](10-middle/README.md) | **Middle** | 100–160 | HPA, CNI, RBAC, GitOps, troubleshooting |
| 4 | [20–22 — Senior](20-senior/README.md) | **Senior** | 120–200 | HA design, operators, DR, SRE, capstone |
| ∞ | [99 — Справочник](99-spravochnik/README.md) | все | — | Глоссарий, cheat sheets |

```mermaid
flowchart TB
  Z[01 Уровень 0] --> J[02-04 Junior]
  J --> M[10-12 Middle]
  M --> S[20-22 Senior]
  S --> R[99 Справочник]
```

---

## Структура по папкам

| Папка | Содержание |
|-------|------------|
| `00-karta-puti` | Маршрут, критерии перехода между уровнями |
| `01-uroven-0` | Фундамент до Kubernetes |
| `02-junior` | Теория: что такое K8s, архитектура, kubectl |
| `03-junior-komponenty` | **22 компонента** (apiserver → NetworkPolicy) |
| `04-junior-praktikum` | Labs 01–05, sidecar/init |
| `10-middle` | Scheduling, CNI, security, observability, GitOps |
| `11-middle-komponenty` | HPA, PDB, CRD, Gateway API, CSI |
| `12-middle-praktikum` | HPA, NetworkPolicy, Argo CD labs |
| `20-senior` | Cluster design, mesh, DR, SRE, cost |
| `21-senior-komponenty` | apiserver APF, webhooks, etcd ops, GPU |
| `22-senior-praktikum` | Capstone, etcd backup, operator lab |
| `99-spravochnik` | Глоссарий, шпаргалки |

---

## Критерии уровней

| Уровень | Вы умеете |
|---------|-----------|
| **0** | Docker build/run; читать YAML; понимать IP/DNS |
| **Junior** | Deployment + Service + Ingress; объяснить lifecycle Pod; все базовые объекты API |
| **Middle** | HPA, NetworkPolicy, PDB; GitOps; root cause за 30 мин |
| **Senior** | HA topology; etcd DR; operator/CRD; platform design doc; SLO/error budget |

---

## Все компоненты (Junior + Middle + Senior)

**Junior** ([03-junior-komponenty](03-junior-komponenty/README.md)): kube-apiserver, etcd, scheduler, controllers, kubelet, kube-proxy, runtime, Pod, Deployment, ReplicaSet, StatefulSet, DaemonSet, Job/CronJob, Service, Ingress, ConfigMap, Secret, PV/PVC, Namespace, Labels, NetworkPolicy.

**Middle** ([11-middle-komponenty](11-middle-komponenty/README.md)): HPA, PDB, ResourceQuota, EndpointSlice, IngressClass, StorageClass/CSI, PriorityClass, CRD.

**Senior** ([21-senior-komponenty](21-senior-komponenty/README.md)): apiserver advanced, admission webhooks, scheduler profiles, etcd operations, RuntimeClass, device plugins, volume snapshots, API aggregation.

---

## С чего начать

1. [00 — Карта пути](00-karta-puti/README.md)
2. [01 — Контейнеры и образы](01-uroven-0/konteynery-i-obrazy.md)
3. После Junior: [Lab 01](04-junior-praktikum/lab-01-pod.md)

→ Начать: [00 — Карта пути](00-karta-puti/README.md)
