Skip to main content

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 in modules/api/main.go:
Reference: 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 the dataselect package:
Example Usage:

3. Pagination

Reduces response payload size for large clusters:

4. Terminal Access

Provides exec and shell access to containers via WebSocket:
WebSocket endpoint: /api/sockjs/ Reference: modules/api/pkg/handler/terminal.go

API Routes

The API module exposes comprehensive RESTful endpoints at /api/v1/*:

Workload Resources

  • GET /api/v1/pod - List all pods
  • GET /api/v1/pod/{namespace} - List pods in namespace
  • GET /api/v1/pod/{namespace}/{pod} - Get pod details
  • GET /api/v1/pod/{namespace}/{pod}/event - Get pod events
  • GET /api/v1/pod/{namespace}/{pod}/shell/{container} - Exec into container
  • GET /api/v1/deployment - List all deployments
  • GET /api/v1/deployment/{namespace}/{deployment} - Get deployment details
  • PUT /api/v1/deployment/{namespace}/{deployment}/pause - Pause deployment
  • PUT /api/v1/deployment/{namespace}/{deployment}/resume - Resume deployment
  • PUT /api/v1/deployment/{namespace}/{deployment}/restart - Restart deployment
  • PUT /api/v1/deployment/{namespace}/{deployment}/rollback - Rollback deployment
  • 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/*
Reference: modules/api/pkg/handler/apihandler.go:95-1200

Integration Manager

The Integration Manager handles communication with external services:

Metrics Integration

Reference:
  • modules/api/pkg/integration/manager.go
  • modules/api/main.go:122-135

Integration Health Checks

Request Handling Flow

OpenAPI Documentation

When enabled, the API module generates OpenAPI/Swagger documentation:
Access at: GET /apidocs.json Reference: modules/api/main.go:70-153

Resource Scaling

Generic scaling endpoints support any scalable resource:
Supports: Deployments, ReplicaSets, StatefulSets, ReplicationControllers Reference: modules/api/pkg/scaling/

CSRF Protection

CSRF tokens must be included in headers for:
  • POST requests (create resources)
  • PUT requests (update resources)
  • DELETE requests (delete resources)

Configuration Arguments

Key command-line arguments (via pkg/args):

Prometheus Metrics

The API module exposes Prometheus metrics:
Endpoint: GET /metrics Metrics include:
  • Request count and latency
  • Go runtime metrics
  • Custom business metrics

Error Handling

Consistent error responses across all endpoints:
Reference: modules/common/errors/

Testing

The API module includes comprehensive tests:

Proxy Mode

The API module can run in proxy mode for development:
In proxy mode:
  • No in-cluster client connections
  • Metrics integration disabled
  • Useful for frontend development without K8s cluster
Reference: modules/api/main.go:50-63

Deployment

Helm chart deployment configuration:
Reference: charts/kubernetes-dashboard/templates/deployments/api.yaml

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/