Оформить опыт с Gitea CI-раннерами в легенду и docker-кейс

Реальная настройка self-hosted CI Gitea Actions (починка раннера из
restart-loop, кастомный cross-builder под ARM) вписана в опыт АО ТНИИС:
LEGEND.md/STORY.md — расширены строки Gitea/Docker и раздел про два
CI-инструмента отдела, docker/CASE.md — новый раздел 9 с
воспроизводимыми фрагментами, ci-cd/CASE.md — ссылка на реальный кейс.

SERVER.md/PROGRESS.md актуализированы: исправлена ошибочная запись
про порт 3000 (это Grafana, не Gitea) и добавлен чек-лист, что нельзя
ломать в CI-инфраструктуре сервера при прохождении курса Kubernetes.
This commit is contained in:
Tot Maxim
2026-07-18 15:06:57 +03:00
parent 8f431e4798
commit 40ff73f647
8 changed files with 907 additions and 4 deletions

View File

@@ -0,0 +1,58 @@
# Прогресс прохождения курса Kubernetes
Живой журнал, а не справочник — обновляется в конце каждой сессии по курсу. Цель: за 30 секунд понять, где остановился, и продолжить без перечитывания всего [LEARNING.md](LEARNING.md). Окружение и бенчмарки — в [SERVER.md](SERVER.md), построчный разбор каждой выполненной команды (что делает каждый аргумент, что значит ответ) — в [COMMANDS.md](COMMANDS.md); сюда их не дублировать.
## Статус модулей
| Модуль | Тема | Статус | Дата |
|---|---|---|---|
| 0 | Установка инструментов | ✅ Пройден | 2026-07-18 |
| 1 | Зачем вообще Kubernetes | ✅ Пройден (как смоук-тест наладки) | 2026-07-18 |
| 2 | Архитектура кластера | ⬜ Не начат | |
| 3 | Pod и kubectl-база | ⬜ Не начат | |
| 4 | Deployment и ReplicaSet | ⬜ Не начат | |
| 5 | Service и сеть | ⬜ Не начат | |
| 6 | Ingress | ⬜ Не начат | |
| 7 | ConfigMap и Secret | ⬜ Не начат | |
| 8 | Probes и ресурсы | ⬜ Не начат | |
| 9 | Диагностика поломок | ⬜ Не начат | |
| 10 | Хранилище: PV, PVC, StatefulSet | ⬜ Не начат | |
| 11 | Helm, часть 1 — пользователь чартов | ⬜ Не начат | |
| 12 | Helm, часть 2 — автор чарта | ⬜ Не начат | |
| 13 | Как это устроено в реальных проектах | ⬜ Не начат | |
| — | Выходной контроль (QUESTIONS.md + 2 схемы) | ⬜ Не начат | |
## Лог по датам
### 2026-07-18 — наладка окружения на сервере + модуль 0 + модуль 1
Сделано:
- Сервер `totserver@192.168.31.163` обновлён (`apt upgrade`), перезагружен, добавлены sysctl-лимиты inotify (524288/512) для kind.
- Установлены `kind` v0.32.0 и `helm` v3.21.3 в `~/.local/bin` (без sudo). `kubectl` уже был через snap (1.35.6), `docker` уже стоял (обновился до 29.6.2 при апгрейде).
- Сняты бенчмарки CPU/RAM/диска и практический замер подъёма kind-кластера — см. [SERVER.md](SERVER.md). Вердикт: сервер тянет весь курс с запасом.
- Поднят кластер `kind create cluster --name lab` (1-нодовый, дефолтный) — пройдена практика модуля 1: self-healing пода через Deployment продемонстрирован (под пересоздался с новым именем после `kubectl delete pod`).
- Deployment `demo` удалён после демонстрации (как требует практика модуля 1).
- Проверено: Gitea/Postgres/file-server не пострадали от ребута и от работы kind-кластера рядом (все healthy, отвечают на запросы).
- Создан [SERVER.md](SERVER.md) — окружение, бенчмарки, адаптации курса под сервер по модулям.
- Создан [COMMANDS.md](COMMANDS.md) — построчный разбор каждой выполненной команды этой сессии (задача → аргументы → ответ → значение), чтобы можно было повторить любой шаг самостоятельно.
Осталось на следующую сессию:
- Начать с **модуля 2** — пересоздать кластер `lab` с топологией 1 control-plane + 2 worker через `kind-config.yaml`. **Важно**: сразу добавить `extraPortMappings` (8080→80, 8443→443) из [SERVER.md](SERVER.md#модуль-2--топология-кластера), чтобы не пересоздавать кластер повторно в модуле 6.
Затыки: нет (модуль 0 и смоук-тест прошли гладко).
## Состояние кластера прямо сейчас
- Кластер `lab` **существует**, 1-нодовый (control-plane, без workers), создан дефолтной командой `kind create cluster --name lab` — это ещё не топология из модуля 2.
- Namespace `demo` и `monitoring`**не созданы**.
- В кластере ничего не развёрнуто (deployment `demo` из смоук-теста удалён).
- Перед модулем 2 кластер будет пересоздан командой из курса (`kind delete cluster --name lab` + `kind create cluster --name lab --config kind-config.yaml`) — это ожидаемо и совпадает с шагами модуля 2, ничего вручную чистить не нужно.
## Открытые вопросы / затыки
Пока пусто — появятся, если самопроверка какого-то модуля не пройдёт с первого раза.
## Вне периметра курса (не забыть)
- `gitea_runner` был в restart-loop (`unregistered runner`, обнаружено 2026-07-18 при проверке после ребута) — **починено в тот же день** (чистая перерегистрация). Дополнительно поднят второй CI-раннер `gitea_runner_armhf` (cross-builder для ARM) под реальный проект `maxim/Pluto-SDR`; все 4 CI-workflow зелёные. Разбор — [../docker/CASE.md](../docker/CASE.md) → раздел 9.
- **Перед каждой сессией курса** сверяться с чек-листом [«CI-инфраструктура на сервере — что нельзя ломать»](SERVER.md#ci-инфраструктура-на-сервере--что-нельзя-ломать) в SERVER.md — там же актуальный список занятых портов (3000/3030/222/4400/9090).