diff --git a/charts/kubernetes-dashboard/values.yaml b/charts/kubernetes-dashboard/values.yaml
index 8b63ba90397a..a2510eb0bc5e 100644
--- a/charts/kubernetes-dashboard/values.yaml
+++ b/charts/kubernetes-dashboard/values.yaml
@@ -84,6 +84,8 @@ app:
# resourceAutoRefreshTimeInterval: 10
# # Hide all access denied warnings in the notification panel
# disableAccessDeniedNotifications: false
+ # # Hide all namespaces option in namespace selection dropdown to avoid accidental selection in large clusters thus preventing OOM errors
+ # hideAllNamespaces: false
# # Namespace that should be selected by default after logging in.
# defaultNamespace: default
# # List of namespaces that should be presented to user without namespace list privileges.
diff --git a/modules/web/pkg/settings/settings.go b/modules/web/pkg/settings/settings.go
index 2ce9469682a5..b8a0421ad103 100644
--- a/modules/web/pkg/settings/settings.go
+++ b/modules/web/pkg/settings/settings.go
@@ -28,6 +28,7 @@ var defaultSettings = Settings{
LogsAutoRefreshTimeInterval: lo.ToPtr(5),
ResourceAutoRefreshTimeInterval: lo.ToPtr(10),
DisableAccessDeniedNotifications: lo.ToPtr(false),
+ HideAllNamespaces: lo.ToPtr(false),
DefaultNamespace: lo.ToPtr("default"),
NamespaceFallbackList: []string{"default"},
}
@@ -39,6 +40,7 @@ type Settings struct {
LogsAutoRefreshTimeInterval *int `json:"logsAutoRefreshTimeInterval,omitempty"`
ResourceAutoRefreshTimeInterval *int `json:"resourceAutoRefreshTimeInterval,omitempty"`
DisableAccessDeniedNotifications *bool `json:"disableAccessDeniedNotifications,omitempty"`
+ HideAllNamespaces *bool `json:"hideAllNamespaces,omitempty"`
DefaultNamespace *string `json:"defaultNamespace,omitempty"`
NamespaceFallbackList []string `json:"namespaceFallbackList,omitempty"`
}
diff --git a/modules/web/src/common/components/namespace/component.ts b/modules/web/src/common/components/namespace/component.ts
index 188d22ea7e67..d5f76ce7665a 100644
--- a/modules/web/src/common/components/namespace/component.ts
+++ b/modules/web/src/common/components/namespace/component.ts
@@ -102,6 +102,10 @@ export class NamespaceSelectorComponent implements OnInit {
this.loadNamespaces_();
}
+ showAllNamespaces(): boolean {
+ return !this.settingsService_.getHideAllNamespaces();
+ }
+
selectNamespace(): void {
if (this.selectNamespaceInput.length === 0) {
return;
diff --git a/modules/web/src/common/components/namespace/template.html b/modules/web/src/common/components/namespace/template.html
index 930b0e449e14..a187768ddd03 100644
--- a/modules/web/src/common/components/namespace/template.html
+++ b/modules/web/src/common/components/namespace/template.html
@@ -33,7 +33,7 @@
/>
All namespaces
+
+
+
+
+
+