fix: operator v0.1.49 — Resources update + self-healing requeue
БАГ 1: ensureServiceDeployment UPDATE блок теперь обновляет Containers[0].Resources
→ memory_mb через PUT применяется к k8s Deployment
БАГ 2: ensureServiceDeployment возвращает RequeueAfter: 60s вместо Result{}
→ ручное удаление Deployment пересоздаётся контроллером в течение 60s
lifecycle-тест: 47/47 PASS (ранее 44/44 с 2 known bugs)
This commit is contained in:
@@ -210,6 +210,8 @@ func (r *ServiceReconciler) ensureServiceDeployment(ctx context.Context, svc *sl
|
||||
} else {
|
||||
existing.Spec.Template.Spec.Containers[0].Image = svc.Status.ImageRef
|
||||
existing.Spec.Template.Spec.Containers[0].Env = desired.Spec.Template.Spec.Containers[0].Env
|
||||
// Обновляем ресурсы — иначе memory_mb из PUT не применяется к Deployment
|
||||
existing.Spec.Template.Spec.Containers[0].Resources = desired.Spec.Template.Spec.Containers[0].Resources
|
||||
existing.Spec.Template.Spec.ImagePullSecrets = desired.Spec.Template.Spec.ImagePullSecrets
|
||||
if err := r.Update(ctx, existing); err != nil {
|
||||
return ctrl.Result{}, fmt.Errorf("update service deployment: %w", err)
|
||||
@@ -297,15 +299,15 @@ func (r *ServiceReconciler) ensureServiceDeployment(ctx context.Context, svc *sl
|
||||
}
|
||||
}
|
||||
|
||||
return ctrl.Result{}, nil
|
||||
// Периодический requeue — self-healing: если Deployment/Service/Ingress удалены вручную, контроллер их пересоздаст
|
||||
return ctrl.Result{RequeueAfter: 60 * time.Second}, nil
|
||||
}
|
||||
|
||||
// buildServiceDeployment формирует Deployment манифест.
|
||||
func (r *ServiceReconciler) buildServiceDeployment(svc *slessv1alpha1.Service, namespace string) *appsv1.Deployment {
|
||||
replicas := int32(1)
|
||||
envVars := []corev1.EnvVar{
|
||||
{Name: "SLESS_ENTRYPOINT", Value: svc.Spec.Entrypoint},
|
||||
}
|
||||
var envVars []corev1.EnvVar
|
||||
|
||||
// Сортируем ключи для стабильного порядка — нестабильный порядок env vars вызывает лишние rollout'ы
|
||||
keys := make([]string, 0, len(svc.Spec.Env))
|
||||
for k := range svc.Spec.Env {
|
||||
|
||||
Reference in New Issue
Block a user