KubeBolt / docs
GitHub

Authentication

Built-in username/password authentication with role-based access control. No external identity provider required.

Overview

KubeBolt ships with a built-in auth system that supports three roles: Admin, Editor, and Viewer. Auth is enabled by default and uses BoltDB for user storage — no external database needed. Sessions are managed via JWT tokens stored in httpOnly cookies.

First boot: A default admin user is seeded automatically on first startup. The generated password is printed to the server logs. Change it immediately after first login.

Roles

KubeBolt enforces three roles with increasing levels of access:

ActionViewerEditorAdmin
View resources, metrics, topology, insightsYesYesYes
View pod logsYesYesYes
Use AI Copilot (read-only tools)YesYesYes
Pod terminal (exec)NoYesYes
Edit YAML / Apply changesNoYesYes
Restart / Scale workloadsNoYesYes
Delete resourcesNoYesYes
Port forwardingNoYesYes
Switch clustersNoYesYes
Manage users (create, edit, delete)NoNoYes
Change auth settingsNoNoYes

Session Management

Storage

User accounts are stored in a local BoltDB file. By default, the database is written to ./data/kubebolt.db. Use the KUBEBOLT_DATA_DIR environment variable to customize the storage path. In Kubernetes deployments, mount a PersistentVolume to this path for durability.

Environment Variables

VariableDefaultDescription
KUBEBOLT_AUTH_ENABLEDtrueEnable or disable authentication. Set to false to allow anonymous access.
KUBEBOLT_ADMIN_PASSWORDauto-generatedOverride the default admin password on first boot. Ignored if admin user already exists.
KUBEBOLT_JWT_SECRETauto-generatedSecret key for signing JWT tokens. Auto-generated and persisted in BoltDB if not set.
KUBEBOLT_DATA_DIR./dataDirectory for BoltDB storage file.

Helm Configuration

When deploying via Helm, configure auth through values:

# values.yaml
auth:
  enabled: true
  adminPassword: "my-secure-password"

# Or use an existing Kubernetes secret
auth:
  enabled: true
  existingSecret: "kubebolt-auth-secret"
  # Secret must contain keys: admin-password, jwt-secret
# Install with inline password
helm install kubebolt \
  oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt \
  --set auth.adminPassword="my-secure-password"

# Install with existing secret
helm install kubebolt \
  oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt \
  --set auth.existingSecret=kubebolt-auth-secret

Disabling Authentication

To run KubeBolt without authentication (e.g., behind a VPN or for local development):

# Local development
KUBEBOLT_AUTH_ENABLED=false go run cmd/server/main.go --kubeconfig ~/.kube/config

# Docker Compose (set in deploy/.env)
KUBEBOLT_AUTH_ENABLED=false

# Helm
helm install kubebolt \
  oci://ghcr.io/clm-cloud-solutions/kubebolt/helm/kubebolt \
  --set auth.enabled=false

Warning: Disabling auth exposes full cluster management capabilities to anyone who can reach the KubeBolt UI. Only disable auth when access is already restricted at the network level.