Files
sless/doc/errors/log.md
T
“Naeel” dc7542148e 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 список
2026-03-07 10:26:13 +04:00

2.7 KiB
Raw Blame History

Ошибки и решения

Сюда записываем проблемы с которыми столкнулись и как их решили.

Шаблон записи

## 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 снова сбрасывал → цикл.

Решение:

  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.

Причина: controller-tools v0.11.1 несовместим с Go 1.23 (nil pointer dereference в go/types).

Решение: В Makefile заменить CONTROLLER_TOOLS_VERSION ?= v0.11.1 на v0.14.0.