Skip to content

Kuboard System Settings

This page is for administrators. It covers system-level configuration: where each setting is changed, what its default value is, and how the change takes effect.

How to Open

Entry: left menu → Settings → System Settings. The page lists all configuration as tabs on the left side. Saving changes on the page requires administrator privileges.

Interface tab (Settings → System Settings)ConfiguresNotes
Log Parameter SettingsLog levelsNormal / lowest / sync-task log levels
JWT TokenLogin token secretOnly offers a "Regenerate" button
Cluster Cache SettingsCluster sync and resource cacheSync thread pool + cache method per resource
User Login SettingsLogin, password, MFA, OIDCThe most complex; split across multiple cards
Audit Policy SettingsAudit switch and rulesThree rule scopes: Kuboard / cluster / namespace
Interface SettingsSite and terminal themeTitle, icon, footer, GA
Node ShellNode debug PodImage, namespace, session duration
Menu Item SettingsDisablable resources and menu itemsTree checkboxes; refresh the menu after saving
MCP ServerMCP service and Prometheus toolsSwitch, rate limit, approval

Configuration Overview

Configuration categoryDefault valueHow it takes effect after saving
Login sessionsSession 30 minutes; multi-window login off; MFA off; OIDC offImmediately (applies to new sessions)
Password policy6–24 characters including uppercase, lowercase, and digits; lock for 60 minutes after 5 failuresImmediately
JWT TokenGenerated automatically at first installAfter regeneration all users are forced to log in again
OIDC encryption keyGenerated automatically at first start (no UI)After rotation, historical ciphertext cannot be decrypted
AuditRecorded to database; file logging off; retained 6 monthsImmediately
Cluster cache syncThread pool 10/200; about 32 resources via watch/pollingImmediately
System cacheInternal cache, no UI
Menu and resources21 K8s resources disabled by defaultImmediately (after refreshing the menu)
MCP ServerMaster switch off; approval for write operations on; Prometheus tools onImmediately; per-user SSE subscription cap requires a restart
Site interfaceTitle Kuboard; GA onRefresh the page after saving
Log levelsNormal INFO; lowest TRACE; sync-task INFOImmediately
Node ShellImage netshoot; namespace kube-system; TTL 3600 secondsApplies to new sessions

How changes take effect differs

After saving, most configuration takes effect immediately (the server clears the corresponding configuration cache). The only exceptions:

  • Interface Settings: refresh the browser page after saving to see the new title / icon / terminal theme;
  • JWT Token regeneration: all online users are forcibly logged out and must sign in again;
  • Per-user MCP SSE subscription cap: restart the Kuboard service after saving;
  • Log levels: effective immediately without a restart, but log lines already written do not change.

Login and Authentication

Entry: Settings → System Settings → User Login Settings, shown as cards "General Settings / Password Policy / MFA Settings / OIDC SSO / External User Repository".

General Settings and Sessions

SettingDefaultDescription
Session timeout (minutes)30Applies to sessions established afterwards; re-login required after timeout
Allow multi-window loginOffWhen off, logging in again with the same account kicks the previous session; when on, multiple browsers / tabs can stay online at once

Password Policy

SettingDefaultDescription
Password length6–24 charactersValidated when creating and changing passwords
Character mixUppercase / lowercase / digits on, special characters offCombination requirement
Initial password validity (days)3When creating a user or resetting a password, expiry is set to N days later
Validity after changing password (days)90Validity of a password changed by the user themselves
Lock after failed attemptsLock for 60 minutes after 5 failuresAccount locked once the limit is reached
No reuse of recent passwords3New password must differ from the last N passwords

MFA (Multi-Factor Authentication)

SettingDefaultDescription
Enable MFAOffWhen on, a second TOTP one-time-password verification is added
Force bindingOffWhen on, users must complete binding before they can log in
Enable recovery codesOnAllows generating recovery codes, so a lost device does not lock you out

OIDC SSO

The "OIDC SSO" card lets you maintain multiple IdPs (identity providers); add, edit, enable, or disable each one:

  • Basic settings: display name, enable/disable, IdP type (Generic / Keycloak / Authing / Alibaba Cloud IDaaS / Tencent Cloud CIAM / Entra ID / Okta / Auth0 / GitLab / WeCom / Feishu);
  • Discovery and client: backend Issuer, browser Issuer, Client ID, Client Secret (leave blank to keep the current value); a connection test is provided;
  • Claims and advanced: username / email / display-name claim mapping, email trust, MFA policy, group sync.

External User Repository (Webhook)

SettingDefaultDescription
Enable external user WebhookOffWhen on, username / password are validated by an external Webhook service
External user Webhook URLEmptyRequired when enabled

JWT Token

Entry: Settings → System Settings → JWT Token. This shows the JWT public/private keys (read-only; the private key is redacted), and the only operation is Regenerate. After regeneration all logged-in users are forcibly logged out. When multiple instances share the same database, keep the key consistent; regular rotation is generally unnecessary.

Audit

Entry: Settings → System Settings → Audit Policy Settings. The audit log only records operations performed through the Kuboard UI or the Kuboard API; it does not cover external K8s management tools such as kubectl.

Log Persistence

SettingDefaultDescription
Record to databaseOnAuto-cleaned by retention period
Record to fileOffWritten to the log directory inside the container
Retention period (months)6Database logs only; 0 means never auto-deleted
Max request body length4096File logs only; excess is not recorded
Max response body length4096File logs only

Audit Rules

Audit rules are maintained separately for the three scopes Kuboard / cluster / namespace. A rule contains:

DimensionValuesDescription
ActionRecord / Don't recordThe action taken when a rule matches; later rules are ignored
Resourcee.g. deployments, pods/exec; * means allResource name; an API group (e.g. apps) can be scoped
Verbget / list / create / update / deleteOperation verb
Scopecluster: clusters; namespace: the matching cluster + namespacesLimits the scope of the rule

Rules are matched top-down, one by one; the first matching rule wins. If no rule matches, the default action is record. Rule cards can be reordered by drag-and-drop, and the whole rule set can be exported / imported (JSON).

Default rules on a fresh install (editable in the UI):

  • Kuboard scope: read operations not recorded; login-token refresh not recorded; MCP subsystem reads not recorded, writes recorded;
  • Cluster scope: read operations not recorded;
  • Namespace scope: exec (enter container) recorded, other read operations not recorded.

Cluster Sync and Resource Cache

Entry: Settings → System Settings → Cluster Cache Settings. Kuboard syncs commonly used cluster resources into a local cache; the UI and API read from this cache to improve response speed.

Sync Parameters

SettingDefaultDescription
Core threads10Resident threads of the sync thread pool
Max threads200Peak concurrency ceiling; not below the core count
Full sync task timeout (minutes)5A task not finished in time is restarted
Full sync retry interval (minutes)1Minimum delay for failed tasks
Retry validity (minutes)30No further retries after this period
Incremental listen cycle (seconds)300Watch connection rebuilt after timeout
Reset unfinished incremental task (minutes)10If an incremental task is stuck beyond this, restart a full sync

Cache Object Settings

DimensionDescription
Resource keye.g. apps / deployments
Sync methodReal-time watch (push) or polling (pull at an interval)
Poll interval (minutes)Only needed for polling
Delayed deletion (hours)Only for events resources: kept locally for extra time after deletion on the K8s side (7 days by default)

A fresh install caches about 32 resources by default: Pod, Deployment, StatefulSet, DaemonSet, etc. are watched in real time; Service, ConfigMap, Secret, Ingress, RBAC, etc. are polled every 5 minutes; admission webhook configurations, FlowControl, RuntimeClass, etc. are polled every 300 minutes; DRA (Dynamic Resource Allocation) resources are watched in real time.

Entry: Settings → System Settings → Menu Item Settings. The page shows the Kuboard menu and all K8s resources as a tree: checked means enabled (visible in the UI), unchecked means disabled (hidden from the menu). Resources marked "core" cannot be disabled; the menu cache is cleared as soon as you save, so refresh the page to see the effect; the search box filters by title / path.

On a fresh install, 21 uncommon K8s resources are disabled by default, including RuntimeClass, VolumeSnapshot (snapshots), CSI-related items, admission webhook configurations, FlowControl, Lease, PriorityClass, PodDisruptionBudget, EndpointSlice, and DRA-related resources.

MCP Server

Entry: Settings → System Settings → MCP Server. MCP Server exposes Kuboard capabilities (K8s read/write, Prometheus queries, change-plan approval, etc.) to AI clients as MCP (Model Context Protocol) tools, at the endpoint <Kuboard access URL>/mcp.

SettingDefaultDescription
Enable MCP ServerOffWhen off, /mcp returns 404
Force approval for Agent write operationsOnWrites are first dry-run and staged as a plan, then executed after manual approval in the UI; when off they execute immediately — keep on in production
CORS allowed OriginsEmpty (all cross-origin rejected)Browser-side cross-origin allowlist, exact Origin match
Max bytes per request body10MBRequests over this are rejected
Per-user rate limit50 per 60 secondsSliding window; returns HTTP 429 when exceeded
Max SSE subscriptions per user100Requires a service restart after saving

Prometheus Tools

SettingDefaultDescription
Enable Prometheus toolsOnWhen off, calls return "no service found"
Max series per instant query10000Prevents large queries from overwhelming Prometheus
Max points per range query100000series × time points
Query timeout (seconds)30Prometheus HTTP query timeout
Per-query RBAC authorizationOnEach query resource is permission-checked individually
Aggregation query policyAllowed with per-dimension authorizationAlternatives: "deny aggregation" and "cluster-scope only"
Aggregation query rate-limit multiplierRate limit as a multiple of the normal query limit
Max dimension expansion for aggregation100Max namespace / node dimensions expanded per aggregation
Per-cluster service discoveryEmptyOverrides service-discovery rules per cluster

Site Interface

Entry: Settings → System Settings → Interface Settings. After saving site info, refresh the browser page to see the new title, icon, and footer.

SettingDefaultDescription
Page title / product nameKuboard / Kubernetes multi-cluster managementShown on the login page and browser tab
Footer textOfficial site domain by defaultCan be changed to your own site domain
System iconBuilt-in iconUpload JPG/PNG (≤50KB)
Google AnalyticsEnabledCollects anonymous usage data; no sensitive cluster data
Terminal font size / line spacing14 / 1.2Terminal display
Terminal theme type / namedark / AtelierSulphurpoolApplies to new terminal sessions opened afterwards
Terminal log lines500Max log lines echoed in the terminal

Log Levels

Entry: Settings → System Settings → Log Parameter Settings. Takes effect immediately on save, no restart needed.

SettingDefaultDescription
Normal log levelINFOLevel for normal requests
Lowest log levelTRACEThe lowest allowed level; usually for temporary troubleshooting
Sync-task log levelINFOCluster cache sync tasks; ERROR is recommended in the UI to avoid log flooding
Error stack trace to consoleOnException stack printed to stdout
Error stack trace in responseOffReturned to the client; for debugging only

Node Shell

Entry: Settings → System Settings → Node Shell. Node Shell creates a privileged debug Pod on the target node and accesses the node's filesystem, processes, and network namespace through a container terminal. The following parameters apply globally:

SettingDefaultDescription
Imagenicolaka/netshootImage used to create the debug Pod
Start commandsleep infinityKeeps the container alive so you can enter it
Namespacekube-systemWhere the debug Pod is created (must exist and be permitted)
Session duration (seconds)3600Session expires after the timeout; the Pod is cleaned up automatically
Resource limitsRequests 100m CPU / 128Mi memory; limits 500m CPU / 512Mi memoryResource requests and caps for the debug Pod

Settings Without UI

SettingDescription
System cacheInternal in-memory cache (Caffeine); default capacity 50–500 entries, expiry 5–30 minutes; not configurable in the UI — keep the defaults
OIDC encryption keyGenerated automatically at first start; used to encrypt IdP clientSecret and tokens. Back it up from the database before enabling OIDC; rotation makes historical ciphertext undecryptable