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 @@