1# Default values for headlamp.
2# This is a YAML-formatted file.
3# Declare variables to be passed into your templates.
5# -- Number of desired pods
8 # -- Container image registry
10 # -- Container image name
11 repository: chainguard-private/headlamp-fips
12 # -- Image pull policy. One of Always, Never, IfNotPresent
13 pullPolicy: IfNotPresent
14 # -- Container image tag, If "" uses appVersion in Chart.yaml
15 tag: 0.46.0-r1@sha256:c43d89a8de34674fcf0877b8772259e20ef878dbccf1a57df1deee14322a829f
16# -- An optional list of references to secrets in the same namespace to use for pulling any of the images used
18# -- Overrides the name of the chart
20# -- Overrides the full name of the chart
22# -- Override the deployment namespace; defaults to .Release.Namespace
24# -- An optional list of init containers to be run before the main containers.
26# -- An optional list of extra containers to be run along side the main containers.
30 inClusterContextName: "main"
31 # -- base url path at which headlamp should run
33 # -- session token TTL in seconds (default is 24 hours)
35 # -- UNSAFE: authenticate every Headlamp user as the pod's service account when running in-cluster.
36 # This disables per-user authentication and is only safe behind an auth proxy (e.g. OIDC proxy).
37 unsafeUseServiceAccountToken: false
38 # -- path to the service account token file.
39 # Only used when unsafeUseServiceAccountToken is true.
40 # Defaults to /var/run/secrets/kubernetes.io/serviceaccount/token when empty.
41 serviceAccountTokenPath: ""
44 # @param config.oidc.secret - OIDC secret configuration
45 # If you want to use an existing secret, set create to false and provide the name of the secret.
46 # If you want to create a new secret, set create to true and provide the name of the secret.
47 # Also provide the values for clientID, clientSecret, issuerURL, and scopes.
55 # -- Generate OIDC secret. If true, will generate a secret using .config.oidc.
57 # -- Name of the OIDC secret.
60 # @param config.oidc - OIDC env configuration
61 # If you want to set the OIDC configuration directly, set the following values.
65 # clientID: "clientID"
66 # clientSecret: "clientSecret"
67 # issuerURL: "issuerURL"
72 # -- OIDC client secret
76 # -- OIDC scopes to be used
78 # -- OIDC callback URL
80 # -- OIDC client to be used during token validation
82 # -- OIDC Issuer URL to be used during token validation
83 validatorIssuerURL: ""
84 # -- Use 'access_token' instead of 'id_token' when authenticating using OIDC
86 # -- Use PKCE (Proof Key for Code Exchange) for enhanced security in OIDC flow
88 # -- Enable using OIDC cookie for authentication outside of cluster
90 # -- Enable automatic redirect to the OIDC provider
93 # @param config.oidc - External OIDC secret configuration
94 # If you want to use an external secret for OIDC configuration, enable this option.
95 # Provide the name of the secret to use.
107 # -- Set to true if your external secret contains an OIDC_SCOPES key.
108 # When false (default), the -oidc-scopes argument is omitted so that
109 # a missing key does not produce an empty or unresolved argument.
111 # -- URL to fetch additional user info for the /me endpoint.
112 # For oauth2proxy /oauth2/userinfo can be used. Empty and it will not be used.
114 # -- directory to look for plugins
115 pluginsDir: "/headlamp/plugins"
116 # Bundled (static) plugins that ship inside the Headlamp image, such as the
117 # Prometheus plugin (the "Show Prometheus metrics" UI).
119 # -- Serve the bundled static plugins. Set to false to disable them (e.g. to
120 # hide the "Show Prometheus metrics" button) without relying on internal
121 # image paths; this sets HEADLAMP_STATIC_PLUGINS_DIR to an empty string so the backend skips them.
125 # -- Default image to use when creating pod debug containers. If empty, Headlamp uses its built-in default.
127 # -- Default image to use when creating node shell pods. If empty, Headlamp uses its built-in default.
129 # -- Default namespace to use when creating node shell pods. If empty, Headlamp uses its built-in default.
130 nodeShellNamespace: ""
131 # tlsCertPath: "/headlamp-cert/headlamp-ca.crt"
132 # tlsKeyPath: "/headlamp-cert/headlamp-tls.key"
134 # -- Enable experimental/alpha Cluster Inventory discovery.
136 # -- Experimental/alpha Cluster Inventory access providers config. Required when enabled.
137 accessProvidersConfig: {}
138 # accessProvidersConfig:
140 # - name: secretreader
142 # apiVersion: client.authentication.k8s.io/v1
143 # command: /access-plugins/secretreader/bin/secretreader-plugin
144 # interactiveMode: Never
145 # provideClusterInfo: true
146 # - name: kubeconfig-secretreader
148 # apiVersion: client.authentication.k8s.io/v1
149 # command: /access-plugins/kubeconfig-secretreader/bin/kubeconfig-secretreader-plugin
150 # interactiveMode: Never
151 # provideClusterInfo: true
152 # plugins[] uses the Kubernetes "image" volume type to mount experimental/alpha access provider binaries.
155 # - name: secretreader
156 # image: registry.k8s.io/cluster-inventory-api/secretreader:v0.1.3@sha256:ec3090dc166aa2b42fb35d714d161c417d8b27bbc463404c8f615f5f4c610a1d
157 # mountPath: /access-plugins/secretreader
158 # - name: kubeconfig-secretreader
159 # image: registry.k8s.io/cluster-inventory-api/kubeconfig-secretreader:v0.1.3@sha256:b92966cc6e4ac78002a63862921022a71d54956826f6e4febcb7247495eb98c0
160 # mountPath: /access-plugins/kubeconfig-secretreader
161 # -- Kubernetes label selector used to filter experimental/alpha ClusterProfile resources.
162 labelSelector: "!headlamp.dev/ignore"
163 # -- Namespaces watched for experimental/alpha ClusterProfile resources. Empty uses the Headlamp pod namespace for in-cluster roots and the kubeconfig context namespace for kubeconfig roots; ["*"] watches all and requires equivalent cluster-wide RBAC permissions.
165 # -- Override the experimental/alpha Cluster Inventory root reconcile interval. Empty uses the Headlamp default.
166 rootReconcileInterval: ""
167 # -- Override the experimental/alpha Cluster Inventory no-CRD cache TTL. Empty uses the Headlamp default.
169 # Extra arguments that can be given to the container. See charts/headlamp/README.md for more information.
171# -- An optional list of environment variables
173# - name: KUBERNETES_SERVICE_HOST
175# - name: KUBERNETES_SERVICE_PORT
178# -- Mount Service Account token in pod
179automountServiceAccountToken: true
181 # -- Specifies whether a service account should be created
183 # -- Annotations to add to the service account
185 # -- The name of the service account to use.(If not set and create is true, a name is generated using the fullname template)
188 # -- Specified whether a cluster role binding should be created
190 # -- Set name of the Cluster Role with limited permissions from you cluster
191 # for example - clusterRoleName: user-ro
192 clusterRoleName: cluster-admin
193 # -- Annotations to add to the cluster role binding
195# -- Annotations to add to the deployment
196deploymentAnnotations: {}
197# -- Annotations to add to the pod
199# -- Labels to add to the pod
201# -- Controls user namespace isolation for the Headlamp pod.
202# When true (default), the pod shares the host user namespace (user namespaces are DISABLED).
203# When false, the pod uses a separate user namespace (user namespaces are ENABLED) for stronger isolation,
204# if supported by the cluster. Set this to false if your cluster supports user namespaces and you want
205# additional isolation; leave as true if user namespaces are not available.
206# See: https://kubernetes.io/docs/concepts/workloads/pods/user-namespaces/
208# -- Headlamp pod's Security Context
209podSecurityContext: {}
212# -- Headlamp containers Security Context
213# When readOnlyRootFilesystem: true is set, the chart automatically adds a
214# writable emptyDir volume named "headlamp-tmp" mounted at /tmp so the
215# application can write temporary files.
216# You can override this behavior in two ways:
217# 1. Supply your own volumeMount with mountPath: /tmp — the chart will skip
218# adding both the automatic mount and the automatic volume.
219# 2. Supply your own volume named "headlamp-tmp" (e.g. to set sizeLimit) —
220# the chart will skip creating the volume but will still add the /tmp mount
221# pointing to your volume.
226 # readOnlyRootFilesystem: true
231# Uses these defaults if this is empty.
232# allowPrivilegeEscalation: false
235# type: RuntimeDefault
241 # -- Annotations to add to the service
243 # -- Kubernetes Service type
245 # -- Kubernetes Service port
247 # -- Kubernetes Service port appProtocol (for the main http port)
249 # -- Kubernetes Service clusterIP
251 # -- Kubernetes Service loadBalancerIP
253 # -- Kubernetes Service loadBalancerSourceRanges
254 loadBalancerSourceRanges: []
255 # -- Kubernetes Service Nodeport
257 # -- Additional ports to expose on the Service in addition to the default
258 # http port. Each entry must have a unique `name` and a `port`. `targetPort`
259 # defaults to `port` when omitted. `nodePort` is only honored when
260 # `service.type` is `NodePort` or `LoadBalancer`. A matching containerPort
261 # must be provided by the user (e.g. via a sidecar) for traffic to actually
263 extraServicePorts: []
269# -- Headlamp containers volume mounts
271# -- Headlamp pod's volumes
273persistentVolumeClaim:
274 # -- Enable Persistent Volume Claim
276 # -- Annotations to add to the persistent volume claim (if enabled)
278 # -- accessModes for the persistent volume claim, eg: ReadWriteOnce, ReadOnlyMany, ReadWriteMany etc.
280 # -- size of the persistent volume claim, eg: 10Gi. Required if enabled is true.
282 # -- storageClassName for the persistent volume claim.
284 # -- selector for the persistent volume claim.
286 # -- volumeMode for the persistent volume claim, eg: Filesystem, Block.
289 # -- Enable ingress controller resource
291 # -- Annotations for Ingress resource
293 # kubernetes.io/tls-acme: "true"
295 # -- Additional labels to add to the Ingress resource
297 # app.kubernetes.io/part-of: traefik
300 # -- Ingress class name. replacement for the deprecated "kubernetes.io/ingress.class" annotation
302 # -- Hostname(s) for the Ingress resource
303 # Please refer to https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/#IngressSpec for more information.
304 # Each path may optionally specify `backend.service.{name,port}` to override
305 # the default Headlamp Service / `service.port`. `name` supports `tpl` so
306 # values like `{{ .Release.Name }}-extra` can be used. `port` accepts either
307 # `number` or `name` (matching `service.extraServicePorts[].name`).
309 # - host: chart-example.local
312 # type: ImplementationSpecific
314 # type: ImplementationSpecific
319 # -- Ingress TLS configuration
321 # - secretName: chart-example-tls
323 # - chart-example.local
324# HTTPRoute configuration for Gateway API
325# Please refer to https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRoute
327 # -- Enable HTTPRoute resource for Gateway API
329 # -- Annotations for HTTPRoute resource
331 # -- Additional labels for HTTPRoute resource
333 # -- Parent references (REQUIRED when enabled - HTTPRoute will not work without this)
337 # namespace: gateway-namespace
339 # -- Hostnames for the HTTPRoute
342 # - headlamp.example.com
344 # -- Custom routing rules (optional, defaults to path prefix /)
345 # If not specified, a default rule routing all traffic to the service is used
347 # Example custom rules:
354 # - name: "{{ .Release.Name }}-headlamp"
356# -- CPU/Memory resource requests/limits
358# We usually recommend not to specify default resources and to leave this as a conscious
359# choice for the user. This also increases chances charts run on environments with little
360# resources, such as Minikube. If you do want to specify resources, uncomment the following
361# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
369# -- Node labels for pod assignment
371# -- Toleration labels for pod assignment
373# -- Affinity settings for pod assignment
375# -- Host aliases to add to the pod's /etc/hosts file
377# -- Topology Spread Constraints for pod assignment
378topologySpreadConstraints: []
380# topologyKey: topology.kubernetes.io/zone
381# whenUnsatisfiable: ScheduleAnyway
385# topologyKey: kubernetes.io/hostname
386# whenUnsatisfiable: DoNotSchedule
390# -- Pod priority class
392# Probe configuration for liveness and readiness checks
394 # -- Scheme to use for liveness and readiness probes (HTTP or HTTPS).
395 # Set to HTTPS when TLS is enabled at the backend server.
398 # -- Initial delay in seconds before starting liveness probe
399 initialDelaySeconds: 0
400 # -- Period in seconds between liveness probe checks
402 # -- Timeout in seconds for liveness probe
404 # -- Minimum consecutive successes for the probe to be considered successful (must be 1 for liveness probes per Kubernetes API)
406 # -- Minimum consecutive failures for the probe to be considered failed
409 # -- Initial delay in seconds before starting readiness probe
410 initialDelaySeconds: 0
411 # -- Period in seconds between readiness probe checks
413 # -- Timeout in seconds for readiness probe
415 # -- Minimum consecutive successes for the probe to be considered successful
417 # -- Minimum consecutive failures for the probe to be considered failed
419# Plugin Manager Sidecar Container Configuration
421 # -- Enable plugin manager
423 # -- Plugin configuration file name
424 configFile: "plugin.yml"
425 # -- Plugin configuration content in YAML format. This is required if plugins.enabled is true.
427 # -- Base node image to use
428 baseImage: cgr.dev/chainguard-private/node-fips:v26.12.1-r2@sha256:df295ee3f519602b6e50c36f67573c838cebb15c592cfce024a2fc3da58b0c05
429 # -- Headlamp plugin package version to install
431 # -- Plugin manager containers volume mounts
433 # -- Plugin manager env variable configuration
435 # - name: HTTPS_PROXY
436 # value: "proxy.example.com:8080"
437 # -- Specify resrouces
445 # If omitted, the plugin manager will inherit the global securityContext.
446 # When readOnlyRootFilesystem: true is active (set here or inherited), the
447 # chart automatically adds a writable emptyDir volume named
448 # "headlamp-plugins-tmp" mounted at /tmp in the plugin manager container.
449 # Override behavior mirrors the main container: supply your own /tmp
450 # volumeMount to skip both, or supply your own "headlamp-plugins-tmp" volume
451 # (e.g. to set sizeLimit) to have the chart only add the mount.
455 # allowPrivilegeEscalation: false
456 # readOnlyRootFilesystem: true
461 # -- enable PodDisruptionBudget
462 # ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
465 # type: [null, integer, string]
467 # -- Minimum number/percentage of pods that should remain scheduled.
468 # When it's set, maxUnavailable must be disabled by `maxUnavailable: null`
471 # type: [null, integer, string]
473 # -- Maximum number/percentage of pods that may be made unavailable
476 # type: [null, string]
478 # -- How are unhealthy, but running, pods counted for eviction
479 unhealthyPodEvictionPolicy: null
480# -- Additional Kubernetes manifests to be deployed. Include the manifest as nested YAML.