Skip to main content
The Kubernetes Dashboard settings control the UI behavior, default namespaces, auto-refresh intervals, and pinned resources in the navigation menu. Settings are configured via Helm values under app.settings and stored in a ConfigMap named kubernetes-dashboard-settings.

Global Settings

Global settings control the overall Dashboard UI behavior and defaults.
app.settings.global.clusterName
string
default:""
Cluster name that appears in the browser window title.
app:
  settings:
    global:
      clusterName: "Production Cluster"
When set, the browser tab title will show the cluster name, making it easier to distinguish between multiple Dashboard instances.
app.settings.global.itemsPerPage
number
default:"10"
Maximum number of items displayed on each list page.
app:
  settings:
    global:
      itemsPerPage: 25
Increase this value for larger displays or decrease for better performance in large clusters.
app.settings.global.labelsLimit
number
default:"3"
Maximum number of labels displayed by default on most views.
app:
  settings:
    global:
      labelsLimit: 5
Additional labels can be viewed by expanding the labels section. This setting helps keep the UI clean when resources have many labels.
app.settings.global.logsAutoRefreshTimeInterval
number
default:"5"
Number of seconds between automatic log refreshes.
app:
  settings:
    global:
      logsAutoRefreshTimeInterval: 10
Set to 0 to disable auto-refresh of logs.
app.settings.global.resourceAutoRefreshTimeInterval
number
default:"10"
Number of seconds between automatic resource list refreshes.
app:
  settings:
    global:
      resourceAutoRefreshTimeInterval: 15
Set to 0 to disable auto-refresh. This can reduce API server load in large clusters.
app.settings.global.disableAccessDeniedNotifications
boolean
default:"false"
Hide access denied warnings in the notification panel.
app:
  settings:
    global:
      disableAccessDeniedNotifications: true
Useful when users have limited permissions and frequent access denied notifications become noise.
app.settings.global.hideAllNamespaces
boolean
default:"false"
Hide the “All namespaces” option in the namespace selection dropdown.
app:
  settings:
    global:
      hideAllNamespaces: true
Important: Enable this in large clusters to prevent accidental selection of all namespaces, which can cause OOM (Out Of Memory) errors.
app.settings.global.defaultNamespace
string
default:"default"
Namespace selected by default after logging in.
app:
  settings:
    global:
      defaultNamespace: kube-system
app.settings.global.namespaceFallbackList
array
default:"[]"
List of namespaces presented to users without namespace list privileges.
app:
  settings:
    global:
      namespaceFallbackList:
        - default
        - kube-system
        - kube-public
When users don’t have permission to list all namespaces, these namespaces will be available in the dropdown.

Pinned Resources

Pinned resources appear in the Dashboard’s left navigation menu, providing quick access to Custom Resource Definitions (CRDs).
app.settings.pinnedResources
array
default:"[]"
List of custom resources to pin in the navigation menu.
app:
  settings:
    pinnedResources:
      - kind: customresourcedefinition
        name: prometheus.monitoring.coreos.com
        displayName: Prometheus
        namespaced: true
      - kind: customresourcedefinition
        name: servicemonitors.monitoring.coreos.com
        displayName: Service Monitor
        namespaced: true
      - kind: customresourcedefinition
        name: alertmanagers.monitoring.coreos.com
        displayName: Alert Manager
        namespaced: true
Each pinned resource requires:
  • kind: Must be customresourcedefinition
  • name: Fully qualified name of the CRD
  • displayName: Name shown in the navigation menu
  • namespaced: Whether the CRD is namespaced

How Settings are Applied

Settings are stored in a Kubernetes ConfigMap and read by the Web module at startup. The ConfigMap structure:
apiVersion: v1
kind: ConfigMap
metadata:
  name: kubernetes-dashboard-settings
  namespace: kubernetes-dashboard
data:
  settings: '{"clusterName":"Production","itemsPerPage":20}'
  pinnedResources: '[{"kind":"customresourcedefinition","name":"..."}]'
The Web module reads this ConfigMap using the --settings-config-map-name argument (default: kubernetes-dashboard-settings).

Example Configurations

Production Cluster with Limited Permissions

app:
  settings:
    global:
      clusterName: "Production Cluster"
      itemsPerPage: 15
      resourceAutoRefreshTimeInterval: 30  # Reduced frequency
      hideAllNamespaces: true  # Prevent OOM in large cluster
      defaultNamespace: production
      namespaceFallbackList:
        - production
        - staging
        - default
      disableAccessDeniedNotifications: true

Development Cluster with Enhanced Monitoring

app:
  settings:
    global:
      clusterName: "Dev Cluster"
      itemsPerPage: 50
      labelsLimit: 10
      resourceAutoRefreshTimeInterval: 5
      logsAutoRefreshTimeInterval: 3
    pinnedResources:
      - kind: customresourcedefinition
        name: prometheus.monitoring.coreos.com
        displayName: Prometheus
        namespaced: true
      - kind: customresourcedefinition
        name: servicemonitors.monitoring.coreos.com
        displayName: Service Monitors
        namespaced: true
      - kind: customresourcedefinition
        name: certificates.cert-manager.io
        displayName: Certificates
        namespaced: true
      - kind: customresourcedefinition
        name: issuers.cert-manager.io
        displayName: Issuers
        namespaced: true

Large Enterprise Cluster

app:
  settings:
    global:
      clusterName: "Enterprise Production"
      itemsPerPage: 20
      labelsLimit: 5
      resourceAutoRefreshTimeInterval: 60  # 1 minute for large cluster
      logsAutoRefreshTimeInterval: 10
      hideAllNamespaces: true  # Critical for large clusters
      defaultNamespace: monitoring
      disableAccessDeniedNotifications: true
      namespaceFallbackList:
        - monitoring
        - production
        - staging
        - development

Updating Settings at Runtime

While settings are typically configured via Helm values, you can also update the ConfigMap directly:
# Edit the settings ConfigMap
kubectl edit configmap kubernetes-dashboard-settings -n kubernetes-dashboard

# Restart the web pods to apply changes
kubectl rollout restart deployment kubernetes-dashboard-web -n kubernetes-dashboard
Settings changes via direct ConfigMap edits will be overwritten on the next Helm upgrade. Always update Helm values for persistent changes.

Performance Considerations

Auto-Refresh Intervals

  • Small clusters (less than 50 nodes): Default values work well
  • Medium clusters (50-200 nodes): Increase resourceAutoRefreshTimeInterval to 30-60 seconds
  • Large clusters (more than 200 nodes): Increase to 60-120 seconds and enable hideAllNamespaces

Items Per Page

  • Higher values reduce pagination but increase memory usage
  • In large clusters, keep this at 10-20 to prevent browser performance issues

All Namespaces Option

In clusters with many namespaces (>100) and resources (>10,000 pods), selecting “All namespaces” can:
  • Cause browser Out Of Memory errors
  • Overload the API server
  • Make the Dashboard unresponsive
Solution: Set hideAllNamespaces: true and provide a namespaceFallbackList.

Build docs developers (and LLMs) love