From 5d8d6e21643d257b429f4a094404e4807faeee90 Mon Sep 17 00:00:00 2001 From: Aleksandr Arefev <39635005+alexarefev@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:42:14 +0300 Subject: [PATCH] multi-stage dockerfile; verbose help --- Dockerfile | 23 ++++++++++------- go.mod | 5 ---- go.sum | 14 ----------- .../scripts/source/ipip_check/ipip_check.go | 25 +++++++++++++------ 4 files changed, 31 insertions(+), 36 deletions(-) delete mode 100644 go.mod delete mode 100644 go.sum diff --git a/Dockerfile b/Dockerfile index fcbe2ff43..a095a6552 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,16 @@ -FROM python:3.12-slim-bullseye +# syntax=docker/dockerfile:1 + +# Build ipip_check binary +FROM golang:1.19 AS go-build + +WORKDIR /opt + +COPY ./kubemarine/resources/scripts/source/ipip_check ./ + +RUN go mod download && \ + GOOS=linux CGO_ENABLED=1 go build -ldflags="-linkmode external -extldflags='-static'" -o ipip_check -buildvcs=false + +FROM python:3.12-slim-bullseye AS python-build ARG BUILD_TYPE @@ -8,17 +20,10 @@ ENV PYTHONUNBUFFERED 1 ENV ANSIBLE_HOST_KEY_CHECKING False COPY . /opt/kubemarine/ +COPY --from=go-build /opt/ipip_check /opt/kubemarine/kubemarine/resources/scripts/ WORKDIR /opt/kubemarine/ RUN apt update && \ - # Install Golang and build ipip_check - apt install -y wget gcc && \ - wget https://golang.org/dl/go1.19.8.linux-amd64.tar.gz && \ - tar -C /usr/local -xzf go1.19.8.linux-amd64.tar.gz && \ - /usr/local/go/bin/go mod download && \ - GOOS=linux CGO_ENABLED=1 /usr/local/go/bin/go build -ldflags="-linkmode external -extldflags='-static'" -o kubemarine/resources/scripts/ipip_check -buildvcs=false kubemarine/resources/scripts/source/ipip_check/ipip_check.go && \ - rm -Rf /usr/local/go go1.19.8.linux-amd64.tar.gz && \ - apt autoremove -y gcc wget && \ pip3 install --no-cache-dir build && \ python3 -m build -n && \ # In any if branch delete source code, but preserve specific directories for different service aims diff --git a/go.mod b/go.mod deleted file mode 100644 index dff286a24..000000000 --- a/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module code.google.com/p/gopacket - -go 1.19 - -require github.com/google/gopacket v1.1.19 diff --git a/go.sum b/go.sum deleted file mode 100644 index 29f572a57..000000000 --- a/go.sum +++ /dev/null @@ -1,14 +0,0 @@ -github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= -github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/kubemarine/resources/scripts/source/ipip_check/ipip_check.go b/kubemarine/resources/scripts/source/ipip_check/ipip_check.go index 59f95b468..a8e4c88b6 100644 --- a/kubemarine/resources/scripts/source/ipip_check/ipip_check.go +++ b/kubemarine/resources/scripts/source/ipip_check/ipip_check.go @@ -22,7 +22,6 @@ import ( "fmt" "net" "os" - //"strconv" "time" "flag" "errors" @@ -37,22 +36,33 @@ var ( dport, timeout uint ) +func customUsage() { + fmt.Printf("Usage of %s:\n", os.Args[0]) + fmt.Printf("%s -mode client -src 192.168.0.1 -ext 192.168.0.2 -int 240.0.0.1 -dport 54545 -msg Message -timeout 10\n", + os.Args[0]) + fmt.Printf("%s -mode server -ext 192.168.0.2 -int 240.0.0.1 -dport 54545 -msg Message -timeout 3\n", + os.Args[0]) + fmt.Println("Where:") + flag.PrintDefaults() +} + func parseParam() error { + flag.Usage = customUsage // Server or client mode. Server gets and parses IPIP pakets, and client sends IPIP pakets flag.StringVar(&mode, "mode", "", "Server or client mode") // External source IP (Src IP) - flag.StringVar(&src, "src", "", "External source address") + flag.StringVar(&src, "src", "", "External source IP address") // External destination IP (DstExt IP) - flag.StringVar(&dstExt, "ext", "", "External destination address") + flag.StringVar(&dstExt, "ext", "", "External destination IP address") // Internal destination IP (DstInt IP) - flag.StringVar(&dstInt, "int", "", "Internal destination address") + flag.StringVar(&dstInt, "int", "", "Internal destination IP address") // UDP port number (UDP Dst Port) flag.UintVar(&dport, "dport", 65000, "Destination UDP port") - flag.UintVar(&timeout, "timeout", 0, "Internal destination address") - flag.StringVar(&msg, "msg", "", "Internal destination address") + flag.UintVar(&timeout, "timeout", 0, "Operation timeout") + flag.StringVar(&msg, "msg", "", "Message as UDP payload") flag.Parse() if mode != "server" && mode != "client" { - return errors.New("Unknown mode") + return errors.New("Unknown mode. It might be 'server' or 'client'") } srcIP = net.ParseIP(src) if srcIP == nil && mode == "client" { @@ -199,5 +209,4 @@ func main() { case "client": runClt() } - //fmt.Printf("SRC:%s; EXT: %s; INT:%s; PORT: %v; TIMEOUT: %v; MSG: %s\n", srcIP, dstExtIP, dstIntIP, dport, timeout, msg) }