Compare commits

...

12 Commits

Author SHA1 Message Date
M. Mert Yıldıran
0eb7883a47 Rename the project to Kubeshark (#1226)
* Rename `mizu` to `kubeshark`

* Rename `up9inc` to `kubeshark`

* Change the logo, title, motto and the main color

* Replace the favicon

* Update the docs link

* Change the copyright text in C files

* Remove a comment

* Rewrite the `README.md` and update the logo and screenshots used in it

* Add a `TODO`

* Fix the grammar

* Fix the bottom text in the filtering guide

* Change the Docker Hub username of cross-compilation intermediate images

* Add an install script

* Fix `docker/login-action` in the CI

* Delete `build-custom-branch.yml` GitHub workflow

* Update `README.md`

* Remove `install.sh`

* Change the motto back to "Traffic viewer for Kubernetes"
2022-11-19 11:13:15 +03:00
M. Mert Yıldıran
e52ba1f05d Add AF_PACKET support (#1052)
* Add `AF_PACKET` support

* Update `.gitignore`

* Support both `libpcap` and `AF_PACKET` at the same time

* Fix linter errors

* Fix a bug that introduced while fixing a linter error

* Revert the changes related to `MaxBufferedPages` prefixed consts

* #run_acceptance_tests

* #run_acceptance_tests

* Revert channel buffer size #run_acceptance_tests

* Revert "Revert channel buffer size #run_acceptance_tests"

This reverts commit e62c3844cd.

* Increase `cy.wait` from `500` to `1000` #run_acceptance_tests

* Fix the `pcapHandle` handle

* Revert "Increase `cy.wait` from `500` to `1000` #run_acceptance_tests"

This reverts commit 938c550e72.

* #run_acceptance_tests

* Handle the merge conflicts

* Add `AF_XDP` support

* Implement `Close()` of `AF_XDP` and fix linter errors

* Fix `NewIPProtoProgram` function and internet protocol number

* Pipe the packet stream from every network interface using `*pcapgo.NgReader` and `*pcapgo.NgWriter`

Implement `SetDecoder` and `SetBPF` methods.

* Fix `NewNgReader` call

* Implement `Stats` method

* Rebroadcast to the XDP socket

* Add `-packet-capture` flag and make `AF_PACKET`, `AF_XDP` optional

* #run_acceptance_tests

* Fix `newAfXdpHandle` method

* #run_acceptance_tests

* Update tap/xdp/ipproto.c

Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>

* Update tap/xdp/ipproto.c

Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>

* Update tap/xdp/ipproto.c

Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>

* Fix several issues

* Update tap/xdp/ipproto.c

Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>

* Fix `ipproto.c`

* Remove `AF_XDP`

* Comment on frameSize

Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
2022-08-08 13:48:19 +03:00
gadotroee
378270ee3d Change tests to use github repo (#1211)
remove goole related stuff
2022-07-26 15:23:37 +03:00
Nimrod Gilboa Markevich
692c500b0f Improve Go TLS address availability (#1207)
Fetch source and destination addresses with bpf from tcp kprobes, similar to how it is done for openssl lib.
Chunk contains both source address and destination address.
FD is no longer used to obtain addresses.
2022-07-19 14:31:27 +03:00
gadotroee
5525214d0a Fix memory of acceptanceTests minikube cluster (#1209) 2022-07-19 12:55:44 +03:00
RoyIsland
efd414a2ed Removed telemetry (#1208) 2022-07-19 12:29:48 +03:00
AmitUp9
b3e79ff244 Grooming Traffic Stats Modal - change font and time picker position (#1206)
* font change and time picker position update

* add font-family to variables scss
2022-07-17 17:19:44 +03:00
AmitUp9
d4b9fea5a7 fix elastic time picker ui css (#1204) 2022-07-14 11:11:05 +03:00
leon-up9
d11770681b full height (#1202)
Co-authored-by: Leon <>
2022-07-13 18:37:22 +03:00
gadotroee
e9719cba3a Add time range to stats (#1199) 2022-07-13 17:21:18 +03:00
leon-up9
15f7b889e2 height change (#1201)
Co-authored-by: Leon <>
2022-07-13 13:37:08 +03:00
RoyUP9
d98ac0e8f7 Removed redundant IgnoredUserAgents field (#1198) 2022-07-12 20:41:42 +03:00
307 changed files with 62356 additions and 12674 deletions

View File

@@ -12,7 +12,7 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Run `mizu <command> ...`
1. Run `kubeshark <command> ...`
2. Click on '...'
3. Scroll down to '...'
4. See error
@@ -22,10 +22,10 @@ A clear and concise description of what you expected to happen.
**Logs**
Upload logs:
1. Run the mizu command with `--set dump-logs=true` (e.g `mizu tap --set dump-logs=true`)
1. Run the kubeshark command with `--set dump-logs=true` (e.g `kubeshark tap --set dump-logs=true`)
2. Try to reproduce the issue
3. <kbd>CTRL</kbd>+<kbd>C</kbd> on terminal tab which runs `mizu`
4. Upload the logs zip file from `~/.mizu/mizu_logs_**.zip`
3. <kbd>CTRL</kbd>+<kbd>C</kbd> on terminal tab which runs `kubeshark`
4. Upload the logs zip file from `~/.kubeshark/kubeshark_logs_**.zip`
**Screenshots**
If applicable, add screenshots to help explain your problem.

View File

@@ -9,7 +9,7 @@ on:
- 'develop'
env:
MIZU_CI_IMAGE: mizu/ci:0.0
KUBESHARK_CI_IMAGE: kubeshark/ci:0.0
jobs:
run-acceptance-tests:
@@ -33,7 +33,7 @@ jobs:
context: .
push: false
load: true
tags: ${{ env.MIZU_CI_IMAGE }}
tags: ${{ env.KUBESHARK_CI_IMAGE }}
cache-from: type=gha
cache-to: type=gha,mode=max
@@ -52,15 +52,3 @@ jobs:
- name: Test
run: make acceptance-test
- name: Slack notification on failure
uses: ravsamhq/notify-slack-action@v1
if: always()
with:
status: ${{ job.status }}
notification_title: 'Mizu {workflow} has {status_message}'
message_format: '{emoji} *{workflow}* {status_message} during <{run_url}|run>, after commit <{commit_url}|{commit_sha}> by ${{ github.event.head_commit.author.name }} <${{ github.event.head_commit.author.email }}> ```${{ github.event.head_commit.message }}```'
footer: 'Linked Repo <{repo_url}|{repo}>'
notify_when: 'failure'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

View File

@@ -3,7 +3,7 @@ name: Acceptance tests on PR
on: push
env:
MIZU_CI_IMAGE: mizu/ci:0.0
KUBESHARK_CI_IMAGE: kubeshark/ci:0.0
concurrency:
group: acceptance-tests-on-pr-${{ github.ref }}
@@ -33,7 +33,7 @@ jobs:
context: .
push: false
load: true
tags: ${{ env.MIZU_CI_IMAGE }}
tags: ${{ env.KUBESHARK_CI_IMAGE }}
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -1,44 +0,0 @@
name: Build Custom Branch
on: push
concurrency:
group: custom-branch-build-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Push custom branch image to GCR
runs-on: ubuntu-latest
if: ${{ contains(github.event.head_commit.message, '#build_and_publish_custom_image') }}
steps:
- name: Check out the repo
uses: actions/checkout@v2
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GCR_JSON_KEY }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: Get base image name
shell: bash
run: echo "##[set-output name=image;]$(echo gcr.io/up9-docker-hub/mizu/${GITHUB_REF#refs/heads/})"
id: base_image_step
- name: Login to GCR
uses: docker/login-action@v1
with:
registry: gcr.io
username: _json_key
password: ${{ secrets.GCR_JSON_KEY }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.base_image_step.outputs.image }}:latest

View File

@@ -7,7 +7,7 @@ on:
- 'main'
concurrency:
group: mizu-pr-validation-${{ github.ref }}
group: kubeshark-pr-validation-${{ github.ref }}
cancel-in-progress: true
jobs:
@@ -57,6 +57,6 @@ jobs:
with:
context: .
push: false
tags: up9inc/mizu:devlatest
tags: kubeshark/kubeshark:devlatest
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -7,7 +7,7 @@ on:
- 'main'
concurrency:
group: mizu-publish-${{ github.ref }}
group: kubeshark-publish-${{ github.ref }}
cancel-in-progress: true
jobs:
@@ -55,7 +55,7 @@ jobs:
uses: docker/metadata-action@v3
with:
images: |
up9inc/mizu
kubeshark/kubeshark
tags: |
type=raw,${{ steps.versioning.outputs.version }}
type=raw,value=latest,enable=${{ steps.condval.outputs.value == 'stable' }}
@@ -66,98 +66,10 @@ jobs:
suffix=-${{ matrix.target }},onlatest=true
- name: Login to Docker Hub
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASS }}
- name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
TARGETARCH=${{ matrix.target }}
VER=${{ steps.versioning.outputs.version }}
BUILD_TIMESTAMP=${{ steps.version_parameters.outputs.build_timestamp }}
GIT_BRANCH=${{ steps.version_parameters.outputs.branch }}
COMMIT_HASH=${{ github.sha }}
gcp-registry:
name: Push Docker image to GCR
runs-on: ubuntu-latest
strategy:
max-parallel: 2
fail-fast: false
matrix:
target:
- amd64
- arm64v8
steps:
- name: Check out the repo
uses: actions/checkout@v2
- id: 'auth'
uses: 'google-github-actions/auth@v0'
with:
credentials_json: '${{ secrets.GCR_JSON_KEY }}'
- name: 'Set up Cloud SDK'
uses: 'google-github-actions/setup-gcloud@v0'
- name: Determine versioning strategy
uses: haya14busa/action-cond@v1
id: condval
with:
cond: ${{ github.ref == 'refs/heads/main' }}
if_true: "stable"
if_false: "dev"
- name: Auto Increment Ver Action
uses: docker://igorgov/auto-inc-ver:v2.0.0
id: versioning
with:
mode: ${{ steps.condval.outputs.value }}
suffix: 'dev'
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Get version parameters
shell: bash
run: |
echo "##[set-output name=build_timestamp;]$(echo $(date +%s))"
echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: version_parameters
- name: Get base image name
shell: bash
run: echo "##[set-output name=image;]$(echo gcr.io/up9-docker-hub/mizu/${GITHUB_REF#refs/heads/})"
id: base_image_step
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: |
${{ steps.base_image_step.outputs.image }}
tags: |
type=raw,${{ steps.versioning.outputs.version }}
type=raw,value=latest,enable=${{ steps.condval.outputs.value == 'stable' }}
type=raw,value=dev-latest,enable=${{ steps.condval.outputs.value == 'dev' }}
flavor: |
latest=auto
prefix=
suffix=-${{ matrix.target }},onlatest=true
- name: Login to GCR
uses: docker/login-action@v1
with:
registry: gcr.io
username: _json_key
password: ${{ secrets.GCR_JSON_KEY }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v2
@@ -206,16 +118,16 @@ jobs:
uses: docker/metadata-action@v3
with:
images: |
up9inc/mizu
kubeshark/kubeshark
tags: |
type=raw,${{ steps.versioning.outputs.version }}
type=raw,value=latest,enable=${{ steps.condval.outputs.value == 'stable' }}
type=raw,value=dev-latest,enable=${{ steps.condval.outputs.value == 'dev' }}
- name: Login to Docker Hub
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASS }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Create manifest
run: |
@@ -232,7 +144,7 @@ jobs:
cli:
name: Build the CLI and publish
runs-on: ubuntu-latest
needs: [docker-manifest, gcp-registry]
needs: [docker-manifest]
steps:
- name: Set up Go 1.17
uses: actions/setup-go@v2
@@ -290,15 +202,3 @@ jobs:
tag: ${{ steps.versioning.outputs.version }}
prerelease: ${{ github.ref != 'refs/heads/main' }}
bodyFile: 'cli/bin/README.md'
- name: Slack notification on failure
uses: ravsamhq/notify-slack-action@v1
if: always()
with:
status: ${{ job.status }}
notification_title: 'Mizu enterprise {workflow} has {status_message}'
message_format: '{emoji} *{workflow}* {status_message} during <{run_url}|run>, after commit <{commit_url}|{commit_sha}> by ${{ github.event.head_commit.author.name }} <${{ github.event.head_commit.author.email }}> ```${{ github.event.head_commit.message }}```'
footer: 'Linked Repo <{repo_url}|{repo}>'
notify_when: 'failure'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

View File

@@ -11,7 +11,7 @@ on:
- 'main'
concurrency:
group: mizu-tests-validation-${{ github.ref }}
group: kubeshark-tests-validation-${{ github.ref }}
cancel-in-progress: true
jobs:

1
.gitignore vendored
View File

@@ -53,6 +53,7 @@ tap/extensions/*/expect
**/node_modules/**
**/dist/**
*.editorconfig
ui/up9-kubeshark-common-0.0.0.tgz
# Ignore *.log files
*.log

View File

@@ -17,7 +17,7 @@ FROM node:16 AS front-end
WORKDIR /app/ui-build
COPY ui/package.json ui/package-lock.json ./
COPY --from=front-end-common ["/app/ui-build/up9-mizu-common-0.0.0.tgz", "."]
COPY --from=front-end-common ["/app/ui-build/up9-kubeshark-common-0.0.0.tgz", "."]
RUN npm i
COPY ui .
RUN npm run build
@@ -54,14 +54,14 @@ ENV BPF_TARGET=arm64 BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_arm64"
### Builder image for x86-64 to AArch64 cross-compilation
FROM up9inc/linux-arm64-musl-go-libpcap-capstone-bpf:capstone-5.0-rc2 AS builder-from-amd64-to-arm64v8
FROM kubeshark/linux-arm64-musl-go-libpcap-capstone-bpf:capstone-5.0-rc2 AS builder-from-amd64-to-arm64v8
ENV CGO_ENABLED=1 GOOS=linux
ENV GOARCH=arm64 CGO_CFLAGS="-I/work/libpcap -I/work/capstone/include"
ENV BPF_TARGET=arm64 BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_arm64 -I/usr/xcc/aarch64-linux-musl-cross/aarch64-linux-musl/include/"
### Builder image for AArch64 to x86-64 cross-compilation
FROM up9inc/linux-x86_64-musl-go-libpcap-capstone-bpf:capstone-5.0-rc2 AS builder-from-arm64v8-to-amd64
FROM kubeshark/linux-x86_64-musl-go-libpcap-capstone-bpf:capstone-5.0-rc2 AS builder-from-arm64v8-to-amd64
ENV CGO_ENABLED=1 GOOS=linux
ENV GOARCH=amd64 CGO_CFLAGS="-I/libpcap -I/capstone/include"
ENV BPF_TARGET=amd64 BPF_CFLAGS="-O2 -g -D__TARGET_ARCH_x86 -I/usr/local/musl/x86_64-unknown-linux-musl/include/"
@@ -104,17 +104,16 @@ ARG BUILD_TIMESTAMP
ARG VER=0.0
WORKDIR /app/tap/tlstapper
RUN rm tlstapper_bpf*
RUN rm *_bpfel_*
RUN GOARCH=${BUILDARCH} go generate tls_tapper.go
WORKDIR /app/agent-build
RUN go build -ldflags="-extldflags=-static -s -w \
-X 'github.com/up9inc/mizu/agent/pkg/version.GitCommitHash=${COMMIT_HASH}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.Branch=${GIT_BRANCH}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \
-X 'github.com/up9inc/mizu/agent/pkg/version.Ver=${VER}'" -o mizuagent .
-X 'github.com/kubeshark/kubeshark/agent/pkg/version.GitCommitHash=${COMMIT_HASH}' \
-X 'github.com/kubeshark/kubeshark/agent/pkg/version.Branch=${GIT_BRANCH}' \
-X 'github.com/kubeshark/kubeshark/agent/pkg/version.BuildTimestamp=${BUILD_TIMESTAMP}' \
-X 'github.com/kubeshark/kubeshark/agent/pkg/version.Ver=${VER}'" -o kubesharkagent .
# Download Basenine executable, verify the sha1sum
ADD https://github.com/up9inc/basenine/releases/download/v0.8.3/basenine_linux_${GOARCH} ./basenine_linux_${GOARCH}
@@ -134,9 +133,9 @@ WORKDIR /app/data/
WORKDIR /app
# 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/kubesharkagent", "."]
COPY --from=builder ["/app/agent-build/basenine", "/usr/local/bin/basenine"]
COPY --from=front-end ["/app/ui-build/build", "site"]
# this script runs both apiserver and passivetapper and exits either if one of them exits, preventing a scenario where the container runs without one process
ENTRYPOINT ["/app/mizuagent"]
ENTRYPOINT ["/app/kubesharkagent"]

View File

@@ -18,7 +18,7 @@ help: ## This help.
# Variables and lists
TS_SUFFIX="$(shell date '+%s')"
GIT_BRANCH="$(shell git branch | grep \* | cut -d ' ' -f2 | tr '[:upper:]' '[:lower:]' | tr '/' '_')"
BUCKET_PATH=static.up9.io/mizu/$(GIT_BRANCH)
BUCKET_PATH=static.up9.io/kubeshark/$(GIT_BRANCH)
export VER?=0.0
ARCH=$(shell uname -m)
ifeq ($(ARCH),$(filter $(ARCH),aarch64 arm64))
@@ -39,8 +39,8 @@ cli-debug: ## Build CLI.
@echo "building cli"; cd cli && $(MAKE) build-debug
agent: bpf ## Build agent.
@(echo "building mizu agent .." )
@(cd agent; go build -o build/mizuagent main.go)
@(echo "building kubeshark agent .." )
@(cd agent; go build -o build/kubesharkagent main.go)
@ls -l agent/build
bpf: $(BPF_O_FILES)
@@ -50,8 +50,8 @@ $(BPF_O_FILES): $(wildcard tap/tlstapper/bpf/**/*.[ch])
@(./tap/tlstapper/bpf-builder/build.sh)
agent-debug: ## Build agent for debug.
@(echo "building mizu agent for debug.." )
@(cd agent; go build -gcflags="all=-N -l" -o build/mizuagent main.go)
@(echo "building kubeshark agent for debug.." )
@(cd agent; go build -gcflags="all=-N -l" -o build/kubesharkagent main.go)
@ls -l agent/build
docker: ## Build and publish agent docker image.
@@ -59,7 +59,7 @@ docker: ## Build and publish agent docker image.
agent-docker: ## Build agent docker image.
@echo "Building agent docker image"
@docker build -t up9inc/mizu:devlatest .
@docker build -t kubeshark/kubeshark:devlatest .
push: push-docker push-cli ## Build and publish agent docker image & CLI.

View File

@@ -1,41 +1,94 @@
![Mizu: The API Traffic Viewer for Kubernetes](assets/mizu-logo.svg)
<p align="center">
<img src="assets/kubeshark-logo.svg" alt="Kubeshark: Traffic viewer for Kubernetes." height="128px"/>
</p>
<p align="center">
<a href="https://github.com/up9inc/mizu/blob/main/LICENSE">
<img alt="GitHub License" src="https://img.shields.io/github/license/up9inc/mizu?logo=GitHub&style=flat-square">
<a href="https://github.com/kubeshark/kubeshark/blob/main/LICENSE">
<img alt="GitHub License" src="https://img.shields.io/github/license/kubeshark/kubeshark?logo=GitHub&style=flat-square">
</a>
<a href="https://github.com/up9inc/mizu/releases/latest">
<img alt="GitHub Latest Release" src="https://img.shields.io/github/v/release/up9inc/mizu?logo=GitHub&style=flat-square">
<a href="https://github.com/kubeshark/kubeshark/releases/latest">
<img alt="GitHub Latest Release" src="https://img.shields.io/github/v/release/kubeshark/kubeshark?logo=GitHub&style=flat-square">
</a>
<a href="https://hub.docker.com/r/up9inc/mizu">
<img alt="Docker pulls" src="https://img.shields.io/docker/pulls/up9inc/mizu?color=%23099cec&logo=Docker&style=flat-square">
<a href="https://hub.docker.com/r/kubeshark/kubeshark">
<img alt="Docker pulls" src="https://img.shields.io/docker/pulls/kubeshark/kubeshark?color=%23099cec&logo=Docker&style=flat-square">
</a>
<a href="https://hub.docker.com/r/up9inc/mizu">
<img alt="Image size" src="https://img.shields.io/docker/image-size/up9inc/mizu/latest?logo=Docker&style=flat-square">
<a href="https://hub.docker.com/r/kubeshark/kubeshark">
<img alt="Image size" src="https://img.shields.io/docker/image-size/kubeshark/kubeshark/latest?logo=Docker&style=flat-square">
</a>
<a href="https://join.slack.com/t/up9/shared_invite/zt-tfjnduli-QzlR8VV4Z1w3YnPIAJfhlQ">
<a href="https://join.slack.com/t/mertyildiran/shared_invite/zt-1k3sybpq9-uAhFkuPJiJftKniqrGHGhg">
<img alt="Slack" src="https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack&style=social">
</a>
</p>
# The API Traffic Viewer for Kubernetes
Kubeshark is an **observability and monitoring tool for** [**Kubernetes**](https://kubernetes.io/), enabling **dynamic analysis** of the microservices, detecting **anomalies** and **triggering functions** when certain patterns appear in runtime.
A simple-yet-powerful API traffic viewer for Kubernetes enabling you to view all API communication between microservices to help your debug and troubleshoot regressions.
Think of Kubeshark as a **Kubernetes-aware** combination of [**Wireshark**](https://www.wireshark.org/), [**BPF Compiler Collection (BCC) tools**](https://github.com/iovisor/bcc) and beyond.
Think TCPDump and Wireshark re-invented for Kubernetes.
![Simple UI](assets/kubeshark-ui.png)
![Simple UI](assets/mizu-ui.png)
## Quickstart
## Quickstart and documentation
Installing Kubeshark can't be any easier. Either choose the right binary, download and use directly from [the releases section](https://github.com/kubeshark/kubeshark/releases/), or use a shell script to download the right binary for your operating system and CPU architecture:
You can run Mizu on any Kubernetes cluster (version of 1.16.0 or higher) in a matter of seconds. See the [Mizu Getting Started Guide](https://getmizu.io/docs/) for how.
```shell
sh <(curl -Ls https://kubeshark.co/install)
```
For more comprehensive documentation, start with the [docs](https://getmizu.io/docs/mizu/mizu-cli).
## Deploy
## Working in this repo
Once you have the Kubeshark CLI installed on your system, run the command below to deploy the Kubeshark container into your Kubernetes cluster.
We ❤️ pull requests! See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for info on contributing changes. <br />
In the wiki you can find an intorduction to [mizu components](https://github.com/up9inc/mizu/wiki/Introduction-to-Mizu), and [development workflows](https://github.com/up9inc/mizu/wiki/Development-Workflows).
```shell
kubeshark tap
```
### Troubleshooting Installation
If something doesn't work or simply to play it safe prior to installing, make sure that:
> Kubeshark images are hosted on Docker Hub. Make sure you have access to https://hub.docker.com/
> Make sure `kubeshark` executable in your `PATH`.
### Select Pods
#### Monitoring a Specific Pod:
```shell
kubeshark tap catalogue-b87b45784-sxc8q
```
#### Monitoring a Set of Pods Using Regex:
```shell
kubeshark tap "(catalo*|front-end*)"
```
### Specify the Namespace
By default, Kubeshark is deployed into the `default` namespace.
To specify a different namespace:
```
kubeshark tap -n sock-shop
```
### Specify All Namespaces
The default deployment strategy of Kubeshark waits for the new pods
to be created. To simply deploy to all existing namespaces run:
```
kubeshark tap -A
```
## Documentation
Visit our documentation website: [docs.kubeshark.co](https://docs.kubeshark.co)
The documentation resources are open-source and can be found on GitHub: [kubeshark/docs](https://github.com/kubeshark/docs)
## Contributing
We ❤️ pull requests! See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for the contribution guide.
## Code of Conduct

View File

@@ -14,9 +14,9 @@ module.exports = defineConfig({
greenFilterColor: 'rgb(210, 250, 210)',
redFilterColor: 'rgb(250, 214, 220)',
bodyJsonClass: '.hljs',
mizuWidth: 1920,
normalMizuHeight: 1080,
hugeMizuHeight: 3500,
kubesharkWidth: 1920,
normalKubesharkHeight: 1080,
hugeKubesharkHeight: 3500,
},
e2e: {
// We've imported your old cypress plugins here.

View File

@@ -14,19 +14,19 @@ export function isValueExistsInElement(shouldInclude, content, domPathToContaine
});
}
export function resizeToHugeMizu() {
cy.viewport(Cypress.env('mizuWidth'), Cypress.env('hugeMizuHeight'));
export function resizeToHugeKubeshark() {
cy.viewport(Cypress.env('kubesharkWidth'), Cypress.env('hugeKubesharkHeight'));
}
export function resizeToNormalMizu() {
cy.viewport(Cypress.env('mizuWidth'), Cypress.env('normalMizuHeight'));
export function resizeToNormalKubeshark() {
cy.viewport(Cypress.env('kubesharkWidth'), Cypress.env('normalKubesharkHeight'));
}
export function verifyMinimumEntries() {
const entriesSent = Cypress.env('entriesCount');
const minimumEntries = Math.round((0.75 * entriesSent));
it(`Making sure that mizu shows at least ${minimumEntries} entries`, function () {
it(`Making sure that kubeshark shows at least ${minimumEntries} entries`, function () {
cy.get('#total-entries').then(number => {
const getNum = () => {
return parseInt(number.text());

View File

@@ -1,9 +1,9 @@
import {
isValueExistsInElement,
resizeToHugeMizu,
resizeToHugeKubeshark,
} from "../testHelpers/TrafficHelper";
it('Loading Mizu', function () {
it('Loading Kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});
@@ -12,7 +12,7 @@ checkEntries();
function checkEntries() {
it('checking all entries', function () {
cy.get('#entries-length').should('not.have.text', '0').then(() => {
resizeToHugeMizu();
resizeToHugeKubeshark();
cy.get('#list [id^=entry]').each(entryElement => {
entryElement.click();

View File

@@ -1,6 +1,6 @@
import {isValueExistsInElement} from '../testHelpers/TrafficHelper';
it('Loading Mizu', function () {
it('Loading Kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});

View File

@@ -1,6 +1,6 @@
import {checkFilterByMethod, valueTabs,} from "../testHelpers/TrafficHelper";
it('opening mizu', function () {
it('opening kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});

View File

@@ -1,6 +1,6 @@
import {isValueExistsInElement} from '../testHelpers/TrafficHelper';
it('Loading Mizu', function () {
it('Loading Kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});

View File

@@ -1,6 +1,6 @@
import {checkFilterByMethod, valueTabs,} from "../testHelpers/TrafficHelper";
it('opening mizu', function () {
it('opening kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});

View File

@@ -3,8 +3,8 @@ import {
getEntryId,
leftOnHoverCheck,
leftTextCheck,
resizeToHugeMizu,
resizeToNormalMizu,
resizeToHugeKubeshark,
resizeToNormalKubeshark,
rightOnHoverCheck,
rightTextCheck,
verifyMinimumEntries,
@@ -20,7 +20,7 @@ podsArray.forEach((podStr, index) => {
podsArray[index] = getExpectedDetailsDict(podAndNamespaceArr[0], podAndNamespaceArr[1]);
});
it('opening mizu', function () {
it('opening kubeshark', function () {
cy.visit(Cypress.env('testUrl'));
});
@@ -98,11 +98,11 @@ if (Cypress.env('shouldCheckSrcAndDest')) {
});
checkFilter({
filter: `dst.name == "httpbin.mizu-tests"`,
filter: `dst.name == "httpbin.kubeshark-tests"`,
leftSidePath: '> :nth-child(3) > :nth-child(2) > :nth-child(3) > :nth-child(2)',
leftSideExpectedText: 'httpbin.mizu-tests',
leftSideExpectedText: 'httpbin.kubeshark-tests',
rightSidePath: '> :nth-child(2) > :nth-child(2) > :nth-child(2) > :nth-child(3) > :nth-child(2)',
rightSideExpectedText: 'httpbin.mizu-tests',
rightSideExpectedText: 'httpbin.kubeshark-tests',
applyByCtrlEnter: false,
numberOfRecords: 20
});
@@ -224,7 +224,7 @@ function checkFilter(filterDetails) {
checkRightSideResponseBody();
});
resizeToHugeMizu();
resizeToHugeKubeshark();
// checking only 'leftTextCheck' on all entries because the rest of the checks require more time
cy.get(`#list [id^=entry]`).each(elem => {
@@ -237,7 +237,7 @@ function checkFilter(filterDetails) {
deeperCheck(leftSidePath, rightSidePath, filter, rightSideExpectedText, entriesForDeeperCheck);
// reloading then waiting for the entries number to load
resizeToNormalMizu();
resizeToNormalKubeshark();
cy.reload();
waitForFetch(numberOfRecords);
pauseStream();
@@ -320,7 +320,7 @@ function serviceMapCheck() {
cy.wait('@serviceMapRequest').then(({response}) => {
const body = response.body;
const nodeParams = {
destination: 'httpbin.mizu-tests',
destination: 'httpbin.kubeshark-tests',
source: '127.0.0.1'
};
serviceMapAPICheck(body, parseInt(entriesNum), nodeParams);

View File

@@ -1,11 +1,11 @@
module github.com/up9inc/mizu/acceptanceTests
module github.com/kubeshark/kubeshark/acceptanceTests
go 1.17
require (
github.com/go-redis/redis/v8 v8.11.4
github.com/rabbitmq/amqp091-go v1.3.0
github.com/up9inc/mizu/shared v0.0.0
github.com/kubeshark/kubeshark/shared v0.0.0
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
k8s.io/apimachinery v0.23.3
k8s.io/client-go v0.23.3
@@ -18,7 +18,6 @@ require (
github.com/fsnotify/fsnotify v1.5.1 // indirect
github.com/go-logr/logr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.2.0 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-cmp v0.5.7 // indirect
github.com/google/gofuzz v1.2.0 // indirect
@@ -29,7 +28,6 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/up9inc/mizu/logger v0.0.0 // indirect
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
golang.org/x/sys v0.0.0-20220207234003-57398862261d // indirect
@@ -49,10 +47,10 @@ require (
sigs.k8s.io/yaml v1.3.0 // indirect
)
replace github.com/up9inc/mizu/logger v0.0.0 => ../logger
replace github.com/kubeshark/kubeshark/logger v0.0.0 => ../logger
replace github.com/up9inc/mizu/shared v0.0.0 => ../shared
replace github.com/kubeshark/kubeshark/shared v0.0.0 => ../shared
replace github.com/up9inc/mizu/tap/api v0.0.0 => ../tap/api
replace github.com/kubeshark/kubeshark/tap/api v0.0.0 => ../tap/api
replace github.com/up9inc/mizu/tap/dbgctl v0.0.0 => ../tap/dbgctl
replace github.com/kubeshark/kubeshark/tap/dbgctl v0.0.0 => ../tap/dbgctl

View File

@@ -206,7 +206,6 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=

View File

@@ -81,27 +81,27 @@ func TestLogs(t *testing.T) {
logsFileNames = append(logsFileNames, file.Name)
}
if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.kubeshark-api-server.log") {
t.Errorf("api server logs not found")
return
}
if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.basenine.log") {
t.Errorf("basenine logs not found")
return
}
if !Contains(logsFileNames, "mizu_cli.log") {
if !Contains(logsFileNames, "kubeshark_cli.log") {
t.Errorf("cli logs not found")
return
}
if !Contains(logsFileNames, "mizu_events.log") {
if !Contains(logsFileNames, "kubeshark_events.log") {
t.Errorf("events logs not found")
return
}
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
if !ContainsPartOfValue(logsFileNames, "kubeshark.kubeshark-tapper-daemon-set") {
t.Errorf("tapper logs not found")
return
}
@@ -179,27 +179,27 @@ func TestLogsPath(t *testing.T) {
logsFileNames = append(logsFileNames, file.Name)
}
if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.kubeshark-api-server.log") {
t.Errorf("api server logs not found")
return
}
if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.basenine.log") {
t.Errorf("basenine logs not found")
return
}
if !Contains(logsFileNames, "mizu_cli.log") {
if !Contains(logsFileNames, "kubeshark_cli.log") {
t.Errorf("cli logs not found")
return
}
if !Contains(logsFileNames, "mizu_events.log") {
if !Contains(logsFileNames, "kubeshark_events.log") {
t.Errorf("events logs not found")
return
}
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
if !ContainsPartOfValue(logsFileNames, "kubeshark.kubeshark-tapper-daemon-set") {
t.Errorf("tapper logs not found")
return
}

View File

@@ -27,35 +27,35 @@ else
fi
echo "Starting minikube..."
minikube start --cpus 2 --memory 6946
minikube start --cpus 2 --memory 6000
echo "Creating mizu tests namespaces"
kubectl create namespace mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create namespace mizu-tests2 --dry-run=client -o yaml | kubectl apply -f -
echo "Creating kubeshark tests namespaces"
kubectl create namespace kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create namespace kubeshark-tests2 --dry-run=client -o yaml | kubectl apply -f -
echo "Creating httpbin deployments"
kubectl create deployment httpbin --image=kennethreitz/httpbin -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment httpbin2 --image=kennethreitz/httpbin -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment httpbin --image=kennethreitz/httpbin -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment httpbin2 --image=kennethreitz/httpbin -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment httpbin --image=kennethreitz/httpbin -n mizu-tests2 --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment httpbin --image=kennethreitz/httpbin -n kubeshark-tests2 --dry-run=client -o yaml | kubectl apply -f -
echo "Creating redis deployment"
kubectl create deployment redis --image=redis -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment redis --image=redis -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
echo "Creating rabbitmq deployment"
kubectl create deployment rabbitmq --image=rabbitmq -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl create deployment rabbitmq --image=rabbitmq -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
echo "Creating httpbin services"
kubectl expose deployment httpbin --type=NodePort --port=80 -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment httpbin2 --type=NodePort --port=80 -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment httpbin --type=NodePort --port=80 -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment httpbin2 --type=NodePort --port=80 -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment httpbin --type=NodePort --port=80 -n mizu-tests2 --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment httpbin --type=NodePort --port=80 -n kubeshark-tests2 --dry-run=client -o yaml | kubectl apply -f -
echo "Creating redis service"
kubectl expose deployment redis --type=LoadBalancer --port=6379 -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment redis --type=LoadBalancer --port=6379 -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
echo "Creating rabbitmq service"
kubectl expose deployment rabbitmq --type=LoadBalancer --port=5672 -n mizu-tests --dry-run=client -o yaml | kubectl apply -f -
kubectl expose deployment rabbitmq --type=LoadBalancer --port=5672 -n kubeshark-tests --dry-run=client -o yaml | kubectl apply -f -
echo "Starting proxy"
rm -f ${PROXY_LOG}
@@ -64,15 +64,15 @@ PID1=$!
echo "kubectl proxy process id is ${PID1} and log of proxy in ${PROXY_LOG}"
if [[ -z "${CI}" ]]; then
echo "Setting env var of mizu ci image"
export MIZU_CI_IMAGE="mizu/ci:0.0"
echo "Setting env var of kubeshark ci image"
export KUBESHARK_CI_IMAGE="kubeshark/ci:0.0"
echo "Build agent image"
docker build -t "${MIZU_CI_IMAGE}" .
docker build -t "${KUBESHARK_CI_IMAGE}" .
else
echo "not building docker image in CI because it is created as separate step"
fi
minikube image load "${MIZU_CI_IMAGE}"
minikube image load "${KUBESHARK_CI_IMAGE}"
echo "Build cli"
cd cli && make build GIT_BRANCH=ci SUFFIX=ci

View File

@@ -15,7 +15,7 @@ func TestTap(t *testing.T) {
basicTapTest(t, false)
}
func basicTapTest(t *testing.T, shouldCheckSrcAndDest bool, extraArgs... string) {
func basicTapTest(t *testing.T, shouldCheckSrcAndDest bool, extraArgs ...string) {
if testing.Short() {
t.Skip("ignored acceptance test")
}
@@ -67,8 +67,8 @@ func basicTapTest(t *testing.T, shouldCheckSrcAndDest bool, extraArgs... string)
}
expectedPods := []PodDescriptor{
{Name: "httpbin", Namespace: "mizu-tests"},
{Name: "httpbin2", Namespace: "mizu-tests"},
{Name: "httpbin", Namespace: "kubeshark-tests"},
{Name: "httpbin2", Namespace: "kubeshark-tests"},
}
var expectedPodsStr string
@@ -134,7 +134,7 @@ func TestTapGuiPort(t *testing.T) {
}
RunCypressTests(t, fmt.Sprintf("npx cypress run --spec \"cypress/e2e/tests/GuiPort.js\" --env name=%v,namespace=%v,port=%d",
"httpbin", "mizu-tests", guiPort))
"httpbin", "kubeshark-tests", guiPort))
})
}
}
@@ -145,9 +145,9 @@ func TestTapAllNamespaces(t *testing.T) {
}
expectedPods := []PodDescriptor{
{Name: "httpbin", Namespace: "mizu-tests"},
{Name: "httpbin2", Namespace: "mizu-tests"},
{Name: "httpbin", Namespace: "mizu-tests2"},
{Name: "httpbin", Namespace: "kubeshark-tests"},
{Name: "httpbin2", Namespace: "kubeshark-tests"},
{Name: "httpbin", Namespace: "kubeshark-tests2"},
}
cliPath, cliPathErr := GetCliPath()
@@ -190,9 +190,9 @@ func TestTapMultipleNamespaces(t *testing.T) {
}
expectedPods := []PodDescriptor{
{Name: "httpbin", Namespace: "mizu-tests"},
{Name: "httpbin2", Namespace: "mizu-tests"},
{Name: "httpbin", Namespace: "mizu-tests2"},
{Name: "httpbin", Namespace: "kubeshark-tests"},
{Name: "httpbin2", Namespace: "kubeshark-tests"},
{Name: "httpbin", Namespace: "kubeshark-tests2"},
}
cliPath, cliPathErr := GetCliPath()
@@ -240,7 +240,7 @@ func TestTapRegex(t *testing.T) {
regexPodName := "httpbin2"
expectedPods := []PodDescriptor{
{Name: regexPodName, Namespace: "mizu-tests"},
{Name: regexPodName, Namespace: "kubeshark-tests"},
}
cliPath, cliPathErr := GetCliPath()
@@ -365,8 +365,8 @@ func TestTapRedact(t *testing.T) {
}
proxyUrl := GetProxyUrl(DefaultNamespaceName, DefaultServiceName)
requestHeaders := map[string]string{"User-Header": "Mizu"}
requestBody := map[string]string{"User": "Mizu"}
requestHeaders := map[string]string{"User-Header": "Kubeshark"}
requestBody := map[string]string{"User": "Kubeshark"}
for i := 0; i < DefaultEntriesCount; i++ {
if _, requestErr := ExecuteHttpPostRequestWithHeaders(fmt.Sprintf("%v/post", proxyUrl), requestHeaders, requestBody); requestErr != nil {
t.Errorf("failed to send proxy request, err: %v", requestErr)
@@ -415,8 +415,8 @@ func TestTapNoRedact(t *testing.T) {
}
proxyUrl := GetProxyUrl(DefaultNamespaceName, DefaultServiceName)
requestHeaders := map[string]string{"User-Header": "Mizu"}
requestBody := map[string]string{"User": "Mizu"}
requestHeaders := map[string]string{"User-Header": "Kubeshark"}
requestBody := map[string]string{"User": "Kubeshark"}
for i := 0; i < DefaultEntriesCount; i++ {
if _, requestErr := ExecuteHttpPostRequestWithHeaders(fmt.Sprintf("%v/post", proxyUrl), requestHeaders, requestBody); requestErr != nil {
t.Errorf("failed to send proxy request, err: %v", requestErr)
@@ -526,23 +526,23 @@ func TestTapDumpLogs(t *testing.T) {
return
}
mizuFolderPath, mizuPathErr := GetMizuFolderPath()
if mizuPathErr != nil {
t.Errorf("failed to get mizu folder path, err: %v", mizuPathErr)
kubesharkFolderPath, kubesharkPathErr := GetKubesharkFolderPath()
if kubesharkPathErr != nil {
t.Errorf("failed to get kubeshark folder path, err: %v", kubesharkPathErr)
return
}
files, readErr := ioutil.ReadDir(mizuFolderPath)
files, readErr := ioutil.ReadDir(kubesharkFolderPath)
if readErr != nil {
t.Errorf("failed to read mizu folder files, err: %v", readErr)
t.Errorf("failed to read kubeshark folder files, err: %v", readErr)
return
}
var dumpLogsPath string
for _, file := range files {
fileName := file.Name()
if strings.Contains(fileName, "mizu_logs") {
dumpLogsPath = path.Join(mizuFolderPath, fileName)
if strings.Contains(fileName, "kubeshark_logs") {
dumpLogsPath = path.Join(kubesharkFolderPath, fileName)
break
}
}
@@ -569,27 +569,27 @@ func TestTapDumpLogs(t *testing.T) {
logsFileNames = append(logsFileNames, file.Name)
}
if !Contains(logsFileNames, "mizu.mizu-api-server.mizu-api-server.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.kubeshark-api-server.log") {
t.Errorf("api server logs not found")
return
}
if !Contains(logsFileNames, "mizu.mizu-api-server.basenine.log") {
if !Contains(logsFileNames, "kubeshark.kubeshark-api-server.basenine.log") {
t.Errorf("basenine logs not found")
return
}
if !Contains(logsFileNames, "mizu_cli.log") {
if !Contains(logsFileNames, "kubeshark_cli.log") {
t.Errorf("cli logs not found")
return
}
if !Contains(logsFileNames, "mizu_events.log") {
if !Contains(logsFileNames, "kubeshark_events.log") {
t.Errorf("events logs not found")
return
}
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
if !ContainsPartOfValue(logsFileNames, "kubeshark.kubeshark-tapper-daemon-set") {
t.Errorf("tapper logs not found")
return
}
@@ -613,7 +613,7 @@ func TestIpResolving(t *testing.T) {
}
func TestRestrictedMode(t *testing.T) {
namespace := "mizu-tests"
namespace := "kubeshark-tests"
t.Log("creating permissions for restricted user")
if err := ApplyKubeFilesForTest(
@@ -632,6 +632,6 @@ func TestRestrictedMode(t *testing.T) {
return
}
extraArgs := []string{"--set", fmt.Sprintf("mizu-resources-namespace=%s", namespace)}
t.Run("basic tap", func (testingT *testing.T) {basicTapTest(testingT, false, extraArgs...)})
extraArgs := []string{"--set", fmt.Sprintf("kubeshark-resources-namespace=%s", namespace)}
t.Run("basic tap", func(testingT *testing.T) { basicTapTest(testingT, false, extraArgs...) })
}

View File

@@ -21,14 +21,14 @@ import (
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/shared"
)
const (
LongRetriesCount = 100
ShortRetriesCount = 10
DefaultApiServerPort = shared.DefaultApiServerPort
DefaultNamespaceName = "mizu-tests"
DefaultNamespaceName = "kubeshark-tests"
DefaultServiceName = "httpbin"
DefaultEntriesCount = 50
WaitAfterTapPodsReady = 3 * time.Second
@@ -46,26 +46,26 @@ func GetCliPath() (string, error) {
return "", filePathErr
}
cliPath := path.Join(dir, "../cli/bin/mizu_ci")
cliPath := path.Join(dir, "../cli/bin/kubeshark_ci")
return cliPath, nil
}
func GetMizuFolderPath() (string, error) {
func GetKubesharkFolderPath() (string, error) {
home, homeDirErr := os.UserHomeDir()
if homeDirErr != nil {
return "", homeDirErr
}
return path.Join(home, ".mizu"), nil
return path.Join(home, ".kubeshark"), nil
}
func GetConfigPath() (string, error) {
mizuFolderPath, mizuPathError := GetMizuFolderPath()
if mizuPathError != nil {
return "", mizuPathError
kubesharkFolderPath, kubesharkPathError := GetKubesharkFolderPath()
if kubesharkPathError != nil {
return "", kubesharkPathError
}
return path.Join(mizuFolderPath, "config.yaml"), nil
return path.Join(kubesharkFolderPath, "config.yaml"), nil
}
func GetProxyUrl(namespace string, service string) string {
@@ -213,14 +213,13 @@ func DeleteKubeFile(kubeContext string, namespace string, filename string) error
}
func getDefaultCommandArgs() []string {
agentImageValue := os.Getenv("MIZU_CI_IMAGE")
agentImageValue := os.Getenv("KUBESHARK_CI_IMAGE")
setFlag := "--set"
telemetry := "telemetry=false"
agentImage := fmt.Sprintf("agent-image=%s", agentImageValue)
imagePullPolicy := "image-pull-policy=IfNotPresent"
headless := "headless=true"
return []string{setFlag, telemetry, setFlag, agentImage, setFlag, imagePullPolicy, setFlag, headless}
return []string{setFlag, agentImage, setFlag, imagePullPolicy, setFlag, headless}
}
func GetDefaultTapCommandArgs() []string {
@@ -245,7 +244,7 @@ func GetDefaultLogsCommandArgs() []string {
}
func GetDefaultTapNamespace() []string {
return []string{"-n", "mizu-tests"}
return []string{"-n", "kubeshark-tests"}
}
func GetDefaultConfigCommandArgs() []string {
@@ -398,7 +397,7 @@ func GetLogsPath() (string, error) {
return "", filePathErr
}
logsPath := path.Join(dir, "mizu_logs.zip")
logsPath := path.Join(dir, "kubeshark_logs.zip")
return logsPath, nil
}

View File

@@ -1,4 +1,4 @@
module github.com/up9inc/mizu/agent
module github.com/kubeshark/kubeshark/agent
go 1.17
@@ -15,20 +15,20 @@ require (
github.com/google/uuid v1.3.0
github.com/gorilla/websocket v1.4.2
github.com/jinzhu/copier v0.3.5
github.com/kubeshark/kubeshark/logger v0.0.0
github.com/kubeshark/kubeshark/shared v0.0.0
github.com/kubeshark/kubeshark/tap v0.0.0
github.com/kubeshark/kubeshark/tap/api v0.0.0
github.com/kubeshark/kubeshark/tap/dbgctl v0.0.0
github.com/kubeshark/kubeshark/tap/extensions/amqp v0.0.0
github.com/kubeshark/kubeshark/tap/extensions/http v0.0.0
github.com/kubeshark/kubeshark/tap/extensions/kafka v0.0.0
github.com/kubeshark/kubeshark/tap/extensions/redis v0.0.0
github.com/nav-inc/datetime v0.1.3
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
github.com/orcaman/concurrent-map v1.0.0
github.com/stretchr/testify v1.7.0
github.com/up9inc/basenine/client/go v0.0.0-20220612112747-3b28eeac9c51
github.com/up9inc/mizu/logger v0.0.0
github.com/up9inc/mizu/shared 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/dbgctl v0.0.0
github.com/up9inc/mizu/tap/extensions/amqp v0.0.0
github.com/up9inc/mizu/tap/extensions/http v0.0.0
github.com/up9inc/mizu/tap/extensions/kafka v0.0.0
github.com/up9inc/mizu/tap/extensions/redis v0.0.0
github.com/wI2L/jsondiff v0.1.1
k8s.io/api v0.23.3
k8s.io/apimachinery v0.23.3
@@ -48,7 +48,6 @@ require (
github.com/Masterminds/semver v1.5.0 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/beevik/etree v1.1.0 // indirect
github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect
github.com/chanced/dynamic v0.0.0-20211210164248-f8fadb1d735b // indirect
github.com/cilium/ebpf v0.9.0 // indirect
@@ -145,20 +144,20 @@ require (
sigs.k8s.io/yaml v1.3.0 // indirect
)
replace github.com/up9inc/mizu/logger v0.0.0 => ../logger
replace github.com/kubeshark/kubeshark/logger v0.0.0 => ../logger
replace github.com/up9inc/mizu/shared v0.0.0 => ../shared
replace github.com/kubeshark/kubeshark/shared v0.0.0 => ../shared
replace github.com/up9inc/mizu/tap v0.0.0 => ../tap
replace github.com/kubeshark/kubeshark/tap v0.0.0 => ../tap
replace github.com/up9inc/mizu/tap/api v0.0.0 => ../tap/api
replace github.com/kubeshark/kubeshark/tap/api v0.0.0 => ../tap/api
replace github.com/up9inc/mizu/tap/extensions/amqp v0.0.0 => ../tap/extensions/amqp
replace github.com/kubeshark/kubeshark/tap/extensions/amqp v0.0.0 => ../tap/extensions/amqp
replace github.com/up9inc/mizu/tap/extensions/http v0.0.0 => ../tap/extensions/http
replace github.com/kubeshark/kubeshark/tap/extensions/http v0.0.0 => ../tap/extensions/http
replace github.com/up9inc/mizu/tap/extensions/kafka v0.0.0 => ../tap/extensions/kafka
replace github.com/kubeshark/kubeshark/tap/extensions/kafka v0.0.0 => ../tap/extensions/kafka
replace github.com/up9inc/mizu/tap/extensions/redis v0.0.0 => ../tap/extensions/redis
replace github.com/kubeshark/kubeshark/tap/extensions/redis v0.0.0 => ../tap/extensions/redis
replace github.com/up9inc/mizu/tap/dbgctl v0.0.0 => ../tap/dbgctl
replace github.com/kubeshark/kubeshark/tap/dbgctl v0.0.0 => ../tap/dbgctl

View File

@@ -101,8 +101,6 @@ github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=

View File

@@ -17,32 +17,32 @@ import (
"github.com/gin-contrib/pprof"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/entries"
"github.com/up9inc/mizu/agent/pkg/middlewares"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/agent/pkg/oas"
"github.com/up9inc/mizu/agent/pkg/routes"
"github.com/up9inc/mizu/agent/pkg/servicemap"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/entries"
"github.com/kubeshark/kubeshark/agent/pkg/middlewares"
"github.com/kubeshark/kubeshark/agent/pkg/models"
"github.com/kubeshark/kubeshark/agent/pkg/oas"
"github.com/kubeshark/kubeshark/agent/pkg/routes"
"github.com/kubeshark/kubeshark/agent/pkg/servicemap"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/up9inc/mizu/agent/pkg/api"
"github.com/up9inc/mizu/agent/pkg/app"
"github.com/up9inc/mizu/agent/pkg/config"
"github.com/kubeshark/kubeshark/agent/pkg/api"
"github.com/kubeshark/kubeshark/agent/pkg/app"
"github.com/kubeshark/kubeshark/agent/pkg/config"
"github.com/gorilla/websocket"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
"github.com/kubeshark/kubeshark/tap"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/kubeshark/kubeshark/tap/dbgctl"
"github.com/op/go-logging"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/up9inc/mizu/tap"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/up9inc/mizu/tap/dbgctl"
)
var tapperMode = flag.Bool("tap", false, "Run in tapper mode without API")
var apiServerMode = flag.Bool("api-server", false, "Run in API server mode with API")
var standaloneMode = flag.Bool("standalone", false, "Run in standalone tapper and API mode")
var apiServerAddress = flag.String("api-server-address", "", "Address of mizu API server")
var apiServerAddress = flag.String("api-server-address", "", "Address of kubeshark API server")
var namespace = flag.String("namespace", "", "Resolve IPs if they belong to resources in this namespace (default is all)")
var harsReaderMode = flag.Bool("hars-read", false, "Run in hars-read mode")
var harsDir = flag.String("hars-dir", "", "Directory to read hars from")
@@ -94,7 +94,7 @@ func hostApi(socketHarOutputChannel chan<- *tapApi.OutputChannelItem) *gin.Engin
ginApp := gin.Default()
ginApp.GET("/echo", func(c *gin.Context) {
c.JSON(http.StatusOK, "Here is Mizu agent")
c.JSON(http.StatusOK, "Here is Kubeshark agent")
})
eventHandlers := api.RoutesEventHandlers{
@@ -240,7 +240,7 @@ func setUIFlags(uiIndexPath string) error {
}
func getTrafficFilteringOptions() *tapApi.TrafficFilteringOptions {
filteringOptionsJson := os.Getenv(shared.MizuFilteringOptionsEnvVar)
filteringOptionsJson := os.Getenv(shared.KubesharkFilteringOptionsEnvVar)
if filteringOptionsJson == "" {
return &tapApi.TrafficFilteringOptions{
IgnoredUserAgents: []string{},
@@ -249,7 +249,7 @@ func getTrafficFilteringOptions() *tapApi.TrafficFilteringOptions {
var filteringOptions tapApi.TrafficFilteringOptions
err := json.Unmarshal([]byte(filteringOptionsJson), &filteringOptions)
if err != nil {
panic(fmt.Sprintf("env var %s's value of %s is invalid! json must match the api.TrafficFilteringOptions struct %v", shared.MizuFilteringOptionsEnvVar, filteringOptionsJson, err))
panic(fmt.Sprintf("env var %s's value of %s is invalid! json must match the api.TrafficFilteringOptions struct %v", shared.KubesharkFilteringOptionsEnvVar, filteringOptionsJson, err))
}
return &filteringOptions
@@ -271,7 +271,7 @@ func pipeTapChannelToSocket(connection *websocket.Conn, messageDataChannel <-cha
continue
}
if dbgctl.MizuTapperDisableSending {
if dbgctl.KubesharkTapperDisableSending {
continue
}

View File

@@ -3,9 +3,9 @@ package api
import (
"fmt"
"github.com/kubeshark/kubeshark/agent/pkg/models"
tapApi "github.com/kubeshark/kubeshark/tap/api"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/agent/pkg/models"
tapApi "github.com/up9inc/mizu/tap/api"
)
type EntryStreamerSocketConnector interface {

View File

@@ -11,19 +11,19 @@ import (
"strings"
"time"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/oas"
"github.com/up9inc/mizu/agent/pkg/servicemap"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/oas"
"github.com/kubeshark/kubeshark/agent/pkg/servicemap"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/up9inc/mizu/agent/pkg/holder"
"github.com/up9inc/mizu/agent/pkg/providers"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"github.com/kubeshark/kubeshark/agent/pkg/holder"
"github.com/kubeshark/kubeshark/agent/pkg/providers"
"github.com/up9inc/mizu/agent/pkg/resolver"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/kubeshark/kubeshark/agent/pkg/resolver"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/up9inc/mizu/logger"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/logger"
tapApi "github.com/kubeshark/kubeshark/tap/api"
)
var k8sResolver *resolver.Resolver
@@ -106,27 +106,27 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
namespace = item.Namespace
}
mizuEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestination, namespace)
kubesharkEntry := extension.Dissector.Analyze(item, resolvedSource, resolvedDestination, namespace)
data, err := json.Marshal(mizuEntry)
data, err := json.Marshal(kubesharkEntry)
if err != nil {
logger.Log.Errorf("Error while marshaling entry: %v", err)
continue
}
entryInserter := dependency.GetInstance(dependency.EntriesInserter).(EntryInserter)
if err := entryInserter.Insert(mizuEntry); err != nil {
if err := entryInserter.Insert(kubesharkEntry); err != nil {
logger.Log.Errorf("Error inserting entry, err: %v", err)
}
summary := extension.Dissector.Summarize(mizuEntry)
summary := extension.Dissector.Summarize(kubesharkEntry)
providers.EntryAdded(len(data), summary)
serviceMapGenerator := dependency.GetInstance(dependency.ServiceMapGeneratorDependency).(servicemap.ServiceMapSink)
serviceMapGenerator.NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol)
serviceMapGenerator.NewTCPEntry(kubesharkEntry.Source, kubesharkEntry.Destination, &item.Protocol)
oasGenerator := dependency.GetInstance(dependency.OasGeneratorDependency).(oas.OasGeneratorSink)
oasGenerator.HandleEntry(mizuEntry)
oasGenerator.HandleEntry(kubesharkEntry)
}
}

View File

@@ -3,12 +3,13 @@ package api
import (
"encoding/json"
"fmt"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/up9inc/mizu/tap/api"
"sync"
"time"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
"github.com/kubeshark/kubeshark/tap/api"
basenine "github.com/up9inc/basenine/client/go"
)
type EntryInserter interface {
@@ -50,7 +51,7 @@ func (e *BasenineEntryInserter) Insert(entry *api.Entry) error {
return nil
}
func initializeConnection() *basenine.Connection{
func initializeConnection() *basenine.Connection {
for {
connection, err := basenine.NewConnection(shared.BasenineHost, shared.BaseninePort)
if err != nil {

View File

@@ -5,11 +5,11 @@ import (
"encoding/json"
"time"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
tapApi "github.com/kubeshark/kubeshark/tap/api"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
tapApi "github.com/up9inc/mizu/tap/api"
)
type EntryStreamer interface {

View File

@@ -8,10 +8,10 @@ import (
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/up9inc/mizu/logger"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/agent/pkg/models"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/kubeshark/kubeshark/logger"
tapApi "github.com/kubeshark/kubeshark/tap/api"
)
var (

View File

@@ -6,15 +6,15 @@ import (
"sync"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/agent/pkg/providers/tappedPods"
"github.com/up9inc/mizu/agent/pkg/providers/tappers"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/models"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappedPods"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappers"
tapApi "github.com/up9inc/mizu/tap/api"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
)
type BrowserClient struct {

View File

@@ -3,9 +3,9 @@ package api
import (
"encoding/json"
"github.com/up9inc/mizu/agent/pkg/providers/tappedPods"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappedPods"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
)
func BroadcastTappedPodsStatus() {

View File

@@ -6,18 +6,18 @@ import (
"time"
"github.com/antelman107/net-wait-go/wait"
"github.com/kubeshark/kubeshark/agent/pkg/api"
"github.com/kubeshark/kubeshark/agent/pkg/providers"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/kubeshark/kubeshark/logger"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/kubeshark/kubeshark/tap/dbgctl"
amqpExt "github.com/kubeshark/kubeshark/tap/extensions/amqp"
httpExt "github.com/kubeshark/kubeshark/tap/extensions/http"
kafkaExt "github.com/kubeshark/kubeshark/tap/extensions/kafka"
redisExt "github.com/kubeshark/kubeshark/tap/extensions/redis"
"github.com/op/go-logging"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/agent/pkg/api"
"github.com/up9inc/mizu/agent/pkg/providers"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/up9inc/mizu/logger"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/up9inc/mizu/tap/dbgctl"
amqpExt "github.com/up9inc/mizu/tap/extensions/amqp"
httpExt "github.com/up9inc/mizu/tap/extensions/http"
kafkaExt "github.com/up9inc/mizu/tap/extensions/kafka"
redisExt "github.com/up9inc/mizu/tap/extensions/redis"
)
var (
@@ -42,7 +42,7 @@ func LoadExtensions() {
ProtocolsMap[k] = v
}
if !dbgctl.MizuTapperDisableNonHttpExtensions {
if !dbgctl.KubesharkTapperDisableNonHttpExtensions {
extensionAmqp := &tapApi.Extension{}
dissectorAmqp := amqpExt.NewDissector()
dissectorAmqp.Register(extensionAmqp)

View File

@@ -3,9 +3,10 @@ package config
import (
"encoding/json"
"fmt"
"github.com/up9inc/mizu/shared"
"io/ioutil"
"os"
"github.com/kubeshark/kubeshark/shared"
)
// these values are used when the config.json file is not present
@@ -14,7 +15,7 @@ const (
DefaultDatabasePath string = "./entries"
)
var Config *shared.MizuAgentConfig
var Config *shared.KubesharkAgentConfig
func LoadConfig() error {
if Config != nil {
@@ -45,8 +46,8 @@ func applyDefaultConfig() error {
return nil
}
func getDefaultConfig() (*shared.MizuAgentConfig, error) {
return &shared.MizuAgentConfig{
func getDefaultConfig() (*shared.KubesharkAgentConfig, error) {
return &shared.KubesharkAgentConfig{
MaxDBSizeBytes: defaultMaxDatabaseSizeBytes,
AgentDatabasePath: DefaultDatabasePath,
}, nil

View File

@@ -4,10 +4,10 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/kubeshark/kubeshark/agent/pkg/app"
"github.com/kubeshark/kubeshark/agent/pkg/config"
"github.com/kubeshark/kubeshark/shared"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/agent/pkg/app"
"github.com/up9inc/mizu/agent/pkg/config"
"github.com/up9inc/mizu/shared"
)
func Flush(c *gin.Context) {

View File

@@ -3,14 +3,14 @@ package controllers
import (
"net/http"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/entries"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/agent/pkg/validation"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/entries"
"github.com/kubeshark/kubeshark/agent/pkg/models"
"github.com/kubeshark/kubeshark/agent/pkg/validation"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
func HandleEntriesError(c *gin.Context, err error) bool {

View File

@@ -4,8 +4,8 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/version"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/agent/pkg/version"
"github.com/kubeshark/kubeshark/shared"
)
func GetVersion(c *gin.Context) {

View File

@@ -5,9 +5,9 @@ import (
"github.com/chanced/openapi"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/oas"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/oas"
"github.com/kubeshark/kubeshark/logger"
)
func GetOASServers(c *gin.Context) {

View File

@@ -5,8 +5,8 @@ import (
"testing"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/oas"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/oas"
)
func TestGetOASServers(t *testing.T) {

View File

@@ -4,8 +4,8 @@ import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/kubeshark/kubeshark/shared"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/shared"
)
type ValidateResponse struct {

View File

@@ -5,9 +5,9 @@ import (
"time"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/replay"
"github.com/up9inc/mizu/agent/pkg/validation"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/agent/pkg/replay"
"github.com/kubeshark/kubeshark/agent/pkg/validation"
"github.com/kubeshark/kubeshark/logger"
)
const (

View File

@@ -3,8 +3,8 @@ package controllers
import (
"net/http"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/servicemap"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/servicemap"
"github.com/gin-gonic/gin"
)

View File

@@ -7,12 +7,12 @@ import (
"net/http/httptest"
"testing"
"github.com/up9inc/mizu/agent/pkg/dependency"
"github.com/up9inc/mizu/agent/pkg/servicemap"
"github.com/kubeshark/kubeshark/agent/pkg/dependency"
"github.com/kubeshark/kubeshark/agent/pkg/servicemap"
"github.com/gin-gonic/gin"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/stretchr/testify/suite"
tapApi "github.com/up9inc/mizu/tap/api"
)
const (
@@ -43,7 +43,7 @@ var ProtocolHttp = &tapApi.Protocol{
},
LongName: "Hypertext Transfer Protocol -- HTTP/1.1",
Macro: "http",
BackgroundColor: "#205cf5",
BackgroundColor: "#326de6",
ForegroundColor: "#ffffff",
FontSize: 12,
ReferenceLink: "https://datatracker.ietf.org/doc/html/rfc2616",

View File

@@ -1,20 +1,23 @@
package controllers
import (
"fmt"
"net/http"
"strconv"
"time"
core "k8s.io/api/core/v1"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/api"
"github.com/up9inc/mizu/agent/pkg/holder"
"github.com/up9inc/mizu/agent/pkg/providers"
"github.com/up9inc/mizu/agent/pkg/providers/tappedPods"
"github.com/up9inc/mizu/agent/pkg/providers/tappers"
"github.com/up9inc/mizu/agent/pkg/validation"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/up9inc/mizu/shared/kubernetes"
"github.com/kubeshark/kubeshark/agent/pkg/api"
"github.com/kubeshark/kubeshark/agent/pkg/holder"
"github.com/kubeshark/kubeshark/agent/pkg/providers"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappedPods"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappers"
"github.com/kubeshark/kubeshark/agent/pkg/validation"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
"github.com/kubeshark/kubeshark/shared/kubernetes"
)
func HealthCheck(c *gin.Context) {
@@ -80,7 +83,24 @@ func GetGeneralStats(c *gin.Context) {
}
func GetTrafficStats(c *gin.Context) {
c.JSON(http.StatusOK, providers.GetTrafficStats())
startTime, endTime, err := getStartEndTime(c)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, providers.GetTrafficStats(startTime, endTime))
}
func getStartEndTime(c *gin.Context) (time.Time, time.Time, error) {
startTimeValue, err := strconv.Atoi(c.Query("startTimeMs"))
if err != nil {
return time.UnixMilli(0), time.UnixMilli(0), fmt.Errorf("invalid start time: %v", err)
}
endTimeValue, err := strconv.Atoi(c.Query("endTimeMs"))
if err != nil {
return time.UnixMilli(0), time.UnixMilli(0), fmt.Errorf("invalid end time: %v", err)
}
return time.UnixMilli(int64(startTimeValue)), time.UnixMilli(int64(endTimeValue)), nil
}
func GetCurrentResolvingInformation(c *gin.Context) {

View File

@@ -6,12 +6,12 @@ import (
"fmt"
"time"
"github.com/kubeshark/kubeshark/agent/pkg/app"
"github.com/kubeshark/kubeshark/agent/pkg/models"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
tapApi "github.com/kubeshark/kubeshark/tap/api"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/agent/pkg/app"
"github.com/up9inc/mizu/agent/pkg/models"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
tapApi "github.com/up9inc/mizu/tap/api"
)
type EntriesProvider interface {

View File

@@ -5,7 +5,7 @@ import (
"time"
"unicode/utf8"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
/*

View File

@@ -8,7 +8,7 @@ import (
"strings"
"time"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
func BuildHeaders(rawHeaders map[string]interface{}) ([]Header, string, string, string, string, string) {

View File

@@ -1,6 +1,6 @@
package holder
import "github.com/up9inc/mizu/agent/pkg/resolver"
import "github.com/kubeshark/kubeshark/agent/pkg/resolver"
var k8sResolver *resolver.Resolver

View File

@@ -3,11 +3,11 @@ package models
import (
"encoding/json"
"github.com/up9inc/mizu/agent/pkg/har"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/agent/pkg/har"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/kubeshark/kubeshark/shared"
basenine "github.com/up9inc/basenine/client/go"
"github.com/up9inc/mizu/shared"
)
type EntriesRequest struct {

View File

@@ -2,9 +2,10 @@ package oas
import (
"fmt"
"github.com/chanced/openapi"
"math"
"strings"
"github.com/chanced/openapi"
)
type Counter struct {
@@ -66,8 +67,8 @@ func (m *CounterMap) addOther(other *CounterMap) {
}
func setCounterMsgIfOk(oldStr string, cnt *Counter) string {
tpl := "Mizu observed %d entries (%d failed), at %.3f hits/s, average response time is %.3f seconds"
if oldStr == "" || (strings.HasPrefix(oldStr, "Mizu ") && strings.HasSuffix(oldStr, " seconds")) {
tpl := "Kubeshark observed %d entries (%d failed), at %.3f hits/s, average response time is %.3f seconds"
if oldStr == "" || (strings.HasPrefix(oldStr, "Kubeshark ") && strings.HasSuffix(oldStr, " seconds")) {
return fmt.Sprintf(tpl, cnt.Entries, cnt.Failures, cnt.SumDuration/float64(cnt.Entries), cnt.SumRT/float64(cnt.Entries))
}
return oldStr

View File

@@ -14,9 +14,9 @@ import (
"strings"
"testing"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
func getFiles(baseDir string) (result []string, err error) {

View File

@@ -24,7 +24,7 @@ var ignoredHeaders = []string{
"keep-alive", "etag", "alt-svc", "x-csrf-token", "x-ua-compatible", "vary", "x-powered-by",
"age", "allow", "www-authenticate", "expect-ct", "timing-allow-origin", "referrer-policy",
"x-aspnet-version", "x-aspnetmvc-version", "x-timer", "x-abuse-info", "x-mod-pagespeed",
"duration_ms", // UP9 custom
"duration_ms",
}
var ignoredHeaderPrefixes = []string{

View File

@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "http://carts",
"description": "Mizu observed 3 entries (0 failed), at 2.287 hits/s, average response time is 0.017 seconds",
"description": "Kubeshark observed 3 entries (0 failed), at 2.287 hits/s, average response time is 0.017 seconds",
"version": "1.0"
},
"servers": [
@@ -14,7 +14,7 @@
"/carts/{cartId}/items": {
"get": {
"summary": "/carts/{cartId}/items",
"description": "Mizu observed 3 entries (0 failed), at 2.287 hits/s, average response time is 0.017 seconds",
"description": "Kubeshark observed 3 entries (0 failed), at 2.287 hits/s, average response time is 0.017 seconds",
"operationId": "84c9b926-1f73-4ab4-b381-3c124528959f",
"responses": {
"200": {
@@ -93,4 +93,4 @@
"sumRT": 0.05,
"sumDuration": 6.859940528869629
}
}
}

View File

@@ -12,7 +12,7 @@
"catalogue"
],
"summary": "/catalogue",
"description": "Mizu observed 3 entries (0 failed), at 2.647 hits/s, average response time is 0.008 seconds",
"description": "Kubeshark observed 3 entries (0 failed), at 2.647 hits/s, average response time is 0.008 seconds",
"operationId": "dd6c3dbe-6b6b-4ddd-baed-757e237ddb8a",
"parameters": [
{
@@ -221,7 +221,7 @@
"catalogue"
],
"summary": "/catalogue/size",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.013 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.013 seconds",
"operationId": "2315e69d-9d66-48cf-b3d3-fec9c30bd28b",
"parameters": [
{
@@ -298,7 +298,7 @@
"catalogue"
],
"summary": "/catalogue/{id}",
"description": "Mizu observed 4 entries (0 failed), at 1.899 hits/s, average response time is 0.003 seconds",
"description": "Kubeshark observed 4 entries (0 failed), at 1.899 hits/s, average response time is 0.003 seconds",
"parameters": [
{
"name": "non-required-header",
@@ -412,7 +412,7 @@
"/tags": {
"get": {
"summary": "/tags",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.007 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.007 seconds",
"operationId": "c4d7d0ed-1a78-4370-a049-efe3abc631a6",
"responses": {
"200": {
@@ -482,4 +482,4 @@
"sumRT": 0.05899999999999999,
"sumDuration": 15.538749694824219
}
}
}

View File

@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "https://httpbin.org",
"description": "Mizu observed 19 entries (0 failed), at 0.106 hits/s, average response time is 0.172 seconds",
"description": "Kubeshark observed 19 entries (0 failed), at 0.106 hits/s, average response time is 0.172 seconds",
"version": "1.0"
},
"servers": [
@@ -14,7 +14,7 @@
"/appears-once": {
"get": {
"summary": "/appears-once",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"operationId": "2d34623e-fde8-4720-8390-9a7439051755",
"responses": {
"200": {
@@ -53,7 +53,7 @@
"/appears-twice": {
"get": {
"summary": "/appears-twice",
"description": "Mizu observed 2 entries (0 failed), at 0.500 hits/s, average response time is 0.630 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.500 hits/s, average response time is 0.630 seconds",
"operationId": "9c5330f3-8062-468b-b5a3-df1ad82b4846",
"responses": {
"200": {
@@ -92,7 +92,7 @@
"/body-optional": {
"post": {
"summary": "/body-optional",
"description": "Mizu observed 3 entries (0 failed), at 0.003 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 3 entries (0 failed), at 0.003 hits/s, average response time is 0.001 seconds",
"operationId": "34f3d66c-b1f7-4dca-9cab-987fcc8ae472",
"responses": {
"200": {
@@ -140,7 +140,7 @@
"/body-required": {
"post": {
"summary": "/body-required",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "ff6add53-ab1c-4d4e-b590-0835fa318276",
"responses": {
"200": {
@@ -189,7 +189,7 @@
"/form-multipart": {
"post": {
"summary": "/form-multipart",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "153f0925-9fc7-4e9f-9d33-f1470f25f0f7",
"responses": {
"200": {
@@ -261,7 +261,7 @@
"/form-urlencoded": {
"post": {
"summary": "/form-urlencoded",
"description": "Mizu observed 2 entries (0 failed), at 0.500 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.500 hits/s, average response time is 0.001 seconds",
"operationId": "c92189f5-5636-46eb-ac71-92b17941a568",
"responses": {
"200": {
@@ -348,7 +348,7 @@
"param-patterns"
],
"summary": "/param-patterns/prefix-gibberish-fine/{prefixgibberishfineId}",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "85270437-7aae-4a5b-b988-3662092463d0",
"responses": {
"200": {
@@ -406,7 +406,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}",
"description": "Mizu observed 2 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "da597734-1cf5-4d3b-917b-6b02dacf7b7b",
"responses": {
"200": {
@@ -477,7 +477,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/1",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "e965a245-9cfc-48ed-94e1-f765eadb3960",
"responses": {
"200": {
@@ -548,7 +548,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/static",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "7af420dc-f8b7-450f-8f6f-18b039aa3cde",
"responses": {
"200": {
@@ -619,7 +619,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/{param1}",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "02a1771d-2d50-4a8c-8be2-29c7e59b8435",
"responses": {
"200": {
@@ -702,7 +702,7 @@
"/{Id}": {
"get": {
"summary": "/{Id}",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"operationId": "77ec4910-d47a-46a5-8234-fb80a11034b4",
"responses": {
"200": {
@@ -761,7 +761,7 @@
"/{Id}/sub1": {
"get": {
"summary": "/{Id}/sub1",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.111 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.111 seconds",
"operationId": "198675eb-9faf-407b-83fa-0483a730bbbe",
"responses": {
"200": {
@@ -819,7 +819,7 @@
"/{Id}/sub2": {
"get": {
"summary": "/{Id}/sub2",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.630 seconds",
"operationId": "31d880f1-152f-4dd6-84a7-463e13b694a5",
"responses": {
"200": {
@@ -894,4 +894,4 @@
"sumRT": 3.273999999999999,
"sumDuration": 2.0100011825561523
}
}
}

View File

@@ -9,7 +9,7 @@
"/hc": {
"get": {
"summary": "/hc",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "c9fdb168-cd8a-48d2-ac37-887ddadb810c",
"responses": {
"200": {
@@ -51,7 +51,7 @@
"models"
],
"summary": "/models/aaa/blacklist",
"description": "Mizu observed 2 entries (0 failed), at 0.420 hits/s, average response time is 0.002 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.420 hits/s, average response time is 0.002 seconds",
"operationId": "aa04b7c2-11fc-49bd-86b5-fec0a336216d",
"responses": {
"200": {
@@ -93,7 +93,7 @@
"models"
],
"summary": "/models/andrey2/blacklist",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "a61a1b56-7205-4246-99de-baec013a53d9",
"responses": {
"200": {
@@ -135,7 +135,7 @@
"models"
],
"summary": "/models/default/blacklist",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "371ca033-3863-4546-bc7e-03b291a7a188",
"responses": {
"200": {
@@ -177,7 +177,7 @@
"models"
],
"summary": "/models/roee/blacklist",
"description": "Mizu observed 2 entries (0 failed), at 0.211 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.211 hits/s, average response time is 0.001 seconds",
"operationId": "fba33b70-58d1-43e4-9223-38e854e78a77",
"responses": {
"200": {
@@ -219,7 +219,7 @@
"models"
],
"summary": "/models/roee/status",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.001 seconds",
"operationId": "0653c2af-ef3f-43cd-b7e1-48f951d34fa2",
"responses": {
"200": {
@@ -298,7 +298,7 @@
"models"
],
"summary": "/models/{id}/blacklist",
"description": "Mizu observed 39 entries (0 failed), at 0.078 hits/s, average response time is 0.001 seconds",
"description": "Kubeshark observed 39 entries (0 failed), at 0.078 hits/s, average response time is 0.001 seconds",
"operationId": "ce1b76bc-9bff-4438-a21d-0a7a6e5be503",
"responses": {
"200": {
@@ -371,7 +371,7 @@
"models"
],
"summary": "/models/{id}/status",
"description": "Mizu observed 7 entries (0 failed), at 0.543 hits/s, average response time is 0.193 seconds",
"description": "Kubeshark observed 7 entries (0 failed), at 0.543 hits/s, average response time is 0.193 seconds",
"operationId": "2c46cc41-1ec7-4636-b97e-13e4a7296c65",
"responses": {
"200": {
@@ -444,7 +444,7 @@
"models"
],
"summary": "/models/{id}/suites/all/runs",
"description": "Mizu observed 69 entries (0 failed), at 0.093 hits/s, average response time is 0.029 seconds",
"description": "Kubeshark observed 69 entries (0 failed), at 0.093 hits/s, average response time is 0.029 seconds",
"operationId": "6776caf3-87e7-4515-899d-4d4d6cfc0bb8",
"responses": {
"200": {
@@ -520,7 +520,7 @@
"models"
],
"summary": "/models/{id}/suites/all/runs/state",
"description": "Mizu observed 2 entries (0 failed), at 0.997 hits/s, average response time is 0.514 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.997 hits/s, average response time is 0.514 seconds",
"operationId": "fe8186fa-b221-46e1-8130-9be1f00a7c2d",
"responses": {
"200": {
@@ -622,7 +622,7 @@
"proxies"
],
"summary": "/proxies",
"description": "Mizu observed 2 entries (0 failed), at 1.587 hits/s, average response time is 0.386 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 1.587 hits/s, average response time is 0.386 seconds",
"operationId": "bff7bf3e-effa-43ad-8fce-bab2847a77aa",
"responses": {
"200": {
@@ -674,7 +674,7 @@
"proxies"
],
"summary": "/proxies/",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 1.022 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 1.022 seconds",
"operationId": "9c12fbeb-b4cd-40a7-8962-5b9b01619a8e",
"parameters": [
{
@@ -748,7 +748,7 @@
"proxies"
],
"summary": "/proxies/local",
"description": "Mizu observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.610 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.000 hits/s, average response time is 0.610 seconds",
"operationId": "0f676cec-87ba-4a03-ac72-f48c3e90d5b8",
"responses": {
"200": {
@@ -1568,7 +1568,7 @@
"/tapping/state": {
"get": {
"summary": "/tapping/state",
"description": "Mizu observed 8 entries (0 failed), at 0.760 hits/s, average response time is 0.258 seconds",
"description": "Kubeshark observed 8 entries (0 failed), at 0.760 hits/s, average response time is 0.258 seconds",
"operationId": "b0c1e867-43ee-4f94-bcf8-58cd0ba0f5c8",
"responses": {
"200": {
@@ -1630,7 +1630,7 @@
},
"post": {
"summary": "/tapping/state",
"description": "Mizu observed 6 entries (1 failed), at 0.570 hits/s, average response time is 0.431 seconds",
"description": "Kubeshark observed 6 entries (1 failed), at 0.570 hits/s, average response time is 0.431 seconds",
"operationId": "4245a3e5-ebff-4a5b-a7d7-a7fbae4b0fce",
"responses": {
"200": {
@@ -1784,4 +1784,4 @@
"sumRT": 11.506999999999994,
"sumDuration": 29.188997983932495
}
}
}

View File

@@ -5,9 +5,9 @@ import (
"net/url"
"sync"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/tap/api"
)
var (
@@ -16,7 +16,7 @@ var (
)
type OasGeneratorSink interface {
HandleEntry(mizuEntry *api.Entry)
HandleEntry(kubesharkEntry *api.Entry)
}
type OasGenerator interface {
@@ -58,34 +58,34 @@ func (g *defaultOasGenerator) IsStarted() bool {
return g.started
}
func (g *defaultOasGenerator) HandleEntry(mizuEntry *api.Entry) {
func (g *defaultOasGenerator) HandleEntry(kubesharkEntry *api.Entry) {
if !g.started {
return
}
if mizuEntry.Protocol.Name == "http" {
dest := mizuEntry.Destination.Name
if kubesharkEntry.Protocol.Name == "http" {
dest := kubesharkEntry.Destination.Name
if dest == "" {
logger.Log.Debugf("OAS: Unresolved entry %d", mizuEntry.Id)
logger.Log.Debugf("OAS: Unresolved entry %d", kubesharkEntry.Id)
return
}
entry, err := har.NewEntry(mizuEntry.Request, mizuEntry.Response, mizuEntry.StartTime, mizuEntry.ElapsedTime)
entry, err := har.NewEntry(kubesharkEntry.Request, kubesharkEntry.Response, kubesharkEntry.StartTime, kubesharkEntry.ElapsedTime)
if err != nil {
logger.Log.Warningf("Failed to turn MizuEntry %d into HAR Entry: %s", mizuEntry.Id, err)
logger.Log.Warningf("Failed to turn KubesharkEntry %d into HAR Entry: %s", kubesharkEntry.Id, err)
return
}
entryWSource := &EntryWithSource{
Entry: *entry,
Source: mizuEntry.Source.Name,
Source: kubesharkEntry.Source.Name,
Destination: dest,
Id: mizuEntry.Id,
Id: kubesharkEntry.Id,
}
g.handleHARWithSource(entryWSource)
} else {
logger.Log.Debugf("OAS: Unsupported protocol in entry %d: %s", mizuEntry.Id, mizuEntry.Protocol.Name)
logger.Log.Debugf("OAS: Unsupported protocol in entry %d: %s", kubesharkEntry.Id, kubesharkEntry.Protocol.Name)
}
}

View File

@@ -2,7 +2,7 @@ package oas
import (
"encoding/json"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"testing"
"time"
)

View File

@@ -16,10 +16,10 @@ import (
"github.com/chanced/openapi"
"github.com/google/uuid"
"github.com/kubeshark/kubeshark/logger"
"github.com/nav-inc/datetime"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"time"
)

View File

@@ -11,8 +11,8 @@ import (
"time"
"github.com/chanced/openapi"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"github.com/kubeshark/kubeshark/logger"
"github.com/wI2L/jsondiff"
)
@@ -23,7 +23,7 @@ func outputSpec(label string, spec *openapi.OpenAPI, t *testing.T) string {
panic(err)
}
if os.Getenv("MIZU_OAS_WRITE_FILES") != "" {
if os.Getenv("KUBESHARK_OAS_WRITE_FILES") != "" {
path := "./oas-samples"
err := os.MkdirAll(path, 0o755)
if err != nil {
@@ -169,7 +169,7 @@ func TestFileSingle(t *testing.T) {
t.FailNow()
}
if os.Getenv("MIZU_OAS_WRITE_FILES") != "" {
if os.Getenv("KUBESHARK_OAS_WRITE_FILES") != "" {
err = ioutil.WriteFile(file+".spec.json", []byte(specText), 0644)
if err != nil {
panic(err)

View File

@@ -2,7 +2,7 @@
"openapi": "3.1.0",
"info": {
"title": "https://httpbin.org",
"description": "Mizu observed 19 entries (0 failed), at 0.10 hits/s, average response time is 0.17 seconds",
"description": "Kubeshark observed 19 entries (0 failed), at 0.10 hits/s, average response time is 0.17 seconds",
"version": "1.0"
},
"servers": [
@@ -14,7 +14,7 @@
"/appears-once": {
"get": {
"summary": "/appears-once",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -53,7 +53,7 @@
"/appears-twice": {
"get": {
"summary": "/appears-twice",
"description": "Mizu observed 2 entries (0 failed), at 0.50 hits/s, average response time is 0.63 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.50 hits/s, average response time is 0.63 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -92,7 +92,7 @@
"/body-optional": {
"post": {
"summary": "/body-optional",
"description": "Mizu observed 3 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 3 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -140,7 +140,7 @@
"/body-required": {
"post": {
"summary": "/body-required",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -189,7 +189,7 @@
"/form-multipart": {
"post": {
"summary": "/form-multipart",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -261,7 +261,7 @@
"/form-urlencoded": {
"post": {
"summary": "/form-urlencoded",
"description": "Mizu observed 2 entries (0 failed), at 0.50 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.50 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -348,7 +348,7 @@
"param-patterns"
],
"summary": "/param-patterns/prefix-gibberish-fine/{prefixgibberishfineId}",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -406,7 +406,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}",
"description": "Mizu observed 2 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 2 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -477,7 +477,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/1",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -548,7 +548,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/static",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -619,7 +619,7 @@
"param-patterns"
],
"summary": "/param-patterns/{parampatternId}/{param1}",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.00 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -702,7 +702,7 @@
"/{Id}": {
"get": {
"summary": "/{Id}",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -761,7 +761,7 @@
"/{Id}/sub1": {
"get": {
"summary": "/{Id}/sub1",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.11 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.11 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -819,7 +819,7 @@
"/{Id}/sub2": {
"get": {
"summary": "/{Id}/sub2",
"description": "Mizu observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"description": "Kubeshark observed 1 entries (0 failed), at 0.00 hits/s, average response time is 0.63 seconds",
"operationId": "<UUID4>",
"responses": {
"200": {
@@ -894,4 +894,4 @@
"sumRT": 3.27,
"sumDuration": 2.01
}
}
}

View File

@@ -8,7 +8,7 @@ import (
"strings"
"github.com/chanced/openapi"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
type NodePath = []string

View File

@@ -6,10 +6,10 @@ import (
"strconv"
"strings"
"github.com/up9inc/mizu/agent/pkg/har"
"github.com/kubeshark/kubeshark/agent/pkg/har"
"github.com/chanced/openapi"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
)
func exampleResolver(ref string) (*openapi.ExampleObj, error) {

View File

@@ -9,8 +9,8 @@ import (
"time"
"github.com/jinzhu/copier"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/tap/api"
)
type GeneralStats struct {
@@ -85,8 +85,8 @@ func InitProtocolToColor(protocolMap map[string]*api.Protocol) {
}
}
func GetTrafficStats() *TrafficStatsResponse {
bucketsStatsCopy := getBucketStatsCopy()
func GetTrafficStats(startTime time.Time, endTime time.Time) *TrafficStatsResponse {
bucketsStatsCopy := getFilteredBucketStatsCopy(startTime, endTime)
return &TrafficStatsResponse{
Protocols: getAvailableProtocols(bucketsStatsCopy),
@@ -262,7 +262,7 @@ func convertAccumulativeStatsDictToArray(methodsPerProtocolAggregated map[string
return protocolsData
}
func getBucketStatsCopy() BucketStats {
func getFilteredBucketStatsCopy(startTime time.Time, endTime time.Time) BucketStats {
bucketStatsCopy := BucketStats{}
bucketStatsLocker.Lock()
if err := copier.Copy(&bucketStatsCopy, bucketsStats); err != nil {
@@ -270,7 +270,18 @@ func getBucketStatsCopy() BucketStats {
return nil
}
bucketStatsLocker.Unlock()
return bucketStatsCopy
filteredBucketStatsCopy := BucketStats{}
interval := InternalBucketThreshold
for _, bucket := range bucketStatsCopy {
if (bucket.BucketTime.After(startTime.Add(-1*interval/2).Round(interval)) && bucket.BucketTime.Before(endTime.Add(-1*interval/2).Round(interval))) ||
bucket.BucketTime.Equal(startTime.Add(-1*interval/2).Round(interval)) ||
bucket.BucketTime.Equal(endTime.Add(-1*interval/2).Round(interval)) {
filteredBucketStatsCopy = append(filteredBucketStatsCopy, bucket)
}
}
return filteredBucketStatsCopy
}
func getAggregatedResultTiming(stats BucketStats, interval time.Duration) map[time.Time]map[string]map[string]*AccumulativeStatsCounter {

View File

@@ -5,8 +5,8 @@ import (
"testing"
"time"
"github.com/up9inc/mizu/agent/pkg/providers"
"github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/agent/pkg/providers"
"github.com/kubeshark/kubeshark/tap/api"
)
func TestNoEntryAddedCount(t *testing.T) {

View File

@@ -5,10 +5,10 @@ import (
"strings"
"sync"
"github.com/up9inc/mizu/agent/pkg/providers/tappers"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/agent/pkg/providers/tappers"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
)
const FilePath = shared.DataDirPath + "tapped-pods.json"

View File

@@ -4,9 +4,9 @@ import (
"os"
"sync"
"github.com/up9inc/mizu/agent/pkg/utils"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/agent/pkg/utils"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
)
const FilePath = shared.DataDirPath + "tappers-status.json"

View File

@@ -10,9 +10,9 @@ import (
"time"
"github.com/google/uuid"
"github.com/up9inc/mizu/agent/pkg/app"
tapApi "github.com/up9inc/mizu/tap/api"
mizuhttp "github.com/up9inc/mizu/tap/extensions/http"
"github.com/kubeshark/kubeshark/agent/pkg/app"
tapApi "github.com/kubeshark/kubeshark/tap/api"
kubesharkhttp "github.com/kubeshark/kubeshark/tap/extensions/http"
)
var (
@@ -71,8 +71,8 @@ func getEntryFromRequestResponse(extension *tapApi.Extension, request *http.Requ
IsRequest: true,
CaptureTime: captureTime,
CaptureSize: 0,
Payload: &mizuhttp.HTTPPayload{
Type: mizuhttp.TypeHttpRequest,
Payload: &kubesharkhttp.HTTPPayload{
Type: kubesharkhttp.TypeHttpRequest,
Data: request,
},
},
@@ -80,8 +80,8 @@ func getEntryFromRequestResponse(extension *tapApi.Extension, request *http.Requ
IsRequest: false,
CaptureTime: captureTime,
CaptureSize: 0,
Payload: &mizuhttp.HTTPPayload{
Type: mizuhttp.TypeHttpResponse,
Payload: &kubesharkhttp.HTTPPayload{
Type: kubesharkhttp.TypeHttpResponse,
Data: response,
},
},
@@ -121,7 +121,7 @@ func ExecuteRequest(replayData *Details, timeout time.Duration) *Response {
for headerKey, headerValue := range replayData.Headers {
request.Header.Add(headerKey, headerValue)
}
request.Header.Add("x-mizu", uuid.New().String())
request.Header.Add("x-kubeshark", uuid.New().String())
response, requestErr := client.Do(request)
if requestErr != nil {

View File

@@ -11,8 +11,8 @@ import (
"encoding/json"
"github.com/google/uuid"
tapApi "github.com/up9inc/mizu/tap/api"
mizuhttp "github.com/up9inc/mizu/tap/extensions/http"
tapApi "github.com/kubeshark/kubeshark/tap/api"
kubesharkhttp "github.com/kubeshark/kubeshark/tap/extensions/http"
)
func TestValid(t *testing.T) {
@@ -60,7 +60,7 @@ func TestValid(t *testing.T) {
for headerKey, headerValue := range replayData.Headers {
request.Header.Add(headerKey, headerValue)
}
request.Header.Add("x-mizu", uuid.New().String())
request.Header.Add("x-kubeshark", uuid.New().String())
response, requestErr := client.Do(request)
if requestErr != nil {
@@ -68,7 +68,7 @@ func TestValid(t *testing.T) {
}
extensionHttp := &tapApi.Extension{}
dissectorHttp := mizuhttp.NewDissector()
dissectorHttp := kubesharkhttp.NewDissector()
dissectorHttp.Register(extensionHttp)
extensionHttp.Dissector = dissectorHttp
extension := extensionHttp

View File

@@ -1,29 +1,29 @@
<!--
(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
To be able to import this package, you must add `replace github.com/kubeshark/kubeshark/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
And then add `github.com/kubeshark/kubeshark/resolver v0.0.0` to your require block
full example `go.mod`:
```
module github.com/up9inc/mizu/cli
module github.com/kubeshark/kubeshark/cli
go 1.16
require (
github.com/spf13/cobra v1.1.3
github.com/up9inc/mizu/resolver v0.0.0
github.com/kubeshark/kubeshark/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
replace github.com/kubeshark/kubeshark/resolver => ../resolver
```
Now you will be able to import `github.com/up9inc/mizu/resolver` in any `.go` file
Now you will be able to import `github.com/kubeshark/kubeshark/resolver` in any `.go` file
-->
## Usage

View File

@@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"github.com/up9inc/mizu/logger"
"github.com/kubeshark/kubeshark/logger"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
cmap "github.com/orcaman/concurrent-map"

View File

@@ -1,7 +1,7 @@
package routes
import (
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
"github.com/gin-gonic/gin"
)

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
// EntriesRoutes defines the group of har entries routes.

View File

@@ -1,7 +1,7 @@
package routes
import (
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
"github.com/gin-gonic/gin"
)

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
// OASRoutes methods to access OAS spec

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
func QueryRoutes(ginApp *gin.Engine) {

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
// ReplayRoutes defines the group of replay routes.

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
func ServiceMapRoutes(ginApp *gin.Engine) {

View File

@@ -2,7 +2,7 @@ package routes
import (
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/agent/pkg/controllers"
"github.com/kubeshark/kubeshark/agent/pkg/controllers"
)
func StatusRoutes(ginApp *gin.Engine) {

View File

@@ -1,7 +1,7 @@
package servicemap
import (
tapApi "github.com/up9inc/mizu/tap/api"
tapApi "github.com/kubeshark/kubeshark/tap/api"
)
type ServiceMapStatus struct {

View File

@@ -5,8 +5,8 @@ import (
"github.com/jinzhu/copier"
"github.com/up9inc/mizu/logger"
tapApi "github.com/up9inc/mizu/tap/api"
"github.com/kubeshark/kubeshark/logger"
tapApi "github.com/kubeshark/kubeshark/tap/api"
)
const (

View File

@@ -5,8 +5,8 @@ import (
"strings"
"testing"
tapApi "github.com/kubeshark/kubeshark/tap/api"
"github.com/stretchr/testify/suite"
tapApi "github.com/up9inc/mizu/tap/api"
)
const (
@@ -57,7 +57,7 @@ var (
},
LongName: "Hypertext Transfer Protocol -- HTTP/1.1",
Macro: "http",
BackgroundColor: "#205cf5",
BackgroundColor: "#326de6",
ForegroundColor: "#ffffff",
FontSize: 12,
ReferenceLink: "https://datatracker.ietf.org/doc/html/rfc2616",

View File

@@ -12,8 +12,8 @@ import (
"time"
"github.com/gin-gonic/gin"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
)
var (

View File

Before

Width:  |  Height:  |  Size: 811 KiB

After

Width:  |  Height:  |  Size: 811 KiB

94
assets/kubeshark-logo.svg Normal file
View File

@@ -0,0 +1,94 @@
<svg width="365.85028" height="84.530319" viewBox="0 0 365.85028 84.530319" fill="none" xmlns="http://www.w3.org/2000/svg">
<g
id="Layer_2"
transform="translate(0.09726289)">
<g
id="Layer_1-2">
<path
style="fill:#326de6"
d="m 43.697266,0 c -0.8,0 -1.7,-7.8125e-4 -2.5,0.19921875 l -30.5,14.70117225 c -1.5000052,0.7 -2.6000004,1.999218 -3.0000004,3.699218 L 0.09765625,51.5 c -0.3,1.7 0.09960962,3.400781 1.09960935,4.800781 l 21.0996094,26.09961 c 1.2,1.2 2.899609,1.999609 4.599609,2.099609 h 33.701172 c 1.8,0.2 3.49961,-0.599609 4.59961,-2.099609 l 21.099609,-26.09961 c 1,-1.4 1.401172,-3.100781 1.201172,-4.800781 L 79.896484,18.800781 c -0.5,-1.6 -1.699218,-2.901172 -3.199218,-3.701172 L 46.197266,0.5 c -0.8,-0.4 -1.7,-0.5 -2.5,-0.5 z m 22.818359,15.484375 a 1.4619351,1.4619351 0 0 1 1.503906,1.462891 2.9127558,2.9127558 0 0 1 -0.697265,1.884765 16.523949,16.523949 0 0 0 -3.021485,5.302735 6.6495148,6.6495148 0 0 1 -3.089843,3.652343 c -5.91826,3.255388 -11.1875,5.654297 -11.1875,5.654297 1.524079,-0.0335 2.86482,0.09854 4.054687,0.339844 l 0.716797,-1.568359 a 0.26693874,0.26693874 0 0 1 0.507812,0.08594 l 0.160157,1.828125 c 0.241188,0.07385 0.471303,0.153424 0.697265,0.236328 l 1.28125,-1.435547 a 0.26693874,0.26693874 0 0 1 0.460938,0.234375 l -0.390625,1.808594 c 0.190161,0.0967 0.356133,0.202814 0.533203,0.304688 L 59.410156,33.9375 a 0.26693874,0.26693874 0 0 1 0.44336,0.263672 l -0.544922,1.902344 c 0.131484,0.100317 0.249231,0.201225 0.371094,0.302734 l 1.804687,-0.925781 a 0.26693874,0.26693874 0 0 1 0.34375,0.384765 l -1.052734,1.605469 c 0.193913,0.21427 0.370731,0.422885 0.529297,0.625 l 1.908203,-0.400391 a 0.26693874,0.26693874 0 0 1 0.230468,0.460938 l -1.328125,1.171875 c 0.04054,0.07431 0.11559,0.182968 0.146485,0.246094 a 0.4464948,0.4464948 0 0 1 -0.232422,0.609375 48.930273,48.930273 0 0 0 -10.314453,5.910156 c -2.628678,1.872418 -5.507342,3.256782 -7.984375,4.238281 -0.654096,3.953096 -3.256673,6.553592 -4.251953,7.417969 a 0.87976722,0.87976722 0 0 1 -0.84375,0.173828 0.87995885,0.87995885 0 0 1 -0.601563,-0.998047 c 0.403872,-2.175221 0.375769,-3.813371 0.298828,-4.824219 -0.04123,0.0106 -0.129623,0.03717 -0.167969,0.04688 a 13.074058,13.074058 0 0 0 -2.65625,0.966796 11.895733,11.895733 0 0 0 -0.65039,0.365235 11.838628,11.838628 0 0 0 -0.527344,0.314453 11.895733,11.895733 0 0 0 -0.492187,0.345703 11.838628,11.838628 0 0 0 -0.609375,0.453125 c -0.236674,0.196431 -0.459867,0.403754 -0.669922,0.619141 -0.189209,0.194011 -0.363842,0.39622 -0.53125,0.603515 -0.518529,1.301101 -0.720526,2.855804 0.09766,4.41211 a 5.1377563,5.1377563 0 0 0 3.373047,2.560546 26.202921,26.202921 0 0 0 6.078125,0.660157 4.1583421,4.1583421 0 0 0 3.384766,-1.72461 c 1.663527,-2.318707 5.169313,-6.471626 9.99414,-8.277343 a 34.752434,34.752434 0 0 0 5.21875,-2.396485 c 1.396015,-0.807906 3.019403,0.604478 2.433594,2.107422 a 7.7023228,7.7023228 0 0 1 -2.587891,3.494141 c -3.68751,2.69679 -7.761718,6.164264 -7.761719,10.126953 0,0 -0.291599,4.431548 3.244141,7.169922 a 1.1662521,1.1662521 0 0 1 -0.708984,2.083984 c -3.356185,0.04235 -8.286592,-1.069904 -11.835938,-6.941406 a 22.909207,22.909207 0 0 1 -4.214843,1.015625 h -0.0039 c -3.074111,0.47499 -5.780878,0.558997 -8.085937,0.230469 l 0.0039,0.0098 c 0,0 -16.614575,-0.614601 -16.021484,-16.695312 0.176839,-4.794721 1.64669,-8.927518 3.617187,-12.375 C 18.16014,39.986781 17.79688,38.65623 17.28125,37.388672 a 1.4696003,1.4696003 0 0 1 0.140625,-1.386719 l 1.705078,-2.496094 A 0.15886017,0.15886017 0 0 0 18.912109,33.28125 l -2.759765,1.755859 C 15.659283,34.137796 15.146296,33.32412 14.689453,32.648438 A 2.1703863,2.1703863 0 0 1 15.625,29.427734 c 2.666513,-1.121219 5.899198,-1.704278 9.982422,-1.246093 a 36.480542,36.480542 0 0 0 5.708984,0.142578 C 48.430863,18.814384 61.805489,16.163693 66.345703,15.5 a 1.4619351,1.4619351 0 0 1 0.169922,-0.01563 z"
transform="translate(-0.09743584)"
id="path6" />
<g
id="g857"
transform="matrix(0.19162867,0,0,0.19162867,8.490619,13.182287)"><g
id="g849"
style="fill:#485a75"><path
id="path839"
data-original="#485a75"
d="m 192.963,97.984 c -4.249,-8.947 -6.27,-19.006 -6.563,-29.928 a 1.414,1.414 0 0 0 -2.736,-0.449 55.314,55.314 0 0 0 -2.656,9.6 21.038,21.038 0 0 0 3.958,16.393 35.833,35.833 0 0 0 5.808,6.066 1.419,1.419 0 0 0 2.189,-1.682 z"
style="fill:#485a75" /><path
id="path841"
data-original="#485a75"
d="m 177.85,105.342 c -4.249,-8.947 -6.27,-19.006 -6.563,-29.928 a 1.414,1.414 0 0 0 -2.736,-0.449 55.314,55.314 0 0 0 -2.656,9.6 21.038,21.038 0 0 0 3.958,16.394 35.72,35.72 0 0 0 5.808,6.066 1.419,1.419 0 0 0 2.189,-1.683 z"
style="fill:#485a75" /><path
id="path843"
data-original="#485a75"
d="m 163.212,112.168 c -4.249,-8.947 -6.27,-19.006 -6.563,-29.928 a 1.414,1.414 0 0 0 -2.736,-0.449 55.314,55.314 0 0 0 -2.656,9.6 21.038,21.038 0 0 0 3.958,16.394 35.718,35.718 0 0 0 5.808,6.066 1.419,1.419 0 0 0 2.189,-1.683 z"
style="fill:#485a75" /><path
id="path845"
data-original="#485a75"
d="m 282.539,41.775 a 3.464,3.464 0 0 1 -2.442,-5.922 l 2.594,-2.577 a 3.4644893,3.4644893 0 1 1 4.883,4.916 l -2.594,2.577 a 3.455,3.455 0 0 1 -2.441,1.006 z"
style="fill:#485a75" /><circle
id="circle847"
data-original="#485a75"
r="5.0100002"
cy="49.93"
cx="242.799"
style="fill:#485a75" /></g></g><path
style="opacity:1;fill:#326de6;fill-opacity:1;stroke:none;stroke-width:0.70809567;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 39.03763,34.543061 c -1.527793,-1.496038 -1.827598,-2.980669 -1.058708,-5.242707 0.127475,-0.375025 0.218266,-0.50615 0.350457,-0.50615 0.152165,0 0.188106,0.09647 0.244306,0.655726 0.216618,2.155597 0.449111,3.24366 0.975953,4.567454 0.461821,1.160417 0.302867,1.323615 -0.512008,0.525677 z"
id="path900"
transform="translate(-0.09743584)" /><path
style="opacity:1;fill:#326de6;fill-opacity:1;stroke:none;stroke-width:0.70809567;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 42.006337,33.406311 c -1.337815,-1.184989 -1.866757,-2.629191 -1.538123,-4.199632 0.240017,-1.146966 0.464694,-1.723928 0.67132,-1.723928 0.159683,0 0.190274,0.122336 0.292808,1.17094 0.16981,1.736629 0.586255,3.459239 1.068721,4.420732 0.174454,0.347664 0.153619,0.638924 -0.04552,0.636332 -0.05889,-7.68e-4 -0.261033,-0.137766 -0.449207,-0.304444 z"
id="path902"
transform="translate(-0.09743584)" /><path
style="opacity:1;fill:#326de6;fill-opacity:1;stroke:none;stroke-width:0.70809567;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 44.593492,31.684332 c -1.06996,-1.096616 -1.495754,-2.317349 -1.27225,-3.647492 0.06476,-0.385406 0.209609,-0.983895 0.321888,-1.329977 0.160604,-0.495034 0.243576,-0.629239 0.389027,-0.629239 0.167866,0 0.195552,0.106755 0.300777,1.15978 0.178804,1.789343 0.514135,3.175579 1.092636,4.516885 0.109635,0.254197 0.118901,0.363706 0.03765,0.444957 -0.173562,0.173562 -0.231396,0.139321 -0.869728,-0.514914 z"
id="path904"
transform="translate(-0.09743584)" /><path
style="opacity:1;fill:#326de6;fill-opacity:1;stroke:none;stroke-width:0.70809567;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 54.796786,23.600645 c -0.300846,-0.126947 -0.598408,-0.559802 -0.598408,-0.870489 0,-0.192938 0.100882,-0.378642 0.330349,-0.608109 0.289083,-0.289083 0.372038,-0.323583 0.664085,-0.276191 0.411876,0.06684 0.590137,0.209069 0.754324,0.601856 0.107229,0.256525 0.107229,0.352363 0,0.608889 -0.06999,0.167444 -0.190498,0.356886 -0.267791,0.420982 -0.193757,0.160673 -0.644482,0.223522 -0.882559,0.123062 z"
id="path906"
transform="translate(-0.09743584)" /><path
style="opacity:1;fill:#326de6;fill-opacity:1;stroke:none;stroke-width:0.70809567;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 62.366634,20.995747 c -0.30085,-0.260136 -0.326767,-0.517366 -0.08785,-0.871899 0.220552,-0.327277 0.758517,-0.743997 0.960464,-0.743997 0.06271,0 0.225096,0.08737 0.360847,0.194149 0.379108,0.298207 0.323778,0.598735 -0.208173,1.130685 -0.485833,0.485834 -0.722376,0.552984 -1.025291,0.291062 z"
id="path908"
transform="translate(-0.09743584)" /><g
aria-label="Kubeshark"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Work Sans';-inkscape-font-specification:'Work Sans';letter-spacing:0px;word-spacing:0px;fill:#326de6;fill-opacity:1;stroke:none"
id="text833"
transform="translate(4)"><path
d="m 127.72418,23.395281 -15.70667,18.797333 -0.55733,-1.317333 -7.95467,9.677334 -1.672,-7.042667 16.21334,-20.114667 z m -21.63467,0 v 33.44 h -8.714665 v -33.44 z m 8.76534,11.045333 13.47733,22.394667 h -9.88 L 108.31885,39.304614 Z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path830" /><path
d="m 139.93478,57.341948 q -2.584,0 -4.56,-0.861333 -1.92534,-0.912 -3.04,-2.888 -1.11467,-1.976 -1.11467,-5.168001 V 31.501947 h 8.61333 v 14.896001 q 0,2.432 0.96267,3.394667 0.96267,0.962666 2.736,0.962666 0.912,0 1.72267,-0.304 0.81066,-0.354666 1.41867,-1.013333 0.608,-0.709333 0.912,-1.773334 0.35466,-1.114666 0.35466,-2.584 V 31.501947 h 8.61334 v 25.333334 h -7.70134 l -0.25333,-4.762666 q -1.216,2.685333 -3.39467,4.002666 -2.17867,1.266667 -5.26933,1.266667 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path832" /><path
d="m 178.99876,57.341948 q -2.48267,0 -4.408,-1.114667 -1.87467,-1.114666 -3.09067,-3.04 -1.216,-1.976 -1.57067,-4.458666 l 0.81067,-1.064001 -0.456,9.170667 h -7.54933 V 20.760614 h 8.61333 v 18.696 l -0.81067,-1.216 q 0.70934,-3.141333 2.888,-5.168 2.17867,-2.077333 5.87734,-2.077333 2.93866,0 5.21866,1.570666 2.33067,1.570667 3.59734,4.560001 1.31733,2.938666 1.31733,7.144 0,4.104 -1.31733,7.042667 -1.31734,2.938666 -3.648,4.509333 -2.33067,1.52 -5.472,1.52 z m -2.98934,-6.333333 q 2.22934,0 3.496,-1.621334 1.26667,-1.672 1.26667,-5.218667 0,-3.546666 -1.26667,-5.168 -1.26666,-1.672 -3.496,-1.672 -1.46933,0 -2.53333,0.861334 -1.01333,0.810666 -1.57067,2.330666 -0.55733,1.52 -0.55733,3.698667 0,2.178667 0.55733,3.698667 0.55734,1.52 1.62134,2.330667 1.064,0.76 2.48266,0.76 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path834" /><path
d="m 206.86537,57.341948 q -4.20534,0 -7.296,-1.570667 -3.04,-1.570666 -4.712,-4.509333 -1.672,-2.938667 -1.672,-7.093334 0,-4.154666 1.672,-7.093333 1.672,-2.938667 4.66133,-4.509334 3.04,-1.570666 6.94133,-1.570666 4.00267,0 6.78934,1.570666 2.83733,1.52 4.30666,4.256001 1.46934,2.685333 1.46934,6.181333 0,0.912 -0.0507,1.824 -0.0507,0.912 -0.152,1.52 h -20.064 v -4.610667 h 16.264 l -4.104,1.570667 q 0,-3.04 -1.11467,-4.661333 -1.064,-1.621334 -3.344,-1.621334 -1.62133,0 -2.78666,0.76 -1.11467,0.76 -1.72267,2.381334 -0.55733,1.621333 -0.55733,4.154666 0,2.482667 0.65866,4.053334 0.65867,1.52 1.87467,2.229333 1.216,0.658667 2.93867,0.658667 1.92533,0 3.04,-0.76 1.16533,-0.76 1.72266,-2.128 l 6.89067,2.28 q -0.70933,2.178667 -2.48267,3.698667 -1.72266,1.469333 -4.15466,2.229333 -2.38134,0.76 -5.016,0.76 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path836" /><path
d="m 234.47862,57.341948 q -3.8,0 -7.09333,-1.216 -3.24267,-1.266667 -5.37067,-3.597333 l 4.05334,-4.762667 q 1.26666,1.621333 3.344,2.736 2.128,1.064 4.712,1.064 1.57066,0 2.584,-0.456 1.01333,-0.456 1.01333,-1.418667 0,-0.709333 -0.50667,-1.114667 -0.50666,-0.456 -2.02666,-0.76 l -3.54667,-0.709333 q -4.76267,-0.962667 -6.78933,-2.837333 -1.976,-1.925334 -1.976,-5.016 0,-2.077334 1.26666,-3.952001 1.26667,-1.925333 3.90134,-3.090666 2.63466,-1.216 6.73866,-1.216 3.85067,0 6.78934,1.114666 2.93866,1.114667 4.66133,3.242667 l -4.104,4.661334 q -1.216,-1.52 -3.14133,-2.381334 -1.92534,-0.861333 -3.85067,-0.861333 -1.216,0 -2.07733,0.253333 -0.81067,0.202667 -1.216,0.608 -0.40534,0.405334 -0.40534,1.013334 0,0.658666 0.608,1.165333 0.65867,0.456 2.38134,0.810667 l 4.61066,0.912 q 3.90134,0.709333 5.624,2.584 1.72267,1.874666 1.72267,4.509333 0,2.482667 -1.31733,4.458667 -1.31734,1.976 -3.952,3.141333 -2.63467,1.114667 -6.63734,1.114667 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path838" /><path
d="M 250.8439,56.835281 V 20.760614 h 8.61334 v 15.352 q 1.11466,-2.533333 3.192,-3.8 2.07733,-1.317333 4.81333,-1.317333 2.63467,0 4.56,1.013333 1.976,1.013333 3.09067,2.989333 1.11466,1.976001 1.11466,4.965334 v 16.872 h -8.61333 V 42.344614 q 0,-2.736 -1.01333,-3.749333 -0.96267,-1.064 -2.584,-1.064 -1.216,0 -2.28,0.608 -1.064,0.608 -1.672,1.925333 -0.608,1.317334 -0.608,3.445334 v 13.325333 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path840" /><path
d="m 296.39319,40.773948 q 0,-1.773334 -1.01334,-2.786667 -0.96266,-1.064 -2.63466,-1.064 -1.672,0 -2.888,0.861333 -1.16534,0.810667 -1.62134,2.938667 l -7.296,-1.722667 q 0.70934,-3.648 3.74934,-5.826667 3.04,-2.178666 8.56266,-2.178666 3.69867,0 6.28267,1.114666 2.63467,1.064 4.00267,3.242667 1.41866,2.128 1.41866,5.269334 v 9.272 q 0,1.976 1.77334,1.976 0.912,0 1.46933,-0.202667 l -0.50667,4.914667 q -1.52,0.709333 -3.69866,0.709333 -1.976,0 -3.496,-0.608 -1.52,-0.658666 -2.38134,-1.925333 -0.86133,-1.317333 -0.86133,-3.293333 v -0.304 l 0.96267,-0.354667 q 0,2.178667 -1.31734,3.648 -1.26666,1.469333 -3.344,2.178667 -2.02666,0.709333 -4.256,0.709333 -2.584,0 -4.50933,-0.810667 -1.92533,-0.810666 -2.98933,-2.330666 -1.01334,-1.570667 -1.01334,-3.850667 0,-2.736 1.62134,-4.509334 1.672,-1.824 5.21866,-2.533333 l 9.576,-1.976 -0.0507,4.56 -4.864,1.013333 q -1.52,0.304 -2.28,0.912 -0.70934,0.557334 -0.70934,1.722667 0,1.114667 0.81067,1.672 0.81067,0.557334 1.92533,0.557334 0.86134,0 1.62134,-0.253334 0.81066,-0.253333 1.41866,-0.76 0.608,-0.557333 0.96267,-1.368 0.35467,-0.810667 0.35467,-1.925333 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path842" /><path
d="M 311.59312,56.835281 V 31.501947 h 7.6 l 0.35467,5.472001 q 0.96267,-2.837334 2.83733,-4.408001 1.92534,-1.570666 4.864,-1.570666 0.96267,0 1.62134,0.152 0.70933,0.152 1.11466,0.405333 l -0.86133,7.093334 q -0.50667,-0.202667 -1.31733,-0.304 -0.76,-0.152 -1.87467,-0.152 -1.52,0 -2.83733,0.658666 -1.31734,0.658667 -2.128,1.976 -0.76,1.266667 -0.76,3.242667 v 12.768 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path844" /><path
d="m 361.1957,31.501947 -12.16,12.970667 -1.62133,0.456 -7.24534,8.106667 -0.0507,-8.816 11.50133,-12.717334 z M 341.99303,20.760614 V 56.835281 H 333.3797 V 20.760614 Z m 8.36,18.341334 11.4,17.733333 h -9.52533 l -7.49867,-12.666667 z"
style="font-size:50.66666794px;fill:#326de6;fill-opacity:1"
id="path846" /></g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 KiB

BIN
assets/kubeshark-ui.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 640 KiB

View File

@@ -15,9 +15,9 @@ help: ## This help.
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
install:
go install mizu.go
go install kubeshark.go
build-debug: ## Build mizu CLI for debug
build-debug: ## Build kubeshark CLI for debug
export GCLFAGS='-gcflags="all=-N -l"'
${MAKE} build-base
@@ -25,15 +25,15 @@ build:
export LDFLAGS_EXT='-s -w'
${MAKE} build-base
build-base: ## Build mizu CLI binary (select platform via GOOS / GOARCH env variables).
build-base: ## Build kubeshark CLI binary (select platform via GOOS / GOARCH env variables).
go build ${GCLFAGS} -ldflags="${LDFLAGS_EXT} \
-X 'github.com/up9inc/mizu/cli/mizu.GitCommitHash=$(COMMIT_HASH)' \
-X 'github.com/up9inc/mizu/cli/mizu.Branch=$(GIT_BRANCH)' \
-X 'github.com/up9inc/mizu/cli/mizu.BuildTimestamp=$(BUILD_TIMESTAMP)' \
-X 'github.com/up9inc/mizu/cli/mizu.Platform=$(SUFFIX)' \
-X 'github.com/up9inc/mizu/cli/mizu.Ver=$(VER)'" \
-o bin/mizu_$(SUFFIX) mizu.go
(cd bin && shasum -a 256 mizu_${SUFFIX} > mizu_${SUFFIX}.sha256)
-X 'github.com/kubeshark/kubeshark/cli/kubeshark.GitCommitHash=$(COMMIT_HASH)' \
-X 'github.com/kubeshark/kubeshark/cli/kubeshark.Branch=$(GIT_BRANCH)' \
-X 'github.com/kubeshark/kubeshark/cli/kubeshark.BuildTimestamp=$(BUILD_TIMESTAMP)' \
-X 'github.com/kubeshark/kubeshark/cli/kubeshark.Platform=$(SUFFIX)' \
-X 'github.com/kubeshark/kubeshark/cli/kubeshark.Ver=$(VER)'" \
-o bin/kubeshark_$(SUFFIX) kubeshark.go
(cd bin && shasum -a 256 kubeshark_${SUFFIX} > kubeshark_${SUFFIX}.sha256)
build-all: ## Build for all supported platforms.
echo "Compiling for every OS and Platform" && \
@@ -43,7 +43,7 @@ build-all: ## Build for all supported platforms.
$(MAKE) build GOOS=darwin GOARCH=amd64 && \
$(MAKE) build GOOS=darwin GOARCH=arm64 && \
$(MAKE) build GOOS=windows GOARCH=amd64 && \
mv ./bin/mizu_windows_amd64 ./bin/mizu.exe && \
mv ./bin/kubeshark_windows_amd64 ./bin/kubeshark.exe && \
echo "---------" && \
find ./bin -ls

View File

@@ -1,35 +1,35 @@
# Mizu release _VER_
Mizu CHANGELOG is now part of [Mizu wiki](https://github.com/up9inc/mizu/wiki/CHANGELOG)
# Kubeshark release _VER_
Kubeshark CHANGELOG is now part of [Kubeshark wiki](https://github.com/kubeshark/kubeshark/wiki/CHANGELOG)
## Download Mizu for your platform
## Download Kubeshark for your platform
**Mac** (x86-64/Intel)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_darwin_amd64 && chmod 755 mizu
curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/_VER_/kubeshark_darwin_amd64 && chmod 755 kubeshark
```
**Mac** (AArch64/Apple M1 silicon)
```
rm -f mizu && curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_darwin_arm64 && chmod 755 mizu
rm -f kubeshark && curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/_VER_/kubeshark_darwin_arm64 && chmod 755 kubeshark
```
**Linux** (x86-64)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_linux_amd64 && chmod 755 mizu
curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/_VER_/kubeshark_linux_amd64 && chmod 755 kubeshark
```
**Linux** (AArch64)
```
curl -Lo mizu https://github.com/up9inc/mizu/releases/download/_VER_/mizu_linux_arm64 && chmod 755 mizu
curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/_VER_/kubeshark_linux_arm64 && chmod 755 kubeshark
```
**Windows** (x86-64)
```
curl -LO https://github.com/up9inc/mizu/releases/download/_VER_/mizu.exe
curl -LO https://github.com/kubeshark/kubeshark/releases/download/_VER_/kubeshark.exe
```
### Checksums
SHA256 checksums available for compiled binaries.
Run `shasum -a 256 -c mizu_OS_ARCH.sha256` to verify.
Run `shasum -a 256 -c kubeshark_OS_ARCH.sha256` to verify.

View File

@@ -4,16 +4,14 @@ import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"time"
"github.com/up9inc/mizu/cli/utils"
"github.com/kubeshark/kubeshark/cli/utils"
"github.com/up9inc/mizu/cli/config"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared"
"github.com/kubeshark/kubeshark/cli/config"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared"
core "k8s.io/api/core/v1"
)
@@ -93,45 +91,3 @@ func (provider *Provider) ReportTappedPods(pods []core.Pod) error {
}
}
}
func (provider *Provider) GetGeneralStats() (map[string]interface{}, error) {
generalStatsUrl := fmt.Sprintf("%s/status/general", provider.url)
response, requestErr := utils.Get(generalStatsUrl, provider.client)
if requestErr != nil {
return nil, fmt.Errorf("failed to get general stats for telemetry, err: %w", requestErr)
}
defer response.Body.Close()
data, readErr := ioutil.ReadAll(response.Body)
if readErr != nil {
return nil, fmt.Errorf("failed to read general stats for telemetry, err: %v", readErr)
}
var generalStats map[string]interface{}
if parseErr := json.Unmarshal(data, &generalStats); parseErr != nil {
return nil, fmt.Errorf("failed to parse general stats for telemetry, err: %v", parseErr)
}
return generalStats, nil
}
func (provider *Provider) GetVersion() (string, error) {
versionUrl, _ := url.Parse(fmt.Sprintf("%s/metadata/version", provider.url))
req := &http.Request{
Method: http.MethodGet,
URL: versionUrl,
}
statusResp, err := utils.Do(req, provider.client)
if err != nil {
return "", err
}
defer statusResp.Body.Close()
versionResponse := &shared.VersionResponse{}
if err := json.NewDecoder(statusResp.Body).Decode(&versionResponse); err != nil {
return "", err
}
return versionResponse.Ver, nil
}

View File

@@ -2,22 +2,22 @@ package bucket
import (
"fmt"
"github.com/up9inc/mizu/cli/utils"
"github.com/kubeshark/kubeshark/cli/utils"
"io/ioutil"
"net/http"
"time"
)
type Provider struct {
url string
client *http.Client
url string
client *http.Client
}
const DefaultTimeout = 2 * time.Second
func NewProvider(url string, timeout time.Duration) *Provider {
return &Provider{
url: url,
url: url,
client: &http.Client{
Timeout: timeout,
},

View File

@@ -2,18 +2,16 @@ package cmd
import (
"github.com/creasty/defaults"
"github.com/kubeshark/kubeshark/cli/config/configStructs"
"github.com/kubeshark/kubeshark/logger"
"github.com/spf13/cobra"
"github.com/up9inc/mizu/cli/config/configStructs"
"github.com/up9inc/mizu/cli/telemetry"
"github.com/up9inc/mizu/logger"
)
var checkCmd = &cobra.Command{
Use: "check",
Short: "Check the Mizu installation for potential problems",
Short: "Check the Kubeshark installation for potential problems",
RunE: func(cmd *cobra.Command, args []string) error {
go telemetry.ReportRun("check", nil)
runMizuCheck()
runKubesharkCheck()
return nil
},
}
@@ -26,7 +24,7 @@ func init() {
logger.Log.Debug(err)
}
checkCmd.Flags().Bool(configStructs.PreTapCheckName, defaultCheckConfig.PreTap, "Check pre-tap Mizu installation for potential problems")
checkCmd.Flags().Bool(configStructs.PreInstallCheckName, defaultCheckConfig.PreInstall, "Check pre-install Mizu installation for potential problems")
checkCmd.Flags().Bool(configStructs.PreTapCheckName, defaultCheckConfig.PreTap, "Check pre-tap Kubeshark installation for potential problems")
checkCmd.Flags().Bool(configStructs.PreInstallCheckName, defaultCheckConfig.PreInstall, "Check pre-install Kubeshark installation for potential problems")
checkCmd.Flags().Bool(configStructs.ImagePullCheckName, defaultCheckConfig.ImagePull, "Test connectivity to container image registry by creating and removing a temporary pod in 'default' namespace")
}

View File

@@ -6,9 +6,9 @@ import (
"regexp"
"time"
"github.com/up9inc/mizu/cli/uiUtils"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared/kubernetes"
"github.com/kubeshark/kubeshark/cli/uiUtils"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared/kubernetes"
core "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -17,7 +17,7 @@ func ImagePullInCluster(ctx context.Context, kubernetesProvider *kubernetes.Prov
logger.Log.Infof("\nimage-pull-in-cluster\n--------------------")
namespace := "default"
podName := "mizu-test"
podName := "kubeshark-test"
defer func() {
if err := kubernetesProvider.RemovePod(ctx, namespace, podName); err != nil {
@@ -31,11 +31,11 @@ func ImagePullInCluster(ctx context.Context, kubernetesProvider *kubernetes.Prov
}
if err := checkImagePulled(ctx, kubernetesProvider, namespace, podName); err != nil {
logger.Log.Errorf("%v cluster is not able to pull mizu containers from docker hub, err: %v", fmt.Sprintf(uiUtils.Red, "✗"), err)
logger.Log.Errorf("%v cluster is not able to pull kubeshark containers from docker hub, err: %v", fmt.Sprintf(uiUtils.Red, "✗"), err)
return false
}
logger.Log.Infof("%v cluster is able to pull mizu containers from docker hub", fmt.Sprintf(uiUtils.Green, "√"))
logger.Log.Infof("%v cluster is able to pull kubeshark containers from docker hub", fmt.Sprintf(uiUtils.Green, "√"))
return true
}
@@ -85,7 +85,7 @@ func createImagePullInClusterPod(ctx context.Context, kubernetesProvider *kubern
Containers: []core.Container{
{
Name: "probe",
Image: "up9inc/busybox",
Image: "kubeshark/busybox",
ImagePullPolicy: "Always",
Command: []string{"cat"},
Stdin: true,

View File

@@ -3,11 +3,11 @@ package check
import (
"fmt"
"github.com/up9inc/mizu/cli/config"
"github.com/up9inc/mizu/cli/uiUtils"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared/kubernetes"
"github.com/up9inc/mizu/shared/semver"
"github.com/kubeshark/kubeshark/cli/config"
"github.com/kubeshark/kubeshark/cli/uiUtils"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared/kubernetes"
"github.com/kubeshark/kubeshark/shared/semver"
)
func KubernetesApi() (*kubernetes.Provider, *semver.SemVersion, bool) {

View File

@@ -6,11 +6,11 @@ import (
"fmt"
"strings"
"github.com/up9inc/mizu/cli/bucket"
"github.com/up9inc/mizu/cli/config"
"github.com/up9inc/mizu/cli/uiUtils"
"github.com/up9inc/mizu/logger"
"github.com/up9inc/mizu/shared/kubernetes"
"github.com/kubeshark/kubeshark/cli/bucket"
"github.com/kubeshark/kubeshark/cli/config"
"github.com/kubeshark/kubeshark/cli/uiUtils"
"github.com/kubeshark/kubeshark/logger"
"github.com/kubeshark/kubeshark/shared/kubernetes"
rbac "k8s.io/api/rbac/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/scheme"
@@ -41,7 +41,7 @@ func TapKubernetesPermissions(ctx context.Context, embedFS embed.FS, kubernetesP
switch resource := obj.(type) {
case *rbac.Role:
return checkRulesPermissions(ctx, kubernetesProvider, resource.Rules, config.Config.MizuResourcesNamespace)
return checkRulesPermissions(ctx, kubernetesProvider, resource.Rules, config.Config.KubesharkResourcesNamespace)
case *rbac.ClusterRole:
return checkRulesPermissions(ctx, kubernetesProvider, resource.Rules, "")
}

Some files were not shown because too many files have changed in this diff Show More