mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-03 03:25:26 +00:00
🐛 Fix the proxy
command
This commit is contained in:
@@ -10,5 +10,5 @@ func performCleanCommand() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
finishSelfExecution(kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.SelfNamespace)
|
finishSelfExecution(kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.SelfNamespace, false)
|
||||||
}
|
}
|
||||||
|
@@ -99,11 +99,13 @@ func handleKubernetesProviderError(err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func finishSelfExecution(kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, selfNamespace string) {
|
func finishSelfExecution(kubernetesProvider *kubernetes.Provider, isNsRestrictedMode bool, selfNamespace string, withoutCleanup bool) {
|
||||||
removalCtx, cancel := context.WithTimeout(context.Background(), cleanupTimeout)
|
removalCtx, cancel := context.WithTimeout(context.Background(), cleanupTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
dumpLogsIfNeeded(removalCtx, kubernetesProvider)
|
dumpLogsIfNeeded(removalCtx, kubernetesProvider)
|
||||||
|
if !withoutCleanup {
|
||||||
resources.CleanUpSelfResources(removalCtx, cancel, kubernetesProvider, isNsRestrictedMode, selfNamespace)
|
resources.CleanUpSelfResources(removalCtx, cancel, kubernetesProvider, isNsRestrictedMode, selfNamespace)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func dumpLogsIfNeeded(ctx context.Context, kubernetesProvider *kubernetes.Provider) {
|
func dumpLogsIfNeeded(ctx context.Context, kubernetesProvider *kubernetes.Provider) {
|
||||||
|
@@ -26,7 +26,7 @@ func runProxy() {
|
|||||||
exists, err := kubernetesProvider.DoesServiceExist(ctx, config.Config.SelfNamespace, kubernetes.FrontServiceName)
|
exists, err := kubernetesProvider.DoesServiceExist(ctx, config.Config.SelfNamespace, kubernetes.FrontServiceName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().
|
log.Error().
|
||||||
Str("service", misc.Program).
|
Str("service", kubernetes.FrontServiceName).
|
||||||
Err(err).
|
Err(err).
|
||||||
Msg("Failed to found service!")
|
Msg("Failed to found service!")
|
||||||
cancel()
|
cancel()
|
||||||
@@ -42,34 +42,96 @@ func runProxy() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
url := kubernetes.GetLocalhostOnPort(config.Config.Tap.Proxy.Front.SrcPort)
|
exists, err = kubernetesProvider.DoesServiceExist(ctx, config.Config.SelfNamespace, kubernetes.HubServiceName)
|
||||||
|
if err != nil {
|
||||||
|
log.Error().
|
||||||
|
Str("service", kubernetes.HubServiceName).
|
||||||
|
Err(err).
|
||||||
|
Msg("Failed to found service!")
|
||||||
|
cancel()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
response, err := http.Get(fmt.Sprintf("%s/", url))
|
if !exists {
|
||||||
|
log.Error().
|
||||||
|
Str("service", kubernetes.HubServiceName).
|
||||||
|
Str("command", fmt.Sprintf("%s %s", misc.Program, tapCmd.Use)).
|
||||||
|
Msg("Service not found! You should run the command first:")
|
||||||
|
cancel()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var establishedProxy bool
|
||||||
|
|
||||||
|
hubUrl := kubernetes.GetLocalhostOnPort(config.Config.Tap.Proxy.Hub.SrcPort)
|
||||||
|
response, err := http.Get(fmt.Sprintf("%s/", hubUrl))
|
||||||
|
if err == nil && response.StatusCode == 200 {
|
||||||
|
log.Info().
|
||||||
|
Str("service", kubernetes.HubServiceName).
|
||||||
|
Int("port", int(config.Config.Tap.Proxy.Hub.SrcPort)).
|
||||||
|
Msg("Found a running service.")
|
||||||
|
|
||||||
|
okToOpen("Hub", hubUrl)
|
||||||
|
} else {
|
||||||
|
startProxyReportErrorIfAny(
|
||||||
|
kubernetesProvider,
|
||||||
|
ctx,
|
||||||
|
cancel,
|
||||||
|
kubernetes.HubServiceName,
|
||||||
|
kubernetes.HubPodName,
|
||||||
|
configStructs.ProxyHubPortLabel,
|
||||||
|
config.Config.Tap.Proxy.Hub.SrcPort,
|
||||||
|
config.Config.Tap.Proxy.Hub.DstPort,
|
||||||
|
"/echo",
|
||||||
|
)
|
||||||
|
connector := connect.NewConnector(hubUrl, connect.DefaultRetries, connect.DefaultTimeout)
|
||||||
|
if err := connector.TestConnection("/echo"); err != nil {
|
||||||
|
log.Error().Msg(fmt.Sprintf(utils.Red, "Couldn't connect to Hub."))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
establishedProxy = true
|
||||||
|
okToOpen("Hub", hubUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
frontUrl := kubernetes.GetLocalhostOnPort(config.Config.Tap.Proxy.Front.SrcPort)
|
||||||
|
response, err = http.Get(fmt.Sprintf("%s/", frontUrl))
|
||||||
if err == nil && response.StatusCode == 200 {
|
if err == nil && response.StatusCode == 200 {
|
||||||
log.Info().
|
log.Info().
|
||||||
Str("service", kubernetes.FrontServiceName).
|
Str("service", kubernetes.FrontServiceName).
|
||||||
Int("port", int(config.Config.Tap.Proxy.Front.SrcPort)).
|
Int("port", int(config.Config.Tap.Proxy.Front.SrcPort)).
|
||||||
Msg("Found a running service.")
|
Msg("Found a running service.")
|
||||||
|
|
||||||
okToOpen(url)
|
okToOpen("Front", frontUrl)
|
||||||
return
|
} else {
|
||||||
}
|
startProxyReportErrorIfAny(
|
||||||
log.Info().Msg("Establishing connection to K8s cluster...")
|
kubernetesProvider,
|
||||||
startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.FrontServiceName, kubernetes.FrontPodName, configStructs.ProxyFrontPortLabel, config.Config.Tap.Proxy.Front.SrcPort, config.Config.Tap.Proxy.Front.DstPort, "")
|
ctx,
|
||||||
|
cancel,
|
||||||
connector := connect.NewConnector(url, connect.DefaultRetries, connect.DefaultTimeout)
|
kubernetes.FrontServiceName,
|
||||||
|
kubernetes.FrontPodName,
|
||||||
|
configStructs.ProxyFrontPortLabel,
|
||||||
|
config.Config.Tap.Proxy.Front.SrcPort,
|
||||||
|
config.Config.Tap.Proxy.Front.DstPort,
|
||||||
|
"",
|
||||||
|
)
|
||||||
|
connector := connect.NewConnector(frontUrl, connect.DefaultRetries, connect.DefaultTimeout)
|
||||||
if err := connector.TestConnection(""); err != nil {
|
if err := connector.TestConnection(""); err != nil {
|
||||||
log.Error().Msg(fmt.Sprintf(utils.Red, "Couldn't connect to Front."))
|
log.Error().Msg(fmt.Sprintf(utils.Red, "Couldn't connect to Front."))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
okToOpen(url)
|
establishedProxy = true
|
||||||
|
okToOpen("Front", frontUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
if establishedProxy {
|
||||||
utils.WaitForTermination(ctx, cancel)
|
utils.WaitForTermination(ctx, cancel)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func okToOpen(url string) {
|
func okToOpen(name string, url string) {
|
||||||
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:", name)))
|
||||||
|
|
||||||
if !config.Config.HeadlessMode {
|
if !config.Config.HeadlessMode {
|
||||||
utils.OpenBrowser(url)
|
utils.OpenBrowser(url)
|
||||||
|
@@ -105,7 +105,7 @@ func tap() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func finishTapExecution(kubernetesProvider *kubernetes.Provider) {
|
func finishTapExecution(kubernetesProvider *kubernetes.Provider) {
|
||||||
finishSelfExecution(kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.SelfNamespace)
|
finishSelfExecution(kubernetesProvider, config.Config.IsNsRestrictedMode(), config.Config.SelfNamespace, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user