diff --git a/cmd/common.go b/cmd/common.go index 26257b9a3..603404b6b 100644 --- a/cmd/common.go +++ b/cmd/common.go @@ -21,7 +21,7 @@ import ( ) func startProxyReportErrorIfAny(kubernetesProvider *kubernetes.Provider, ctx context.Context, cancel context.CancelFunc, serviceName string, proxyPortLabel string, srcPort uint16, dstPort uint16, healthCheck string) { - httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.ProxyHost, srcPort, dstPort, config.Config.ResourcesNamespace, serviceName, cancel) + httpServer, err := kubernetes.StartProxy(kubernetesProvider, config.Config.Tap.ProxyHost, srcPort, config.Config.ResourcesNamespace, serviceName, cancel) if err != nil { log.Error(). Err(errormessage.FormatError(err)). diff --git a/cmd/goUtils/funcWrappers.go b/cmd/goUtils/funcWrappers.go index 578423948..2ca0107e7 100644 --- a/cmd/goUtils/funcWrappers.go +++ b/cmd/goUtils/funcWrappers.go @@ -2,7 +2,6 @@ package goUtils import ( "reflect" - "runtime/debug" "github.com/rs/zerolog/log" ) @@ -10,10 +9,9 @@ import ( func HandleExcWrapper(fn interface{}, params ...interface{}) (result []reflect.Value) { defer func() { if panicMessage := recover(); panicMessage != nil { - stack := debug.Stack() log.Fatal(). + Stack(). Interface("msg", panicMessage). - Interface("stack", stack). Msg("Unhandled panic!") } }() diff --git a/cmd/pcap.go b/cmd/pcap.go new file mode 100644 index 000000000..0da6a656c --- /dev/null +++ b/cmd/pcap.go @@ -0,0 +1,18 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +var pcapCmd = &cobra.Command{ + Use: "pcap", + Short: "Capture from a PCAP file using your Docker Daemon instead of Kubernetes.", + RunE: func(cmd *cobra.Command, args []string) error { + pcap() + return nil + }, +} + +func init() { + rootCmd.AddCommand(pcapCmd) +} diff --git a/cmd/pcapRunner.go b/cmd/pcapRunner.go new file mode 100644 index 000000000..3dd7eef67 --- /dev/null +++ b/cmd/pcapRunner.go @@ -0,0 +1,206 @@ +package cmd + +import ( + "context" + "fmt" + "io" + "os" + + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/client" + "github.com/docker/go-connections/nat" + "github.com/kubeshark/kubeshark/config" + "github.com/kubeshark/kubeshark/docker" + "github.com/kubeshark/kubeshark/internal/connect" + "github.com/kubeshark/kubeshark/kubernetes" + "github.com/kubeshark/kubeshark/utils" + "github.com/rs/zerolog/log" + v1 "k8s.io/api/core/v1" +) + +func pcap() { + log.Info().Msg("Starting Docker containers...") + + ctx := context.Background() + cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) + if err != nil { + log.Error().Err(err).Send() + return + } + defer cli.Close() + + imageFront := docker.GetFrontImage() + imageHub := docker.GetHubImage() + imageWorker := docker.GetWorkerImage() + + readerFront, err := cli.ImagePull(ctx, imageFront, types.ImagePullOptions{}) + if err != nil { + log.Error().Err(err).Send() + return + } + defer readerFront.Close() + _, err = io.Copy(os.Stdout, readerFront) + if err != nil { + log.Error().Err(err).Send() + return + } + + readerHub, err := cli.ImagePull(ctx, imageHub, types.ImagePullOptions{}) + if err != nil { + log.Error().Err(err).Send() + return + } + defer readerHub.Close() + _, err = io.Copy(os.Stdout, readerHub) + if err != nil { + log.Error().Err(err).Send() + return + } + + readerWorker, err := cli.ImagePull(ctx, imageWorker, types.ImagePullOptions{}) + if err != nil { + log.Error().Err(err).Send() + return + } + defer readerWorker.Close() + _, err = io.Copy(os.Stdout, readerWorker) + if err != nil { + log.Error().Err(err).Send() + return + } + + hostIP := "0.0.0.0" + + hostConfigFront := &container.HostConfig{ + PortBindings: nat.PortMap{ + nat.Port(fmt.Sprintf("%d/tcp", config.Config.Tap.Front.DstPort)): []nat.PortBinding{ + { + HostIP: hostIP, + HostPort: fmt.Sprintf("%d", config.Config.Tap.Front.SrcPort), + }, + }, + }, + } + + respFront, err := cli.ContainerCreate(ctx, &container.Config{ + Image: imageFront, + Tty: false, + }, hostConfigFront, nil, nil, "kubeshark-front") + if err != nil { + log.Error().Err(err).Send() + return + } + + if err := cli.ContainerStart(ctx, respFront.ID, types.ContainerStartOptions{}); err != nil { + log.Error().Err(err).Send() + return + } + + hostConfigHub := &container.HostConfig{ + PortBindings: nat.PortMap{ + nat.Port(fmt.Sprintf("%d/tcp", config.Config.Tap.Hub.DstPort)): []nat.PortBinding{ + { + HostIP: hostIP, + HostPort: fmt.Sprintf("%d", config.Config.Tap.Hub.SrcPort), + }, + }, + }, + } + + respHub, err := cli.ContainerCreate(ctx, &container.Config{ + Image: imageHub, + Cmd: []string{"-port", fmt.Sprintf("%d", config.Config.Tap.Hub.DstPort), "-debug"}, + Tty: false, + ExposedPorts: nat.PortSet{nat.Port(fmt.Sprintf("%d/tcp", config.Config.Tap.Hub.DstPort)): {}}, + }, hostConfigHub, nil, nil, "kubeshark-hub") + if err != nil { + log.Error().Err(err).Send() + return + } + + if err := cli.ContainerStart(ctx, respHub.ID, types.ContainerStartOptions{}); err != nil { + log.Error().Err(err).Send() + return + } + + respWorker, err := cli.ContainerCreate(ctx, &container.Config{ + Image: imageWorker, + Cmd: []string{"-i", "any", "-port", fmt.Sprintf("%d", config.Config.Tap.Worker.DstPort), "-debug"}, + Tty: false, + }, nil, nil, nil, "kubeshark-worker") + if err != nil { + log.Error().Err(err).Send() + return + } + + if err := cli.ContainerStart(ctx, respWorker.ID, types.ContainerStartOptions{}); err != nil { + log.Error().Err(err).Send() + return + } + + containerWorker, err := cli.ContainerInspect(ctx, respWorker.ID) + if err != nil { + log.Error().Err(err).Send() + return + } + + workerPod := &v1.Pod{ + Spec: v1.PodSpec{ + NodeName: "docker", + }, + Status: v1.PodStatus{ + PodIP: containerWorker.NetworkSettings.IPAddress, + Phase: v1.PodRunning, + ContainerStatuses: []v1.ContainerStatus{ + { + Ready: true, + }, + }, + }, + } + + connector = connect.NewConnector(kubernetes.GetLocalhostOnPort(config.Config.Tap.Hub.SrcPort), connect.DefaultRetries, connect.DefaultTimeout) + connector.PostWorkerPodToHub(workerPod) + + log.Info(). + Str("url", kubernetes.GetLocalhostOnPort(config.Config.Tap.Hub.SrcPort)). + Msg(fmt.Sprintf(utils.Green, "Hub is available at:")) + + url := kubernetes.GetLocalhostOnPort(config.Config.Tap.Front.SrcPort) + log.Info().Str("url", url).Msg(fmt.Sprintf(utils.Green, "Kubeshark is available at:")) + + if !config.Config.HeadlessMode { + utils.OpenBrowser(url) + } + + ctxC, cancel := context.WithCancel(context.Background()) + defer cancel() + utils.WaitForFinish(ctxC, cancel) + + err = cli.ContainerStop(ctx, respFront.ID, nil) + if err != nil { + log.Error().Err(err).Send() + } + err = cli.ContainerStop(ctx, respHub.ID, nil) + if err != nil { + log.Error().Err(err).Send() + } + err = cli.ContainerStop(ctx, respWorker.ID, nil) + if err != nil { + log.Error().Err(err).Send() + } + + err = cli.ContainerRemove(ctx, respFront.ID, types.ContainerRemoveOptions{}) + if err != nil { + log.Error().Err(err).Send() + } + err = cli.ContainerRemove(ctx, respHub.ID, types.ContainerRemoveOptions{}) + if err != nil { + log.Error().Err(err).Send() + } + err = cli.ContainerRemove(ctx, respWorker.ID, types.ContainerRemoveOptions{}) + if err != nil { + log.Error().Err(err).Send() + } +} diff --git a/cmd/tapRunner.go b/cmd/tapRunner.go index 319478f74..ae21f4b19 100644 --- a/cmd/tapRunner.go +++ b/cmd/tapRunner.go @@ -442,7 +442,7 @@ func postHubStarted(ctx context.Context, kubernetesProvider *kubernetes.Provider startProxyReportErrorIfAny(kubernetesProvider, ctx, cancel, kubernetes.HubServiceName, configStructs.ProxyPortFrontLabel, config.Config.Tap.Hub.SrcPort, config.Config.Tap.Hub.DstPort, "/echo") if err := startWorkerSyncer(ctx, cancel, kubernetesProvider, state.targetNamespaces, state.startTime); err != nil { - log.Error().Err(errormessage.FormatError(err)).Msg("Error starting kubeshark worker syncer") + log.Error().Err(errormessage.FormatError(err)).Msg("Error starting worker syncer") cancel() } diff --git a/config/configStruct.go b/config/configStruct.go index 7aecc6147..394b45c9a 100644 --- a/config/configStruct.go +++ b/config/configStruct.go @@ -20,9 +20,14 @@ const ( func CreateDefaultConfig() ConfigStruct { config := ConfigStruct{} + config.Tap.Worker = configStructs.WorkerConfig{ + SrcPort: 8897, + DstPort: 8897, + } + config.Tap.Hub = configStructs.HubConfig{ SrcPort: 8898, - DstPort: 80, + DstPort: 8898, } config.Tap.Front = configStructs.FrontConfig{ diff --git a/config/configStructs/tapConfig.go b/config/configStructs/tapConfig.go index a314c7460..46bc07a3a 100644 --- a/config/configStructs/tapConfig.go +++ b/config/configStructs/tapConfig.go @@ -23,9 +23,14 @@ const ( DebugLabel = "debug" ) +type WorkerConfig struct { + SrcPort uint16 `yaml:"src-port" default:"8897"` + DstPort uint16 `yaml:"dst-port" default:"8897"` +} + type HubConfig struct { SrcPort uint16 `yaml:"src-port" default:"8898"` - DstPort uint16 `yaml:"dst-port" default:"80"` + DstPort uint16 `yaml:"dst-port" default:"8898"` } type FrontConfig struct { @@ -34,6 +39,7 @@ type FrontConfig struct { } type TapConfig struct { + Worker WorkerConfig `yaml:"worker"` Hub HubConfig `yaml:"hub"` Front FrontConfig `yaml:"front"` DockerRegistry string `yaml:"docker-registry" default:"docker.io/kubeshark"` diff --git a/go.mod b/go.mod index bbfd61d01..c33b31c02 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.17 require ( github.com/creasty/defaults v1.5.2 + github.com/docker/docker v20.10.22+incompatible github.com/docker/go-units v0.4.0 github.com/google/go-github/v37 v37.0.0 github.com/kubeshark/base v0.4.0 @@ -27,10 +28,13 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.0 // indirect github.com/PuerkitoBio/purell v1.1.1 // indirect github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/docker/distribution v2.7.1+incompatible // indirect + github.com/docker/go-connections v0.4.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fvbommel/sortorder v1.0.2 // indirect @@ -64,22 +68,28 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect + github.com/morikuni/aec v1.0.0 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.0.2 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday v1.6.0 // indirect + github.com/sirupsen/logrus v1.7.0 // indirect github.com/stretchr/testify v1.8.1 // indirect github.com/xlab/treeprint v1.1.0 // indirect go.starlark.net v0.0.0-20220203230714-bb14e151c28f // indirect golang.org/x/crypto v0.0.0-20220208050332-20e1d8d225ab // indirect + golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect golang.org/x/net v0.2.0 // indirect golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect golang.org/x/sys v0.2.0 // indirect golang.org/x/term v0.2.0 // indirect golang.org/x/text v0.4.0 // indirect golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11 // indirect + golang.org/x/tools v0.1.12 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/protobuf v1.27.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 66aa43538..92f4a6cb2 100644 --- a/go.sum +++ b/go.sum @@ -76,6 +76,8 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= @@ -147,7 +149,12 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v20.10.22+incompatible h1:6jX4yB+NtcbldT90k7vBSaWJDB3i+zkVJT9BEK8kQkk= +github.com/docker/docker v20.10.22+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -470,6 +477,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -492,7 +501,10 @@ github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -553,6 +565,8 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= @@ -696,6 +710,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -948,6 +964,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/kubernetes/provider.go b/kubernetes/provider.go index 6f23663f7..e8e11bb9b 100644 --- a/kubernetes/provider.go +++ b/kubernetes/provider.go @@ -389,7 +389,7 @@ func (provider *Provider) CreatePod(ctx context.Context, namespace string, podSp return provider.clientSet.CoreV1().Pods(namespace).Create(ctx, podSpec, metav1.CreateOptions{}) } -func (provider *Provider) CreateService(ctx context.Context, namespace string, serviceName string, appLabelValue string, targetPort int, port int32, nodePort int32) (*core.Service, error) { +func (provider *Provider) CreateService(ctx context.Context, namespace string, serviceName string, appLabelValue string, targetPort int, port int32) (*core.Service, error) { service := core.Service{ ObjectMeta: metav1.ObjectMeta{ Name: serviceName, diff --git a/kubernetes/proxy.go b/kubernetes/proxy.go index 92277ac4b..36a43e948 100644 --- a/kubernetes/proxy.go +++ b/kubernetes/proxy.go @@ -21,12 +21,11 @@ import ( const k8sProxyApiPrefix = "/" const kubesharkServicePort = 80 -func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16, dstPort uint16, kubesharkNamespace string, kubesharkServiceName string, cancel context.CancelFunc) (*http.Server, error) { +func StartProxy(kubernetesProvider *Provider, proxyHost string, srcPort uint16, kubesharkNamespace string, kubesharkServiceName string, cancel context.CancelFunc) (*http.Server, error) { log.Info(). Str("namespace", kubesharkNamespace). Str("service", kubesharkServiceName). Int("src-port", int(srcPort)). - Int("dst-port", int(dstPort)). Msg("Starting proxy...") filter := &proxy.FilterServer{ diff --git a/resources/createResources.go b/resources/createResources.go index 3de653e8f..dae54d8fa 100644 --- a/resources/createResources.go +++ b/resources/createResources.go @@ -66,14 +66,15 @@ func CreateHubResources(ctx context.Context, kubernetesProvider *kubernetes.Prov return kubesharkServiceAccountExists, err } - _, err = kubernetesProvider.CreateService(ctx, kubesharkResourcesNamespace, kubernetes.HubServiceName, kubernetes.HubServiceName, 80, int32(config.Config.Tap.Hub.DstPort), int32(config.Config.Tap.Hub.SrcPort)) + // TODO: Why the port values need to be 80? + _, err = kubernetesProvider.CreateService(ctx, kubesharkResourcesNamespace, kubernetes.HubServiceName, kubernetes.HubServiceName, 80, 80) if err != nil { return kubesharkServiceAccountExists, err } log.Info().Str("service", kubernetes.HubServiceName).Msg("Successfully created a service.") - _, err = kubernetesProvider.CreateService(ctx, kubesharkResourcesNamespace, kubernetes.FrontServiceName, kubernetes.FrontServiceName, 80, int32(config.Config.Tap.Front.DstPort), int32(config.Config.Tap.Front.SrcPort)) + _, err = kubernetesProvider.CreateService(ctx, kubesharkResourcesNamespace, kubernetes.FrontServiceName, kubernetes.FrontServiceName, 80, int32(config.Config.Tap.Front.DstPort)) if err != nil { return kubesharkServiceAccountExists, err }