From 7e52f46030cb219b70849d43cb534d53ff707d39 Mon Sep 17 00:00:00 2001 From: nimrod-up9 Date: Thu, 15 Jul 2021 13:00:20 +0300 Subject: [PATCH 1/4] Default image uses semver. --- cli/Makefile | 1 + cli/cmd/tap.go | 6 +++++- cli/mizu/version.go | 28 ++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 cli/mizu/version.go diff --git a/cli/Makefile b/cli/Makefile index b228e9fd1..0d8acf1f5 100644 --- a/cli/Makefile +++ b/cli/Makefile @@ -3,6 +3,7 @@ COMMIT_HASH=$(shell git rev-parse HEAD) GIT_BRANCH=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]') GIT_VERSION=$(shell git branch --show-current | tr '[:upper:]' '[:lower:]') BUILD_TIMESTAMP=$(shell date +%s) +SEM_VER=0.0.0 .PHONY: help .DEFAULT_GOAL := help diff --git a/cli/cmd/tap.go b/cli/cmd/tap.go index 46cb4b69e..8f2dd5c5c 100644 --- a/cli/cmd/tap.go +++ b/cli/cmd/tap.go @@ -92,6 +92,10 @@ Supported protocols are HTTP and gRPC.`, func init() { rootCmd.AddCommand(tapCmd) + mizuVersion := mizu.Version(mizu.SemVer) + majorVersion := mizuVersion.Major() + minorVersion := mizuVersion.Minor() + tapCmd.Flags().Uint16VarP(&mizuTapOptions.GuiPort, "gui-port", "p", 8899, "Provide a custom port for the web interface webserver") tapCmd.Flags().StringVarP(&mizuTapOptions.Namespace, "namespace", "n", "", "Namespace selector") tapCmd.Flags().BoolVar(&mizuTapOptions.Analysis, "analysis", false, "Uploads traffic to UP9 for further analysis (Beta)") @@ -99,7 +103,7 @@ func init() { tapCmd.Flags().Uint16VarP(&mizuTapOptions.SleepIntervalSec, "upload-interval", "", 10, "Interval in seconds for uploading data to UP9") tapCmd.Flags().BoolVarP(&mizuTapOptions.AllNamespaces, "all-namespaces", "A", false, "Tap all namespaces") tapCmd.Flags().StringVarP(&mizuTapOptions.KubeConfigPath, "kube-config", "k", "", "Path to kube-config file") - tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/%s:latest", mizu.Branch), "Custom image for mizu collector") + tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/main:%s.%s", majorVersion, minorVersion), "Custom image for mizu collector") tapCmd.Flags().StringArrayVarP(&mizuTapOptions.PlainTextFilterRegexes, "regex-masking", "r", nil, "List of regex expressions that are used to filter matching values from text/plain http bodies") tapCmd.Flags().StringVarP(&direction, "direction", "", "in", "Record traffic that goes in this direction (relative to the tapped pod): in/any") tapCmd.Flags().BoolVar(&mizuTapOptions.HideHealthChecks, "hide-healthchecks", false, "hides requests with kube-probe or prometheus user-agent headers") diff --git a/cli/mizu/version.go b/cli/mizu/version.go new file mode 100644 index 000000000..67f818501 --- /dev/null +++ b/cli/mizu/version.go @@ -0,0 +1,28 @@ +package mizu + +import ( + "regexp" +) + +type Version string + +func (v Version) Breakdown() (string, string, string) { + re := regexp.MustCompile(`\d+`) + breakdown := re.FindAllString(string(v), 3) + return breakdown[0], breakdown[1], breakdown[2] +} + +func (v Version) Major() string { + major, _, _ := v.Breakdown() + return major +} + +func (v Version) Minor() string { + _, minor, _ := v.Breakdown() + return minor +} + +func (v Version) Patch() string { + _, _, patch := v.Breakdown() + return patch +} From d93913733e1d747fa8d44bfb12ced86106f5b3d5 Mon Sep 17 00:00:00 2001 From: nimrod-up9 Date: Thu, 15 Jul 2021 13:20:42 +0300 Subject: [PATCH 2/4] Moved version parser to shared. --- cli/cmd/tap.go | 6 +----- cli/mizu/version.go => shared/semver/semver.go | 12 ++++++------ 2 files changed, 7 insertions(+), 11 deletions(-) rename cli/mizu/version.go => shared/semver/semver.go (58%) diff --git a/cli/cmd/tap.go b/cli/cmd/tap.go index 8f2dd5c5c..d765dbdbc 100644 --- a/cli/cmd/tap.go +++ b/cli/cmd/tap.go @@ -92,10 +92,6 @@ Supported protocols are HTTP and gRPC.`, func init() { rootCmd.AddCommand(tapCmd) - mizuVersion := mizu.Version(mizu.SemVer) - majorVersion := mizuVersion.Major() - minorVersion := mizuVersion.Minor() - tapCmd.Flags().Uint16VarP(&mizuTapOptions.GuiPort, "gui-port", "p", 8899, "Provide a custom port for the web interface webserver") tapCmd.Flags().StringVarP(&mizuTapOptions.Namespace, "namespace", "n", "", "Namespace selector") tapCmd.Flags().BoolVar(&mizuTapOptions.Analysis, "analysis", false, "Uploads traffic to UP9 for further analysis (Beta)") @@ -103,7 +99,7 @@ func init() { tapCmd.Flags().Uint16VarP(&mizuTapOptions.SleepIntervalSec, "upload-interval", "", 10, "Interval in seconds for uploading data to UP9") tapCmd.Flags().BoolVarP(&mizuTapOptions.AllNamespaces, "all-namespaces", "A", false, "Tap all namespaces") tapCmd.Flags().StringVarP(&mizuTapOptions.KubeConfigPath, "kube-config", "k", "", "Path to kube-config file") - tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/main:%s.%s", majorVersion, minorVersion), "Custom image for mizu collector") + tapCmd.Flags().StringVarP(&mizuTapOptions.MizuImage, "mizu-image", "", fmt.Sprintf("gcr.io/up9-docker-hub/mizu/%s:%s", mizu.Branch, mizu.SemVer), "Custom image for mizu collector") tapCmd.Flags().StringArrayVarP(&mizuTapOptions.PlainTextFilterRegexes, "regex-masking", "r", nil, "List of regex expressions that are used to filter matching values from text/plain http bodies") tapCmd.Flags().StringVarP(&direction, "direction", "", "in", "Record traffic that goes in this direction (relative to the tapped pod): in/any") tapCmd.Flags().BoolVar(&mizuTapOptions.HideHealthChecks, "hide-healthchecks", false, "hides requests with kube-probe or prometheus user-agent headers") diff --git a/cli/mizu/version.go b/shared/semver/semver.go similarity index 58% rename from cli/mizu/version.go rename to shared/semver/semver.go index 67f818501..f27ca33f0 100644 --- a/cli/mizu/version.go +++ b/shared/semver/semver.go @@ -1,28 +1,28 @@ -package mizu +package semver import ( "regexp" ) -type Version string +type SemVersion string -func (v Version) Breakdown() (string, string, string) { +func (v SemVersion) Breakdown() (string, string, string) { re := regexp.MustCompile(`\d+`) breakdown := re.FindAllString(string(v), 3) return breakdown[0], breakdown[1], breakdown[2] } -func (v Version) Major() string { +func (v SemVersion) Major() string { major, _, _ := v.Breakdown() return major } -func (v Version) Minor() string { +func (v SemVersion) Minor() string { _, minor, _ := v.Breakdown() return minor } -func (v Version) Patch() string { +func (v SemVersion) Patch() string { _, _, patch := v.Breakdown() return patch } From 69dbd8183724c7dd512ad11e76d69cff4f038fcc Mon Sep 17 00:00:00 2001 From: nimrod-up9 Date: Thu, 15 Jul 2021 13:26:47 +0300 Subject: [PATCH 3/4] Renamed public_routes.go -> entries_routes.go --- api/pkg/routes/{public_routes.go => entries_routes.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename api/pkg/routes/{public_routes.go => entries_routes.go} (100%) diff --git a/api/pkg/routes/public_routes.go b/api/pkg/routes/entries_routes.go similarity index 100% rename from api/pkg/routes/public_routes.go rename to api/pkg/routes/entries_routes.go From 29ed9edb6422e2565c1b24080b67a26fb901d5da Mon Sep 17 00:00:00 2001 From: nimrod-up9 Date: Thu, 15 Jul 2021 14:34:48 +0300 Subject: [PATCH 4/4] Added endpoint for metadata. --- api/main.go | 1 + api/pkg/controllers/metadata_controller.go | 14 ++++++++++++++ api/pkg/routes/metadata_routes.go | 13 +++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 api/pkg/controllers/metadata_controller.go create mode 100644 api/pkg/routes/metadata_routes.go diff --git a/api/main.go b/api/main.go index ba012fca7..40c930b73 100644 --- a/api/main.go +++ b/api/main.go @@ -101,6 +101,7 @@ func hostApi(socketHarOutputChannel chan<- *tap.OutputChannelItem) { } routes.WebSocketRoutes(app, &eventHandlers) routes.EntriesRoutes(app) + routes.MetadataRoutes(app) routes.NotFoundRoute(app) utils.StartServer(app) diff --git a/api/pkg/controllers/metadata_controller.go b/api/pkg/controllers/metadata_controller.go new file mode 100644 index 000000000..6a1b07e9b --- /dev/null +++ b/api/pkg/controllers/metadata_controller.go @@ -0,0 +1,14 @@ +package controllers + +import ( + "github.com/gofiber/fiber/v2" +) + +type VersionResponse struct { + SemVer string `json:"semver"` +} + +func GetVersion(c *fiber.Ctx) error { + resp := VersionResponse{SemVer: "1.2.3"} + return c.Status(fiber.StatusOK).JSON(resp) +} diff --git a/api/pkg/routes/metadata_routes.go b/api/pkg/routes/metadata_routes.go new file mode 100644 index 000000000..ba881a5b0 --- /dev/null +++ b/api/pkg/routes/metadata_routes.go @@ -0,0 +1,13 @@ +package routes + +import ( + "github.com/gofiber/fiber/v2" + "mizuserver/pkg/controllers" +) + +// EntriesRoutes func for describe group of public routes. +func MetadataRoutes(fiberApp *fiber.App) { + routeGroup := fiberApp.Group("/metadata") + + routeGroup.Get("/version", controllers.GetVersion) +}