mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-07-04 03:48:58 +00:00
Move Basenine binary into a separate container (#603)
* Move Basenine binary into a separate container * Set `WorkingDir` to `shared.DataDirPath` in the `basenine` container * Use `consts.go` to set the Basenine image and port * Bring back the `net-wait-go` usage to prevent startup failures
This commit is contained in:
parent
adf2274213
commit
e3e9681110
@ -41,12 +41,6 @@ RUN go build -ldflags="-s -w \
|
|||||||
-X 'mizuserver/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \
|
-X 'mizuserver/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \
|
||||||
-X 'mizuserver/pkg/version.SemVer=${SEM_VER}'" -o mizuagent .
|
-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 ..
|
COPY devops/build_extensions.sh ..
|
||||||
RUN cd .. && /bin/bash 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 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/mizuagent", "."]
|
||||||
COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"]
|
|
||||||
COPY --from=builder ["/app/agent/build/extensions", "extensions"]
|
COPY --from=builder ["/app/agent/build/extensions", "extensions"]
|
||||||
COPY --from=site-build ["/app/ui-build/build", "site"]
|
COPY --from=site-build ["/app/ui-build/build", "site"]
|
||||||
RUN mkdir /app/data/
|
RUN mkdir /app/data/
|
||||||
|
@ -17,7 +17,7 @@ require (
|
|||||||
github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231
|
github.com/orcaman/concurrent-map v0.0.0-20210106121528-16402b402231
|
||||||
github.com/ory/kratos-client-go v0.8.2-alpha.1
|
github.com/ory/kratos-client-go v0.8.2-alpha.1
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
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/shared v0.0.0
|
||||||
github.com/up9inc/mizu/tap v0.0.0
|
github.com/up9inc/mizu/tap v0.0.0
|
||||||
github.com/up9inc/mizu/tap/api v0.0.0
|
github.com/up9inc/mizu/tap/api v0.0.0
|
||||||
|
@ -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 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 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs=
|
||||||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
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-20220107003657-7c0578359920 h1:QQpgRleNNpxxAG/rKmk4dwJh0jHyRaQz4QOVlPmqv1c=
|
||||||
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/go.mod h1:SvJGPoa/6erhUQV7kvHBwM/0x5LyO6XaG2lUaCaKiUI=
|
||||||
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
|
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 h1:p4VB7kIXpOQvVn1ZaTIVp+3vuYAXFe3OJEvjbUYJLaA=
|
||||||
github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
|
github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0=
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"mizuserver/pkg/utils"
|
"mizuserver/pkg/utils"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"path"
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -115,7 +114,7 @@ func main() {
|
|||||||
|
|
||||||
go pipeTapChannelToSocket(socketConnection, filteredOutputItemsChannel)
|
go pipeTapChannelToSocket(socketConnection, filteredOutputItemsChannel)
|
||||||
} else if *apiServerMode {
|
} else if *apiServerMode {
|
||||||
startBasenineServer(shared.BasenineHost, shared.BaseninePort)
|
configureBasenineServer(shared.BasenineHost, shared.BaseninePort)
|
||||||
startTime = time.Now().UnixNano() / int64(time.Millisecond)
|
startTime = time.Now().UnixNano() / int64(time.Millisecond)
|
||||||
api.StartResolving(*namespace)
|
api.StartResolving(*namespace)
|
||||||
|
|
||||||
@ -149,16 +148,7 @@ func main() {
|
|||||||
logger.Log.Info("Exiting")
|
logger.Log.Info("Exiting")
|
||||||
}
|
}
|
||||||
|
|
||||||
func startBasenineServer(host string, port string) {
|
func configureBasenineServer(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)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !wait.New(
|
if !wait.New(
|
||||||
wait.WithProto("tcp"),
|
wait.WithProto("tcp"),
|
||||||
wait.WithWait(200*time.Millisecond),
|
wait.WithWait(200*time.Millisecond),
|
||||||
@ -166,25 +156,16 @@ func startBasenineServer(host string, port string) {
|
|||||||
wait.WithDeadline(5*time.Second),
|
wait.WithDeadline(5*time.Second),
|
||||||
wait.WithDebug(true),
|
wait.WithDebug(true),
|
||||||
).Do([]string{fmt.Sprintf("%s:%s", host, port)}) {
|
).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
|
// 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 {
|
if err != nil {
|
||||||
logger.Log.Panicf("Error while limiting database size: %v", err)
|
logger.Log.Panicf("Error while limiting database size: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Define the macros
|
||||||
for _, extension := range extensions {
|
for _, extension := range extensions {
|
||||||
macros := extension.Dissector.Macros()
|
macros := extension.Dissector.Macros()
|
||||||
for macro, expanded := range macros {
|
for macro, expanded := range macros {
|
||||||
|
@ -36,12 +36,6 @@ COPY tap ../tap
|
|||||||
COPY agent .
|
COPY agent .
|
||||||
RUN go build -gcflags="all=-N -l" -o mizuagent .
|
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 ..
|
COPY devops/build_extensions_debug.sh ..
|
||||||
RUN cd .. && /bin/bash 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 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/mizuagent", "."]
|
||||||
COPY --from=builder ["/app/agent-build/basenine_linux_amd64", "/usr/local/bin/basenine"]
|
|
||||||
COPY --from=builder ["/app/agent/build/extensions", "extensions"]
|
COPY --from=builder ["/app/agent/build/extensions", "extensions"]
|
||||||
COPY --from=site-build ["/app/ui-build/build", "site"]
|
COPY --from=site-build ["/app/ui-build/build", "site"]
|
||||||
|
|
||||||
|
@ -14,6 +14,8 @@ const (
|
|||||||
GoGCEnvVar = "GOGC"
|
GoGCEnvVar = "GOGC"
|
||||||
DefaultApiServerPort = 8899
|
DefaultApiServerPort = 8899
|
||||||
LogLevelEnvVar = "LOG_LEVEL"
|
LogLevelEnvVar = "LOG_LEVEL"
|
||||||
BasenineHost = "localhost"
|
BasenineHost = "127.0.0.1"
|
||||||
BaseninePort = "9099"
|
BaseninePort = "9099"
|
||||||
|
BasenineImageRepo = "ghcr.io/up9inc/basenine"
|
||||||
|
BasenineImageTag = "v0.2.26"
|
||||||
)
|
)
|
||||||
|
@ -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 {
|
if createAuthContainer {
|
||||||
|
Loading…
Reference in New Issue
Block a user