fix: destroy route cleanup bug — delete Service+Ingress on trigger/function deletion
- controllers/trigger_controller.go: handleTriggerDeletion теперь удаляет Service
и Ingress из sless-fn-{ns} при удалении HTTP-триггера
- controllers/function_controller.go: handleDeletion теперь удаляет Service и Ingress
(имена совпадают с fn.Name); добавлен импорт netv1
- terraform/provider trigger_resource.go: Delete ждёт пока GetTrigger вернёт 404
(до 90с) — провайдер не возвращает успех раньше чем cleanup завершён
- examples: версия провайдера обновлена до ~> 0.1.11
Operator: naeel/sless-operator:v0.1.17
Provider: v0.1.11
Fixes DESTROY_ROUTE_CLEANUP_BUG.md
This commit is contained in:
@@ -282,8 +282,25 @@ func (r *TriggerReconciler) handleTriggerDeletion(ctx context.Context, tr *sless
|
||||
_ = r.Delete(ctx, cj)
|
||||
}
|
||||
}
|
||||
// Ingress/Service для HTTP триггеров оставляем — они могут быть нужны другим триггерам,
|
||||
// полная очистка происходит при удалении Function через function_controller finalizer
|
||||
|
||||
// Для HTTP триггеров удаляем Service и Ingress из sless-fn-{namespace}.
|
||||
// Имена ресурсов совпадают с именем функции (FunctionRef).
|
||||
// Без этого Ingress остаётся висеть после destroy и endpoint возвращает 502.
|
||||
if tr.Spec.Type == slessv1alpha1.TriggerTypeHTTP {
|
||||
deployNS := "sless-fn-" + tr.Namespace
|
||||
fnName := tr.Spec.FunctionRef
|
||||
|
||||
svc := &corev1.Service{}
|
||||
if err := r.Get(ctx, client.ObjectKey{Name: fnName, Namespace: deployNS}, svc); err == nil {
|
||||
_ = r.Delete(ctx, svc)
|
||||
}
|
||||
|
||||
ing := &netv1.Ingress{}
|
||||
if err := r.Get(ctx, client.ObjectKey{Name: fnName, Namespace: deployNS}, ing); err == nil {
|
||||
_ = r.Delete(ctx, ing)
|
||||
}
|
||||
}
|
||||
|
||||
tr.Finalizers = removeString(tr.Finalizers, triggerFinalizer)
|
||||
if err := r.Update(ctx, tr); err != nil {
|
||||
return ctrl.Result{}, fmt.Errorf("remove trigger finalizer: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user