From e990a21458a39b072d192cef91fb27dcb266bf5a Mon Sep 17 00:00:00 2001
From: Tot Maxim
Date: Sat, 18 Jul 2026 23:44:30 +0300
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=BA=D0=B0=20=D0=A1=D0=9A=D0=92?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 10 ++++++++++
AI_GUIDELINES.md | 1 +
stack/kubernetes/COMMANDS.md | 2 +-
stack/kubernetes/PROGRESS.md | 16 ++++++++--------
stack/kubernetes/SERVER.md | 4 ++--
5 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/.gitignore b/.gitignore
index 4c5f206..78c9530 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,11 @@
.claude/
+
+# OS
+.DS_Store
+Thumbs.db
+
+# Editor temp files
+*.swp
+*.swo
+*~
+.env
diff --git a/AI_GUIDELINES.md b/AI_GUIDELINES.md
index 091c78e..acddadd 100644
--- a/AI_GUIDELINES.md
+++ b/AI_GUIDELINES.md
@@ -41,6 +41,7 @@
- Все документы — на русском, в markdown.
- Ответы на вопросы в `QUESTIONS.md` — от первого лица, разговорным языком, как кандидат реально бы ответил, с опорой на кейс. Не копировать формулировки из документации слово в слово.
- Без канцелярита и не заученно — если ответ звучит как выученный наизусть параграф, это плохой ответ и его надо переписать.
+- Все даты в тексте записываются в формате `dd-mm-yyyy` (например, `18-07-2026`), а не `yyyy-mm-dd` или другими способами.
## Куда идти
diff --git a/stack/kubernetes/COMMANDS.md b/stack/kubernetes/COMMANDS.md
index 7f3c5e7..d34402a 100644
--- a/stack/kubernetes/COMMANDS.md
+++ b/stack/kubernetes/COMMANDS.md
@@ -13,7 +13,7 @@
---
-## 2026-07-18
+## 18-07-2026
### 0. SSH-обвязка (используется почти во всех командах ниже)
diff --git a/stack/kubernetes/PROGRESS.md b/stack/kubernetes/PROGRESS.md
index 53878c4..d79fab2 100644
--- a/stack/kubernetes/PROGRESS.md
+++ b/stack/kubernetes/PROGRESS.md
@@ -6,10 +6,10 @@
| Модуль | Тема | Статус | Дата |
|---|---|---|---|
-| 0 | Установка инструментов | ✅ Пройден | 2026-07-18 |
-| 1 | Зачем вообще Kubernetes | ✅ Пройден (как смоук-тест наладки) | 2026-07-18 |
-| 2 | Архитектура кластера | ✅ Пройден | 2026-07-18 |
-| 3 | Pod и kubectl-база | ✅ Пройден | 2026-07-18 |
+| 0 | Установка инструментов | ✅ Пройден | 18-07-2026 |
+| 1 | Зачем вообще Kubernetes | ✅ Пройден (как смоук-тест наладки) | 18-07-2026 |
+| 2 | Архитектура кластера | ✅ Пройден | 18-07-2026 |
+| 3 | Pod и kubectl-база | ✅ Пройден | 18-07-2026 |
| 4 | Deployment и ReplicaSet | ⬜ Не начат | |
| 5 | Service и сеть | ⬜ Не начат | |
| 6 | Ingress | ⬜ Не начат | |
@@ -24,7 +24,7 @@
## Лог по датам
-### 2026-07-18 — наладка окружения на сервере + модуль 0 + модуль 1
+### 18-07-2026 — наладка окружения на сервере + модуль 0 + модуль 1
Сделано:
- Сервер `totserver@192.168.31.163` обновлён (`apt upgrade`), перезагружен, добавлены sysctl-лимиты inotify (524288/512) для kind.
@@ -41,7 +41,7 @@
Затыки: нет (модуль 0 и смоук-тест прошли гладко).
-### 2026-07-18 — модуль 2: архитектура кластера
+### 18-07-2026 — модуль 2: архитектура кластера
Формат сессии новый: команды на сервере выполнял сам, мне присылались логи шаг за шагом — я вёл по шагам и разбирал вывод.
@@ -56,7 +56,7 @@
Затыки: нет, модуль 2 прошёл гладко.
-### 2026-07-18 — модуль 3: Pod и kubectl-база
+### 18-07-2026 — модуль 3: Pod и kubectl-база
Формат сессии тот же: команды на сервере выполнял сам, логи присылались шаг за шагом.
@@ -84,5 +84,5 @@
## Вне периметра курса (не забыть)
-- `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.
+- `gitea_runner` был в restart-loop (`unregistered runner`, обнаружено 18-07-2026 при проверке после ребута) — **починено в тот же день** (чистая перерегистрация). Дополнительно поднят второй 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).
diff --git a/stack/kubernetes/SERVER.md b/stack/kubernetes/SERVER.md
index 6194260..633ea5d 100644
--- a/stack/kubernetes/SERVER.md
+++ b/stack/kubernetes/SERVER.md
@@ -14,7 +14,7 @@
| Уже занято | Gitea + Postgres + два CI-раннера + file-server (docker) + Grafana + nginx (systemd), ~1.3 ГБ RAM в простое. Порты 80, 443, **3000 (Grafana)**, **3030 (Gitea)**, 222 (Gitea SSH), 4400 (file-server), 9090 (Prometheus) на хосте заняты этим стеком — **не трогать**. Подробный чек-лист — [«CI-инфраструктура на сервере — что нельзя ломать»](#ci-инфраструктура-на-сервере--что-нельзя-ломать) ниже |
| sudo | Требует пароль — все команды курса на этом сервере выполняются без sudo (kind/helm стоят в `~/.local/bin`) |
-## Результаты бенчмарков (2026-07-18)
+## Результаты бенчмарков (18-07-2026)
| Тест | Результат |
|---|---|
@@ -103,7 +103,7 @@ curl -H "Host: demo.local" http://localhost:8080
## CI-инфраструктура на сервере — что нельзя ломать
-Вне периметра K8s-курса, но на этом же сервере: Gitea + два CI-раннера Gitea Actions обслуживают реальный проект (`maxim/Pluto-SDR`, кросс-сборка C-кода под ARM). 2026-07-18 раннер `gitea_runner` был починен из restart-loop (устаревшая регистрация act_runner — вылечено чистой перерегистрацией), и поднят второй раннер `gitea_runner_armhf` — кастомный образ cross-builder'а (Debian + `arm-linux-gnueabihf-gcc` + статические armhf-либы в `/root/xarm`, собираются в образе через `build_deps.sh`). Подробный разбор этой настройки — в [../docker/CASE.md](../docker/CASE.md) → раздел 9 (это реальный кейс легенды, не учебный).
+Вне периметра K8s-курса, но на этом же сервере: Gitea + два CI-раннера Gitea Actions обслуживают реальный проект (`maxim/Pluto-SDR`, кросс-сборка C-кода под ARM). 18-07-2026 раннер `gitea_runner` был починен из restart-loop (устаревшая регистрация act_runner — вылечено чистой перерегистрацией), и поднят второй раннер `gitea_runner_armhf` — кастомный образ cross-builder'а (Debian + `arm-linux-gnueabihf-gcc` + статические armhf-либы в `/root/xarm`, собираются в образе через `build_deps.sh`). Подробный разбор этой настройки — в [../docker/CASE.md](../docker/CASE.md) → раздел 9 (это реальный кейс легенды, не учебный).
**Перед каждой сессией K8s-курса и в конце неё — быстрая проверка, что CI-стек жив:**