docs: обновить всю документацию по результатам сессии 2026-03-07
- infrastructure/overview.md: исправить S3 URL, Container Registry (DockerHub), namespace sless, Terraform Registry terra.k8c.ru - errors/log.md: добавить 3 ошибки — kaniko S3 scheme, бесконечный цикл сборки, docker credStore desktop.exe - decisions/log.md: добавить решения — DockerHub, terraform провайдер в той же репе, WaitReady паттерн, code_hash для версионирования кода - api/design.md: обновить базовый URL, добавить upload endpoint с описанием процесса, исправить runtime список
This commit is contained in:
@@ -14,6 +14,40 @@
|
||||
**Решение:** ...
|
||||
```
|
||||
|
||||
## 2026-03-07 — kaniko: unsupported protocol scheme ""
|
||||
|
||||
**Проблема:** kaniko Job падает с `unsupported protocol scheme ""` при доступе к S3.
|
||||
|
||||
**Причина:** В env `S3_ENDPOINT` передавался хост без схемы (`s3.msk-1.ngcloud.ru`), kaniko ожидает полный URL.
|
||||
|
||||
**Решение:** В `builder.go` добавить `"https://" + b.s3Endpoint` при формировании env для kaniko. Также добавить `S3_FORCE_PATH_STYLE=true` — Ceph требует path-style URLs.
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-07 — Бесконечный цикл сборки (94 job'а)
|
||||
|
||||
**Проблема:** После upload оператор создавал сотни kaniko Job'ов.
|
||||
|
||||
**Причина:** Upload handler вызывал `Status().Update(phase=Pending)` ПОСЛЕ того как контроллер уже выставил `Building`. Контроллер видел `Pending` → создавал новый Job, upload снова сбрасывал → цикл.
|
||||
|
||||
**Решение:**
|
||||
1. `startBuild()` СНАЧАЛА ставит аннотацию `last-built-s3key = spec.S3Key` (idempotency guard), затем обновляет статус.
|
||||
2. Reconcile запускает сборку только если `spec.S3Key != annotations["last-built-s3key"]`.
|
||||
3. Upload handler убран `Status().Update()` — контроллер сам управляет фазой.
|
||||
4. `IsAlreadyExists` при создании Job не считается ошибкой (parallel reconcile).
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-07 — Docker credStore: exec "docker-credential-desktop.exe"
|
||||
|
||||
**Проблема:** `docker push` падал с `exec: "docker-credential-desktop.exe": executable file not found`.
|
||||
|
||||
**Причина:** В `~/.docker/config.json` осталась запись `"credsStore": "desktop.exe"` от Docker Desktop.
|
||||
|
||||
**Решение:** Удалить поле `credsStore` из `~/.docker/config.json`, оставить только `auths` с base64 credentials.
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-07 — controller-gen v0.11.1 паникует с Go 1.23
|
||||
|
||||
**Проблема:** `operator-sdk create api` падает с panic в `controller-gen` при `make generate`.
|
||||
|
||||
Reference in New Issue
Block a user