fix: rollout restart после kaniko rebuild (operator v0.1.11)
- controllers/function_controller.go: в ensureDeployment добавить аннотацию kubectl.kubernetes.io/restartedAt = fn.Status.LastBuiltAt при обновлении существующего Deployment — принудительный rolling restart после каждой сборки - deployments/k8s/operator.yaml: образ обновлён до v0.1.11 - doc/errors/log.md: задокументирована причина и решение - doc/decisions/log.md: добавлено правило restartedAt + :latest - doc/progress.md: версия обновлена до v0.1.11 Причина бага: imagePullPolicy=IfNotPresent + :latest — kubelet кешировал старый образ, pod не рестартовал после успешного kaniko build.
This commit is contained in:
@@ -245,3 +245,20 @@
|
||||
|
||||
**Правило проекта:** В `sless_function.code_hash` всегда использовать `filesha256(source_file)`, не `archive_file.output_md5`.
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-08 — Rollout restart после kaniko build (imagePullPolicy + :latest)
|
||||
|
||||
**Проблема:** После успешной kaniko сборки pod не перезапускался — kubelet брал кешированный образ `:latest` (imagePullPolicy: IfNotPresent). Функция возвращала старый код.
|
||||
|
||||
**Решение:** В `ensureDeployment` при обновлении существующего Deployment проставляем аннотацию:
|
||||
```go
|
||||
existing.Spec.Template.Annotations["kubectl.kubernetes.io/restartedAt"] = fn.Status.LastBuiltAt.Time.Format(time.RFC3339)
|
||||
```
|
||||
Значение привязано к `fn.Status.LastBuiltAt` → меняется при каждой сборке → Kubernetes делает rolling restart → свежий образ гарантированно пул-ится.
|
||||
|
||||
**Правило проекта:** При использовании `:latest` tag всегда явно проставлять `restartedAt` annotation при обновлении кода.
|
||||
|
||||
**Версия:** operator `naeel/sless-operator:v0.1.11`
|
||||
|
||||
Reference in New Issue
Block a user