- 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 список
2.7 KiB
Ошибки и решения
Сюда записываем проблемы с которыми столкнулись и как их решили.
Шаблон записи
## YYYY-MM-DD — Короткое описание проблемы
**Проблема:** ...
**Причина:** ...
**Решение:** ...
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 снова сбрасывал → цикл.
Решение:
startBuild()СНАЧАЛА ставит аннотациюlast-built-s3key = spec.S3Key(idempotency guard), затем обновляет статус.- Reconcile запускает сборку только если
spec.S3Key != annotations["last-built-s3key"]. - Upload handler убран
Status().Update()— контроллер сам управляет фазой. 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.
Причина: controller-tools v0.11.1 несовместим с Go 1.23 (nil pointer dereference в go/types).
Решение: В Makefile заменить CONTROLLER_TOOLS_VERSION ?= v0.11.1 на v0.14.0.