mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-08-18 08:29:36 +00:00
* Replace all `rlog` occurrences with the shared logger * Use the same log format in `InitLoggerStderrOnly` as well * Convert one more `log.Fatal` to `logger.Log.Errorf` as well in the `cli` * Replace `log.` occurrences with `logger.Log.` in `agent` * Fix `cannot use err (type error)` * Change the logging level to `DEBUG` * Replace an `Errorf` with `Fatal` * Add informative message
70 lines
2.1 KiB
Markdown
70 lines
2.1 KiB
Markdown
<!--
|
|
(NOT RELEVANT CURRENTLY)
|
|
## 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
|
|
``` go
|
|
errOut := make(chan error, 100)
|
|
k8sResolver, err := resolver.NewFromOutOfCluster("", errOut)
|
|
if err != nil {
|
|
logger.Log.Errorf("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 {
|
|
logger.Log.Errorf("resolved 10.107.251.91=%s", *resolvedName)
|
|
} else {
|
|
logger.Log.Error("Could not find a resolved name for 10.107.251.91")
|
|
}
|
|
|
|
for {
|
|
select {
|
|
case err := <- errOut:
|
|
logger.Log.Errorf("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.
|
|
|
|
|