mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-08-18 08:29:36 +00:00
🐛 Fix the issues in port-forward
This commit is contained in:
parent
920535b643
commit
3c4272c6d1
@ -18,31 +18,33 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"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)
|
httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.Proxy.Host, srcPort, config.Config.SelfNamespace, serviceName, cancel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().
|
log.Error().
|
||||||
Err(errormessage.FormatError(err)).
|
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()
|
cancel()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
connector := connect.NewConnector(kubernetes.GetLocalhostOnPort(srcPort), connect.DefaultRetries, connect.DefaultTimeout)
|
connector := connect.NewConnector(kubernetes.GetLocalhostOnPort(srcPort), connect.DefaultRetries, connect.DefaultTimeout)
|
||||||
if err := connector.TestConnection(healthCheck); err != nil {
|
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 {
|
if err := httpServer.Shutdown(ctx); err != nil {
|
||||||
log.Error().
|
log.Error().
|
||||||
Err(errormessage.FormatError(err)).
|
Err(errormessage.FormatError(err)).
|
||||||
Msg("Error occurred while stopping proxy.")
|
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 {
|
if _, err := kubernetes.NewPortForward(kubernetesProvider, config.Config.SelfNamespace, podRegex, srcPort, dstPort, ctx, cancel); err != nil {
|
||||||
log.Error().
|
log.Error().
|
||||||
Str("pod-regex", podRegex.String()).
|
Str("pod-regex", podRegex.String()).
|
||||||
Err(errormessage.FormatError(err)).
|
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()
|
cancel()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ func runProxy() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Info().Msg("Establishing connection to K8s cluster...")
|
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)
|
connector := connect.NewConnector(url, connect.DefaultRetries, connect.DefaultTimeout)
|
||||||
if err := connector.TestConnection(""); err != nil {
|
if err := connector.TestConnection(""); err != nil {
|
||||||
|
@ -427,7 +427,17 @@ func watchHubEvents(ctx context.Context, kubernetesProvider *kubernetes.Provider
|
|||||||
}
|
}
|
||||||
|
|
||||||
func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider, cancel context.CancelFunc) {
|
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 {
|
if err := startWorkerSyncer(ctx, cancel, kubernetesProvider, state.targetNamespaces, state.startTime); err != nil {
|
||||||
log.Error().Err(errormessage.FormatError(err)).Msg("Error starting worker syncer")
|
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) {
|
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)
|
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)))
|
log.Info().Str("url", url).Msg(fmt.Sprintf(utils.Green, fmt.Sprintf("%s is available at:", misc.Software)))
|
||||||
|
@ -34,7 +34,7 @@ type WorkerConfig struct {
|
|||||||
|
|
||||||
type HubConfig struct {
|
type HubConfig struct {
|
||||||
SrcPort uint16 `yaml:"port" default:"8898"`
|
SrcPort uint16 `yaml:"port" default:"8898"`
|
||||||
DstPort uint16 `yaml:"srvport" default:"8898"`
|
DstPort uint16 `yaml:"srvport" default:"80"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type FrontConfig struct {
|
type FrontConfig struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user