fix: уникальный image tag per build вместо :latest (operator v0.1.12)
- internal/builder/builder.go: ImageRef() теперь использует sha256(s3Key)[:12] как тег образа вместо :latest Пример: naeel/sless-default-hello-http:d431de61e2c9 - controllers/function_controller.go: убран хак с restartedAt аннотацией — больше не нужен, новый тег = kubelet всегда пул-ит новый образ - deployments/k8s/operator.yaml: обновлён до v0.1.12 - doc/progress.md: версия обновлена Преимущества уникального тега: - imagePullPolicy: IfNotPresent работает корректно - Rollback к предыдущей версии возможен (теги не перезаписываются) - Нет race condition при параллельных сборках
This commit is contained in:
@@ -9,6 +9,7 @@ package builder
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
@@ -60,9 +61,12 @@ func New(c client.Client, cfg Config) *Builder {
|
||||
}
|
||||
|
||||
// ImageRef возвращает полный путь к образу в registry для данной функции и версии.
|
||||
// Тег = первые 12 символов sha256(s3Key): уникален per build, не меняется при
|
||||
// повторном reconcile с тем же s3Key, не требует хаков с :latest.
|
||||
func (b *Builder) ImageRef(namespace, funcName, s3Key string) string {
|
||||
// Используем s3Key как уникальный тег чтобы разные версии не перезаписывали друг друга
|
||||
return fmt.Sprintf("%s/sless-%s-%s:latest", b.registryHost, namespace, funcName)
|
||||
h := sha256.Sum256([]byte(s3Key))
|
||||
tag := fmt.Sprintf("%x", h[:6]) // 12 hex-символов
|
||||
return fmt.Sprintf("%s/sless-%s-%s:%s", b.registryHost, namespace, funcName, tag)
|
||||
}
|
||||
|
||||
// Build запускает kaniko Job для сборки образа функции.
|
||||
|
||||
Reference in New Issue
Block a user