* Update .gitignore
* WIP
* WIP
* Update README.md, root.go, and 4 more files...
* Update README.md
* Update README.md
* Update root.go
* Update provider.go
* Update provider.go
* Update root.go, go.mod, and go.sum
* Update mizu.go
* Update go.sum and provider.go
* Update portForward.go, watch.go, and mizu.go
* Update README.md
* Update watch.go
* Update mizu.go
* Update mizu.go
* no message
* no message
* remove unused things and use external for object id (instead of copy)
* no message
* Update mizu.go
* Update go.mod, go.sum, and 2 more files...
* no message
* Update README.md, go.mod, and resolver.go
* Update README.md
* Update go.mod
* Update loader.go
* some refactor
* Update loader.go
* no message
* status to statusCode
* return data directly
* Traffic viewer
* cleaning
* css
* no message
* Clean warnings
* Makefile - first draft
* Update Makefile
* Update Makefile
* Update Makefile, README.md, and 4 more files...
* Add api build and clean to makefile (files restructure) (#9)
* no message
* add clean api command
* no message
* stating with web socket
* Add tap as a separate executable (#10)
* Added tap.
* Ignore build directories.
* Added tapper build to Makefile.
* Improvements (#12)
* no message
* no message
* Feature/makefile (#11)
* minor fixes
* makefile fixes - docker build
* minor fix in Makefile
Co-authored-by: Alex Haiut <alex@up9.com>
* Update Dockerfile, multi-runner.sh, and 31 more files...
* Update multi-runner.sh
* no message
* Update .dockerignore, Dockerfile, and 30 more files...
* Update cleaner.go, grpc_assembler.go, and 2 more files...
* start the pod with host network and privileged
* fix multi runner passive tapper command
* add HOST_MODE env var
* do not return true in the should tap function
* remove line in the end
* default value in api is input
fix description and pass the parameter in the multi runner script
* missing flag.parse
* no message
* fix image
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Small fixes - permission + har writing exception (#17)
* Select node by pod (#18)
* Select node by pod.
* Removed watch pod by regex. Irrelevant for now.
* Changed default image to develop:latest.
* Features/clifix (#19)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
Co-authored-by: Alex Haiut <alex@up9.com>
* meta information
* Only record traffic of the requested pod. Filtered by pod IP. (#21)
* fixed readme and reduced batch size to 5 (#22)
Co-authored-by: Alex Haiut <alex@up9.com>
* API and TAP in single process (#24)
* no message
* no message
* CLI make --pod required flag and faster api image build (#25)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
* typo
* run example incorreect in makefile
* no message
* no message
* no message
Co-authored-by: Alex Haiut <alex@up9.com>
* Reduce delay between tap and UI - Skip dump to file (#26)
* Pass HARs between tap and api via channel.
* Fixed make docker commad.
* Various fixes.
* Added .DS_Store to .gitignore.
* Parse flags in Mizu main instead of in tap_output.go.
* Use channel to pass HAR by default instead of files.
* Infinite scroll (#28)
* no message
* infinite scroll + new ws implementation
* no message
* scrolling top
* fetch button
* more Backend changes
* fix go mod and sum
* mire fixes against develop
* unused code
* small ui refactor
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Fix gRPC crash, display gRPC as base64, display gRPC URL and status code (#27)
* Added Method (POST) and URL (emtpy) to gRPC requests.
* Removed quickfix that skips writing HTTP/2 to HAR.
* Use HTTP/2 body to fill out http.Request and htt.Response.
* Make sure that in HARs request.postData.mimeType and response.content.mimeType are application/grpc in case of grpc.
* Comment.
* Add URL and status code for gRPC.
* Don't assume http scheme.
* Use http.Header.Set instead of manually acccessing the underlaying map.
* General stats api fix (#29)
* refactor and validation
* Show gRPC as ASCII (#31)
* Moved try-catch up one block.
* Display grpc as ASCII.
* Better code in entries fetch endpoint (#30)
* no message
* no message
* Feature/UI/filters (#32)
* UI filters
* refactor
* Revert "refactor"
This reverts commit 70e7d4b6ac.
* remove recursive func
* CLI cleanup (#33)
* Moved cli root command to tap subcommand.
* tap subcommand works.
* Added view and fetch placeholders.
* Updated descriptions.
* Fixed indentation.
* Added versio subcommand.
* Removed version flag.
* gofmt.
* Changed pod from flag to arg.
* Commented out "all namespaces" flag.
* CLI cleanup 2 (#34)
* Renamed dashboard -> GUI/web interface.
* Commented out --quiet, removed unused config variables.
* Quiter output when calling unimplemented subcommands.
* Leftovers from PR #30 (#36)
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
Installation
To be able to import this package, you must add replace github.com/up9inc/mizu/resolver => ../resolver to the end of your go.mod file
And then add github.com/up9inc/mizu/resolver v0.0.0 to your require block
full example go.mod:
module github.com/up9inc/mizu/cli
go 1.16
require (
github.com/spf13/cobra v1.1.3
github.com/up9inc/mizu/resolver v0.0.0
k8s.io/api v0.21.0
k8s.io/apimachinery v0.21.0
k8s.io/client-go v0.21.0
)
replace github.com/up9inc/mizu/resolver => ../resolver
Now you will be able to import github.com/up9inc/mizu/resolver in any .go file
Usage
Full example
errOut := make(chan error, 100)
k8sResolver, err := resolver.NewFromOutOfCluster("", errOut)
if err != nil {
fmt.Printf("error creating k8s resolver %s", err)
}
ctx, cancel := context.WithCancel(context.Background())
k8sResolver.Start(ctx)
resolvedName := k8sResolver.Resolve("10.107.251.91") // will always return `nil` in real scenarios as the internal map takes a moment to populate after `Start` is called
if resolvedName != nil {
fmt.Printf("resolved 10.107.251.91=%s", *resolvedName)
} else {
fmt.Printf("Could not find a resolved name for 10.107.251.91")
}
for {
select {
case err := <- errOut:
fmt.Printf("name resolving error %s", err)
}
}
In cluster authentication
Create resolver using the function NewFromInCluster(errOut chan error)
Out of cluster authentication
Create resolver using the function NewFromOutOfCluster(kubeConfigPath string, errOut chan error)
the kubeConfigPath param is optional, pass an empty string "" for resolver to auto locate the default kubeconfig file
Error handling
Please ensure there is always a thread reading from the errOut channel, not doing so will result in the resolver threads getting blocked and the resolver will fail to update.
Also note that any error you receive through this channel does not necessarily mean that resolver is no longer running. the resolver will infinitely retry watching k8s resources until the provided context is cancelled.