From 949b0b52d6cfe44902fa855b0ae73ba767efbd67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Wed, 13 May 2026 10:55:47 +0400 Subject: [PATCH] =?UTF-8?q?fix(console):=20v1.3.92=20=E2=80=94=20EnsureEnv?= =?UTF-8?q?ironment=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Вместо костыля (kubectl patch вручную) — системный фикс: EnsureEnvironment теперь проверяет spec.runtime.image у существующего env и обновляет его если отличается от LangEnvMap[lang].Image. Это автоматически мигрирует все namespace-ы при следующем создании функции. --- console/deploy/console.yaml | 2 +- console/internal/fission/environment.go | 15 +++++++++++++-- console/ui/index.html | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/console/deploy/console.yaml b/console/deploy/console.yaml index c482f5b..cb98aaa 100644 --- a/console/deploy/console.yaml +++ b/console/deploy/console.yaml @@ -58,7 +58,7 @@ spec: serviceAccountName: fission-console containers: - name: console - image: naeel/fission-console:v1.3.91 + image: naeel/fission-console:v1.3.92 imagePullPolicy: Always ports: - containerPort: 8090 diff --git a/console/internal/fission/environment.go b/console/internal/fission/environment.go index 6c2bd33..bee61cc 100644 --- a/console/internal/fission/environment.go +++ b/console/internal/fission/environment.go @@ -28,9 +28,20 @@ func EnsureEnvironment(ctx context.Context, dyn dynamic.Interface, ns, lang stri envName := "console-" + lang + "-env" // Проверяем существование — Get быстрее чем Create+IsAlreadyExists - _, getErr := dyn.Resource(EnvironmentGVR).Namespace(ns).Get(ctx, envName, metav1.GetOptions{}) + existing, getErr := dyn.Resource(EnvironmentGVR).Namespace(ns).Get(ctx, envName, metav1.GetOptions{}) if getErr == nil { - return envName, nil // уже существует — быстрый путь + // Уже существует — проверяем образ. Если устарел — обновляем. + currentImage, _, _ := unstructured.NestedString(existing.Object, "spec", "runtime", "image") + if currentImage != langDef.Image { + if patchErr := unstructured.SetNestedField(existing.Object, langDef.Image, "spec", "runtime", "image"); patchErr == nil { + if _, updateErr := dyn.Resource(EnvironmentGVR).Namespace(ns).Update(ctx, existing, metav1.UpdateOptions{}); updateErr != nil { + log.Printf("ensureEnvironment: update image %s/%s: %v", ns, envName, updateErr) + } else { + log.Printf("ensureEnvironment: updated image %s/%s: %s → %s", ns, envName, currentImage, langDef.Image) + } + } + } + return envName, nil } if !apierrors.IsNotFound(getErr) { return "", fmt.Errorf("check environment %q: %w", envName, getErr) diff --git a/console/ui/index.html b/console/ui/index.html index a12fbbb..f9e0ce7 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -103,7 +103,7 @@
NUBES
FISSION CONSOLE
-
v1.3.91
+
v1.3.92
@@ -626,7 +626,7 @@ psycopg2-binary" style="width:100%; box-sizing:border-box; font-family:monospace
- v1.3.91 + v1.3.92