diff --git a/Dockerfile b/Dockerfile index 20468ad99..5f831ed1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -41,12 +41,6 @@ RUN go build -ldflags="-s -w \ -X 'mizuserver/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \ -X 'mizuserver/pkg/version.SemVer=${SEM_VER}'" -o mizuagent . -# Download Basenine executable, verify the sha1sum and move it to a directory in $PATH -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64 ./basenine_linux_amd64 -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64.sha256 ./basenine_linux_amd64.sha256 -RUN shasum -a 256 -c basenine_linux_amd64.sha256 -RUN chmod +x ./basenine_linux_amd64 - COPY devops/build_extensions.sh .. RUN cd .. && /bin/bash build_extensions.sh @@ -58,7 +52,6 @@ WORKDIR /app # Copy binary and config files from /build to root folder of scratch container. COPY --from=builder ["/app/agent-build/mizuagent", "."] -COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"] COPY --from=builder ["/app/agent/build/extensions", "extensions"] COPY --from=site-build ["/app/ui-build/build", "site"] RUN mkdir /app/data/ diff --git a/agent/go.mod b/agent/go.mod index 2d58364fb..f11dd0116 100644 --- a/agent/go.mod +++ b/agent/go.mod @@ -17,7 +17,7 @@ require ( github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231 github.com/ory/kratos-client-go v0.8.2-alpha.1 github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3 + github.com/up9inc/basenine/client/go v0.0.0-20220107003657-7c0578359920 github.com/up9inc/mizu/shared v0.0.0 github.com/up9inc/mizu/tap v0.0.0 github.com/up9inc/mizu/tap/api v0.0.0 diff --git a/agent/go.sum b/agent/go.sum index d73bf64fa..2fd853b26 100644 --- a/agent/go.sum +++ b/agent/go.sum @@ -472,8 +472,8 @@ github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3 h1:FeDCVOBFVpZA5/O5hfPdGTn0rdR2jTEYo3iB2htELI4= -github.com/up9inc/basenine/client/go v0.0.0-20211215185650-10083bb9a1b3/go.mod h1:SvJGPoa/6erhUQV7kvHBwM/0x5LyO6XaG2lUaCaKiUI= +github.com/up9inc/basenine/client/go v0.0.0-20220107003657-7c0578359920 h1:QQpgRleNNpxxAG/rKmk4dwJh0jHyRaQz4QOVlPmqv1c= +github.com/up9inc/basenine/client/go v0.0.0-20220107003657-7c0578359920/go.mod h1:SvJGPoa/6erhUQV7kvHBwM/0x5LyO6XaG2lUaCaKiUI= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA= github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= diff --git a/agent/main.go b/agent/main.go index e8d815ff3..a21ce3fe0 100644 --- a/agent/main.go +++ b/agent/main.go @@ -16,7 +16,6 @@ import ( "mizuserver/pkg/utils" "net/http" "os" - "os/exec" "os/signal" "path" "path/filepath" @@ -115,7 +114,7 @@ func main() { go pipeTapChannelToSocket(socketConnection, filteredOutputItemsChannel) } else if *apiServerMode { - startBasenineServer(shared.BasenineHost, shared.BaseninePort) + configureBasenineServer(shared.BasenineHost, shared.BaseninePort) startTime = time.Now().UnixNano() / int64(time.Millisecond) api.StartResolving(*namespace) @@ -149,16 +148,7 @@ func main() { logger.Log.Info("Exiting") } -func startBasenineServer(host string, port string) { - cmd := exec.Command("basenine", "-addr", host, "-port", port, "-persistent") - cmd.Dir = config.Config.AgentDatabasePath - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Start() - if err != nil { - logger.Log.Panicf("Failed starting Basenine: %v", err) - } - +func configureBasenineServer(host string, port string) { if !wait.New( wait.WithProto("tcp"), wait.WithWait(200*time.Millisecond), @@ -166,25 +156,16 @@ func startBasenineServer(host string, port string) { wait.WithDeadline(5*time.Second), wait.WithDebug(true), ).Do([]string{fmt.Sprintf("%s:%s", host, port)}) { - logger.Log.Panicf("Basenine is not available: %v", err) + logger.Log.Panicf("Basenine is not available!") } - // Make a channel to gracefully exit Basenine. - channel := make(chan os.Signal) - signal.Notify(channel, os.Interrupt, syscall.SIGTERM) - - // Handle the channel. - go func() { - <-channel - cmd.Process.Signal(syscall.SIGTERM) - }() - // Limit the database size to default 200MB - err = basenine.Limit(host, port, config.Config.MaxDBSizeBytes) + err := basenine.Limit(host, port, config.Config.MaxDBSizeBytes) if err != nil { logger.Log.Panicf("Error while limiting database size: %v", err) } + // Define the macros for _, extension := range extensions { macros := extension.Dissector.Macros() for macro, expanded := range macros { diff --git a/debug.Dockerfile b/debug.Dockerfile index e063e887f..35ecd6d54 100644 --- a/debug.Dockerfile +++ b/debug.Dockerfile @@ -36,12 +36,6 @@ COPY tap ../tap COPY agent . RUN go build -gcflags="all=-N -l" -o mizuagent . -# Download Basenine executable, verify the sha1sum and move it to a directory in $PATH -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64 ./basenine_linux_amd64 -ADD https://github.com/up9inc/basenine/releases/download/v0.2.19/basenine_linux_amd64.sha256 ./basenine_linux_amd64.sha256 -RUN shasum -a 256 -c basenine_linux_amd64.sha256 -RUN chmod +x ./basenine_linux_amd64 - COPY devops/build_extensions_debug.sh .. RUN cd .. && /bin/bash build_extensions_debug.sh @@ -54,7 +48,6 @@ WORKDIR /app # Copy binary and config files from /build to root folder of scratch container. COPY --from=builder ["/app/agent-build/mizuagent", "."] -COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"] COPY --from=builder ["/app/agent/build/extensions", "extensions"] COPY --from=site-build ["/app/ui-build/build", "site"] diff --git a/shared/consts.go b/shared/consts.go index 97dc362d7..5c7b18f50 100644 --- a/shared/consts.go +++ b/shared/consts.go @@ -14,6 +14,8 @@ const ( GoGCEnvVar = "GOGC" DefaultApiServerPort = 8899 LogLevelEnvVar = "LOG_LEVEL" - BasenineHost = "localhost" + BasenineHost = "127.0.0.1" BaseninePort = "9099" + BasenineImageRepo = "ghcr.io/up9inc/basenine" + BasenineImageTag = "v0.2.26" ) diff --git a/shared/kubernetes/provider.go b/shared/kubernetes/provider.go index 072ea00f3..f5694f7c9 100644 --- a/shared/kubernetes/provider.go +++ b/shared/kubernetes/provider.go @@ -278,6 +278,36 @@ func (provider *Provider) GetMizuApiServerPodObject(opts *ApiServerOptions, moun }, }, }, + { + Name: "basenine", + Image: fmt.Sprintf("%s:%s", shared.BasenineImageRepo, shared.BasenineImageTag), + ImagePullPolicy: opts.ImagePullPolicy, + VolumeMounts: volumeMounts, + ReadinessProbe: &core.Probe{ + FailureThreshold: 3, + Handler: core.Handler{ + TCPSocket: &core.TCPSocketAction{ + Port: intstr.Parse(shared.BaseninePort), + }, + }, + PeriodSeconds: 1, + SuccessThreshold: 1, + TimeoutSeconds: 1, + }, + Resources: core.ResourceRequirements{ + Limits: core.ResourceList{ + "cpu": cpuLimit, + "memory": memLimit, + }, + Requests: core.ResourceList{ + "cpu": cpuRequests, + "memory": memRequests, + }, + }, + Command: []string{"/basenine"}, + Args: []string{"-addr", "0.0.0.0", "-port", shared.BaseninePort, "-persistent"}, + WorkingDir: shared.DataDirPath, + }, } if createAuthContainer {