From e85faf1059526f60ba09727ac1eae20154269f21 Mon Sep 17 00:00:00 2001 From: Andrew Lytvynov Date: Thu, 3 Dec 2020 15:51:32 -0800 Subject: [PATCH] Set TTL on kube_service resources (#5008) Without this, deleted kube_services linger in the backend and show up as obsolete kubernetes clusters in tsh. Ideally, this TTL logic should be enforced centrally, but I'd like to fix the bug first, and do a larger refactoring later. --- lib/kube/proxy/server.go | 6 ++++-- lib/services/server.go | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/kube/proxy/server.go b/lib/kube/proxy/server.go index 358b974112434..e117cd685477f 100644 --- a/lib/kube/proxy/server.go +++ b/lib/kube/proxy/server.go @@ -220,7 +220,7 @@ func (t *TLSServer) GetServerInfo() (services.Server, error) { name += "-proxy_service" } - return &services.ServerV2{ + srv := &services.ServerV2{ Kind: services.KindKubeService, Version: services.V2, Metadata: services.Metadata{ @@ -232,5 +232,7 @@ func (t *TLSServer) GetServerInfo() (services.Server, error) { Version: teleport.Version, KubernetesClusters: t.fwd.kubeClusters(), }, - }, nil + } + srv.SetTTL(t.Clock, defaults.ServerAnnounceTTL) + return srv, nil } diff --git a/lib/services/server.go b/lib/services/server.go index cfa7896f58546..e6b73ad0a8a2b 100644 --- a/lib/services/server.go +++ b/lib/services/server.go @@ -345,6 +345,9 @@ func LabelsAsString(static map[string]string, dynamic map[string]CommandLabelV2) // CheckAndSetDefaults checks and set default values for any missing fields. func (s *ServerV2) CheckAndSetDefaults() error { + // TODO(awly): default s.Metadata.Expiry if not set (use + // defaults.ServerAnnounceTTL). + err := s.Metadata.CheckAndSetDefaults() if err != nil { return trace.Wrap(err)