From 3c4272c6d10e5cc96724c2510e420d529682eef3 Mon Sep 17 00:00:00 2001 From: "M. Mert Yildiran" Date: Mon, 16 Jan 2023 00:06:52 +0300 Subject: [PATCH] :bug: Fix the issues in port-forward --- cmd/common.go | 12 +++++++----- cmd/proxyRunner.go | 2 +- cmd/tapRunner.go | 24 ++++++++++++++++++++++-- config/configStructs/tapConfig.go | 2 +- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/cmd/common.go b/cmd/common.go index 5f0174e0c..61199b9fc 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -18,31 +18,33 @@ import ( "github.com/rs/zerolog/log" ) -func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx context.Context, cancel context.CancelFunc, serviceName string, proxyPortLabel string, srcPort uint16, dstPort uint16, healthCheck string) { +func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx context.Context, cancel context.CancelFunc, serviceName string, podName string, proxyPortLabel string, srcPort uint16, dstPort uint16, healthCheck string) { httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.Proxy.Host, srcPort, config.Config.SelfNamespace, serviceName, cancel) if err != nil { log.Error(). Err(errormessage.FormatError(err)). - Msg(fmt.Sprintf("Error occured while running k8s proxy. Try setting different port by using --%s", proxyPortLabel)) + Msg(fmt.Sprintf("Error occured while running K8s proxy. Try setting different port using --%s", proxyPortLabel)) cancel() return } connector := connect.NewConnector(kubernetes.GetLocalhostOnPort(srcPort), connect.DefaultRetries, connect.DefaultTimeout) if err := connector.TestConnection(healthCheck); err != nil { - log.Error().Msg("Couldn't connect using proxy, stopping proxy and trying to create port-forward..") + log.Warn(). + Str("service", serviceName). + Msg("Couldn't connect using proxy, stopping proxy and trying to create port-forward...") if err := httpServer.Shutdown(ctx); err != nil { log.Error(). Err(errormessage.FormatError(err)). Msg("Error occurred while stopping proxy.") } - podRegex, _ := regexp.Compile(kubernetes.HubPodName) + podRegex, _ := regexp.Compile(podName) if _, err := kubernetes.NewPortForward(kubernetesProvider, config.Config.SelfNamespace, podRegex, srcPort, dstPort, ctx, cancel); err != nil { log.Error(). Str("pod-regex", podRegex.String()). Err(errormessage.FormatError(err)). - Msg(fmt.Sprintf("Error occured while running port forward. Try setting different port by using --%s", proxyPortLabel)) + Msg(fmt.Sprintf("Error occured while running port forward. Try setting different port using --%s", proxyPortLabel)) cancel() return } diff --git a/cmd/proxyRunner.go b/cmd/proxyRunner.go index f6be44a98..82750016c 100644 --- a/cmd/proxyRunner.go +++ b/cmd/proxyRunner.go @@ -55,7 +55,7 @@ func runProxy() { return } log.Info().Msg("Establishing connection to K8s cluster...") - startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.FrontServiceName, configStructs.ProxyFrontPortLabel, config.Config.Tap.Proxy.Front.SrcPort, config.Config.Tap.Proxy.Front.DstPort, "") + startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.FrontServiceName, kubernetes.FrontPodName, configStructs.ProxyFrontPortLabel, config.Config.Tap.Proxy.Front.SrcPort, config.Config.Tap.Proxy.Front.DstPort, "") connector := connect.NewConnector(url, connect.DefaultRetries, connect.DefaultTimeout) if err := connector.TestConnection(""); err != nil { diff --git a/cmd/tapRunner.go b/cmd/tapRunner.go index 25172ddd9..454346a5a 100644 --- a/cmd/tapRunner.go +++ b/cmd/tapRunner.go @@ -427,7 +427,17 @@ func watchHubEvents(ctx context.Context, kubernetesProvider *kubernetes.Provider } func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) { - startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.HubServiceName, configStructs.ProxyFrontPortLabel, config.Config.Tap.Proxy.Hub.SrcPort, config.Config.Tap.Proxy.Hub.DstPort, "/echo") + startProxyReportErrorIfAny( + kubernetesProvider, + ctx, + cancel, + kubernetes.HubServiceName, + kubernetes.HubPodName, + configStructs.ProxyHubPortLabel, + config.Config.Tap.Proxy.Hub.SrcPort, + config.Config.Tap.Proxy.Hub.DstPort, + "/echo", + ) if err := startWorkerSyncer(ctx, cancel, kubernetesProvider, state.targetNamespaces, state.startTime); err != nil { log.Error().Err(errormessage.FormatError(err)).Msg("Error starting worker syncer") @@ -439,7 +449,17 @@ func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider } func postFrontStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) { - startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.FrontServiceName, configStructs.ProxyHubPortLabel, config.Config.Tap.Proxy.Front.SrcPort, config.Config.Tap.Proxy.Front.DstPort, "") + startProxyReportErrorIfAny( + kubernetesProvider, + ctx, + cancel, + kubernetes.FrontServiceName, + kubernetes.FrontPodName, + configStructs.ProxyFrontPortLabel, + config.Config.Tap.Proxy.Front.SrcPort, + config.Config.Tap.Proxy.Front.DstPort, + "", + ) url := kubernetes.GetLocalhostOnPort(config.Config.Tap.Proxy.Front.SrcPort) log.Info().Str("url", url).Msg(fmt.Sprintf(utils.Green, fmt.Sprintf("%s is available at:", misc.Software))) diff --git a/config/configStructs/tapConfig.go b/config/configStructs/tapConfig.go index 2a805fdff..639e68a06 100644 --- a/config/configStructs/tapConfig.go +++ b/config/configStructs/tapConfig.go @@ -34,7 +34,7 @@ type WorkerConfig struct { type HubConfig struct { SrcPort uint16 `yaml:"port" default:"8898"` - DstPort uint16 `yaml:"srvport" default:"8898"` + DstPort uint16 `yaml:"srvport" default:"80"` } type FrontConfig struct {