Overview
The API module is a stateless Go application that serves as a Kubernetes API extension. It provides enhanced functionality on top of the standard Kubernetes API, including data aggregation, filtering, sorting, and pagination.The API module is the core backend service that powers most Dashboard features.
Module Architecture
Entry Point
The module starts inmodules/api/main.go:
modules/api/main.go:39-93
Package Structure
Core Responsibilities
1. Resource Aggregation
The API module aggregates related data from multiple Kubernetes resources:2. Filtering and Sorting
Implements server-side data selection through thedataselect package:
3. Pagination
Reduces response payload size for large clusters:4. Terminal Access
Provides exec and shell access to containers via WebSocket:/api/sockjs/
Reference: modules/api/pkg/handler/terminal.go
API Routes
The API module exposes comprehensive RESTful endpoints at/api/v1/*:
Workload Resources
Pods
Pods
GET /api/v1/pod- List all podsGET /api/v1/pod/{namespace}- List pods in namespaceGET /api/v1/pod/{namespace}/{pod}- Get pod detailsGET /api/v1/pod/{namespace}/{pod}/event- Get pod eventsGET /api/v1/pod/{namespace}/{pod}/shell/{container}- Exec into container
Deployments
Deployments
GET /api/v1/deployment- List all deploymentsGET /api/v1/deployment/{namespace}/{deployment}- Get deployment detailsPUT /api/v1/deployment/{namespace}/{deployment}/pause- Pause deploymentPUT /api/v1/deployment/{namespace}/{deployment}/resume- Resume deploymentPUT /api/v1/deployment/{namespace}/{deployment}/restart- Restart deploymentPUT /api/v1/deployment/{namespace}/{deployment}/rollback- Rollback deployment
StatefulSets, DaemonSets, ReplicaSets
StatefulSets, DaemonSets, ReplicaSets
GET /api/v1/statefulset/{namespace}/{statefulset}GET /api/v1/daemonset/{namespace}/{daemonset}GET /api/v1/replicaset/{namespace}/{replicaset}- Similar patterns for events, pods, services
Configuration and Storage
- ConfigMaps:
/api/v1/configmap/* - Secrets:
/api/v1/secret/* - PersistentVolumes:
/api/v1/persistentvolume/* - PersistentVolumeClaims:
/api/v1/persistentvolumeclaim/* - StorageClasses:
/api/v1/storageclass/*
Cluster Resources
- Nodes:
/api/v1/node/* - Namespaces:
/api/v1/namespace/* - Events:
/api/v1/event/*
RBAC
- ClusterRoles:
/api/v1/clusterrole/* - ClusterRoleBindings:
/api/v1/clusterrolebinding/* - Roles:
/api/v1/role/* - RoleBindings:
/api/v1/rolebinding/* - ServiceAccounts:
/api/v1/serviceaccount/*
modules/api/pkg/handler/apihandler.go:95-1200
Integration Manager
The Integration Manager handles communication with external services:Metrics Integration
modules/api/pkg/integration/manager.gomodules/api/main.go:122-135
Integration Health Checks
Request Handling Flow
OpenAPI Documentation
When enabled, the API module generates OpenAPI/Swagger documentation:GET /apidocs.json
Reference: modules/api/main.go:70-153
Resource Scaling
Generic scaling endpoints support any scalable resource:modules/api/pkg/scaling/
CSRF Protection
- POST requests (create resources)
- PUT requests (update resources)
- DELETE requests (delete resources)
Configuration Arguments
Key command-line arguments (viapkg/args):
| Argument | Description | Default |
|---|---|---|
--kubeconfig | Path to kubeconfig file | In-cluster config |
--apiserver-host | Kubernetes API server URL | Auto-detected |
--insecure-bind-address | HTTP bind address | 0.0.0.0:9090 |
--bind-address | HTTPS bind address | 0.0.0.0:8443 |
--metrics-provider | Metrics provider (sidecar/none) | sidecar |
--sidecar-host | Metrics scraper URL | http://localhost:8000 |
--enable-openapi | Enable OpenAPI endpoint | false |
Prometheus Metrics
The API module exposes Prometheus metrics:GET /metrics
Metrics include:
- Request count and latency
- Go runtime metrics
- Custom business metrics
Error Handling
Consistent error responses across all endpoints:modules/common/errors/
Testing
The API module includes comprehensive tests:Proxy Mode
The API module can run in proxy mode for development:- No in-cluster client connections
- Metrics integration disabled
- Useful for frontend development without K8s cluster
modules/api/main.go:50-63
Deployment
Helm chart deployment configuration:charts/kubernetes-dashboard/templates/deployments/api.yaml
Related Resources
Integration Manager
Learn about service integrations
Metrics Scraper
How metrics are collected and served
Auth Module
Authentication and CSRF protection
Resource Handlers
Source:
modules/api/pkg/resource/