Skip to content

RagingSilence/kubewall

 
 

Repository files navigation

kubewall

Install | Guide | Releases | Source Code

A single binary to manage your multiple kubernetes clusters.

kubewall provides a simple and rich real time interface to manage and investigate your clusters.

Key features of KubeWall include:

  • Single binary deployment: KubeWall can be easily deployed as a single binary, eliminating the need for complex configurations.
  • Browser-based access: KubeWall can be accessed directly from your favorite web browser, providing a seamless user experience.
  • Real-time cluster monitoring: KubeWall offers a rich, real-time interface that displays the current state of your Kubernetes clusters, allowing you to quickly identify and address issues.
  • Cluster management: KubeWall enables you to manage multiple Kubernetes clusters from a single pane of glass, reducing the overhead of switching between different tools and interfaces.
  • Detailed cluster insights: KubeWall provides comprehensive insights into your Kubernetes clusters, manifest info of your pods, services, config and others.

🎥 Intro

kubewall

Important

Please keep in mind that kubewall is still under active development.

🔋 Install

Docker

docker run -p 7080:7080 -v kubewall:/.kubewall ghcr.io/kubewall/kubewall:latest

To access local kind cluster you can use "--network host" docker flag.

Helm

helm install kubewall oci://ghcr.io/kubewall/charts/kubewall -n kubewall-system --create-namespace

With helm kubewall runs on port 8443 with self-signed certificates. see charts

Homebrew

brew install kubewall/tap/kubewall

Snap

sudo snap install kubewall

Arch Linux

yay -S kubewall-bin

Winget

winget install --id=kubewall.kubewall -e

Scoop

scoop bucket add kubewall https://github.com/kubewall/scoop-bucket.git
scoop install kubewall

Binary

MacOS Binary ( Multi-Architecture )

Linux (Binaries) amd64 | arm64 | i386

Windows (Exe) amd64 | arm64 | i386

FreeBSD (Binaries) amd64 | arm64 | i386

Manually Download the pre-compiled binaries from the Release! page and copy them to the desired location or system path.

Tip

After installation, you can access kubewall at http://localhost:7080

If you're running it in a Kubernetes cluster or on an on-premises server, we recommend using HTTPS. When not used over HTTP/2 SSE suffers from a limitation to the maximum number of open connections. Mozzila

You can start kubewall with HTTPS using the following command:

$ kubewall --certFile=/path/to/cert.pem --keyFile=/path/to/key.pem

📚 Guide

Flags

Since kubewall runs as binary there are few of flag you can use.

> kubewall --help

Usage:
  kubewall [flags]
  kubewall [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  version     Print the version of kubewall

Flags:
      --certFile string        absolute path to certificate file
  -h, --help                   help for kubewall
      --k8s-client-burst int   Maximum burst for throttle (default 50)
      --k8s-client-qps int     maximum QPS to the master from client (default 50)
      --keyFile string         absolute path to key file
      --no-open-browser        Do not open the default browser
  -p, --port string            port to listen on (default ":7080")

Use "kubewall [command] --help" for more information about a command.

Setting up HTTPS locally

You can use your own certificates or create new local trusted certificates using mkcert⤴.

Important

You'll need to install mkcert⤴ separately.

  1. Install mkcert on your computer.
  2. Run the following command in your terminal or command prompt:

mkcert kubewall.test localhost 127.0.0.1 ::1

  1. This command will generate two files: a certificate file and a key file (the key file will have -key.pem at the end of its name).
  2. To use these files with kubewall, use --certFile= and --keyFile= flags.
kubewall --certFile=kubewall.test+3.pem --keyFile=kubewall.test+3-key.pem

When using Docker

When using Docker, you can attach volumes and provide certificates by using specific flags.

In the following example, we mount the current directory from your host to the /.certs directory inside the Docker container:

docker run -p 7080:7080 \
    -v kubewall:/.kubewall \
    -v $(pwd):/.certs \
    ghcr.io/kubewall/kubewall:latest \
    --certFile=/.certs/kubewall.test+3.pem \

    --keyFile=/.certs/kubewall.test+3-key.pem

Custom Port

You can run kubewall on any port you like. by using -p or --port flag

kubewall -p 7080

前端主要文件概述

主要文件和功能

  1. /client/index.html

    • 前端的入口 HTML 文件。
    • 定义了一个 div 容器(id="root"),用于挂载 React 应用。
    • 加载了主脚本文件 /src/main.tsx
  2. /client/src/main.tsx

    • React 应用的主入口文件。
    • 配置了全局的 Redux 状态管理和路由。
    • 使用 ThemeProvider 提供主题支持,并通过 Toaster 提供全局通知功能。
    • 渲染了 RouterProvider,用于管理应用的路由。
  3. /client/src/KubeWall.tsx

    • 应用的核心组件,负责整体布局和导航。
    • 包含侧边栏(Sidebar)和主内容区域(AppOutlet)。
    • 通过 Redux 管理集群数据,并动态加载集群相关信息。
    • 提供了顶部导航和集群切换功能。

文件关系

  • index.html 是整个前端的入口文件,加载了 main.tsx
  • main.tsx 初始化了应用的全局配置,包括 Redux、路由和主题,并渲染了 KubeWall 组件。
  • KubeWall.tsx 是应用的核心组件,负责整体布局和导航逻辑,集成了侧边栏和主内容区域。
  • 这些文件共同构成了前端的基础架构,确保应用能够正常加载和运行。

index.html └── main.tsx ├── routes/index.tsx (路由配置) ├── KubeWall.tsx (主框架组件) │ ├── Sidebar (左侧导航栏) │ └── App (主内容区域) │ ├── KubeConfiguration (子页面组件) │ ├── KwList (子页面组件) │ └── KwDetails (子页面组件) ├── redux/store.ts (全局状态管理) └── components/ui/ (基础 UI 组件)

Table/ ├── data-table.tsx # 表格主组件 ├── index.css # 表格样式 ├── index.ts # 导出模块 ├── TableCells/ # 单元格渲染逻辑 │ ├── conditionCell.tsx # 条件单元格 │ ├── currentByDesiredCell.tsx # 当前值/目标值单元格 │ ├── defaultCell.tsx # 默认单元格 │ ├── index.tsx # 单元格导出 │ ├── multiValueCell.tsx # 多值单元格 │ ├── nameCell.tsx # 名称单元格 │ ├── selectCell.tsx # 选择单元格 │ ├── statusCell.tsx # 状态单元格 │ └── timeCell.tsx # 时间单元格 ├── TableDelete/ # 删除功能 │ └── index.tsx # 删除组件 ├── TableFacetedFilter/ # 多维筛选功能 │ └── index.tsx # 筛选组件 ├── TableHeaders/ # 列头组件 │ └── default-header.tsx # 默认列头 ├── TableToolbar/ # 工具栏组件 │ └── index.tsx # 工具栏组件 └── TableViewOptions/ # 视图选项组件 └── index.tsx # 视图选项组件

启动步骤

前端开发模式

  1. 进入前端目录并安装依赖:

    cd client
    npm install
  2. 启动开发服务器:

    npm run dev
  3. 在浏览器中访问 http://localhost:5173

后端开发模式

  1. 进入后端目录并构建后端:

    cd backend
    go build -o kubewall main.go
  2. 启动后端:

    ./kubewall
  3. 在浏览器中访问 http://localhost:7080

集成模式

  1. 构建前端:

    cd client
    npm run build
  2. 将前端静态文件移动到后端:

    mv client/dist backend/routes/static
  3. 启动后端:

    cd backend
    ./kubewall
  4. 在浏览器中访问 http://localhost:7080

Contribution

This project welcomes your PR and issues. For example, refactoring, adding features, correcting English, etc.

If you need any help, you can contact us from the above Developers sections.

Thanks to all the people who already contributed and using the project.

License

kubewall is licensed under Apache License, Version 2.0

About

A single binary kubernetes dashboard to manage your multiple clusters.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 67.2%
  • Go 31.4%
  • CSS 0.6%
  • JavaScript 0.4%
  • Smarty 0.3%
  • Dockerfile 0.1%