infra/headlamp/values.schema.json
2026-03-15 11:33:22 +02:00

578 lines
16 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"replicaCount": {
"type": "integer",
"description": "Number of replicas to deploy",
"minimum": 1
},
"image": {
"type": "object",
"title": "Image",
"description": "Image to deploy",
"properties": {
"registry": {
"type": "string",
"description": "Registry of the image"
},
"repository": {
"type": "string",
"description": "Repository of the image"
},
"pullPolicy": {
"type": "string",
"description": "Pull policy of the image",
"enum": ["Always", "IfNotPresent", "Never"]
},
"tag": {
"type": "string",
"description": "Tag of the image"
}
}
},
"imagePullSecrets": {
"type": "array",
"description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the image pull secret"
}
}
}
},
"nameOverride": {
"type": "string",
"description": "Override the name of the chart"
},
"fullnameOverride": {
"type": "string",
"description": "Override the full name of the chart"
},
"namespaceOverride": {
"type": "string",
"description": "Override the deployment namespace; defaults to .Release.Namespace"
},
"initContainers": {
"type": "array",
"description": "Init containers",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the init container"
},
"image": {
"type": "string",
"description": "Image of the init container"
},
"imagePullPolicy": {
"type": "string",
"description": "Pull policy of the init container",
"enum": ["Always", "IfNotPresent", "Never"]
},
"command": {
"type": "array",
"description": "Command of the init container",
"items": {
"type": "string"
}
},
"args": {
"type": "array",
"description": "Arguments of the init container",
"items": {
"type": "string"
}
},
"resources": {
"type": "object",
"description": "Resources of the init container",
"properties": {
"limits": {
"type": "object",
"description": "Limits of the init container",
"properties": {
"cpu": {
"type": "string",
"description": "CPU limit"
},
"memory": {
"type": "string",
"description": "Memory limit"
}
}
},
"requests": {
"type": "object",
"description": "Requests of the init container",
"properties": {
"cpu": {
"type": "string",
"description": "CPU request"
},
"memory": {
"type": "string",
"description": "Memory request"
}
}
}
}
},
"env": {
"type": "array",
"description": "Environment variables of the init container",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the environment variable"
},
"value": {
"type": "string",
"description": "Value of the environment variable"
}
}
}
},
"volumeMounts": {
"type": "array",
"description": "Volume mounts of the init container",
"items":
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the volume mount"
},
"mountPath": {
"type": "string",
"description": "Mount path of the volume mount"
},
"readOnly": {
"type": "boolean",
"description": "Read only of the volume mount"
}
}
}
}
}
}
},
"config": {
"type": "object",
"description": "Headlamp deployment configuration",
"properties": {
"baseURL": {
"type": "string",
"description": "Base URL of the application"
},
"sessionTTL": {
"type": "integer",
"description": "The time in seconds for the session to be valid",
"default": 86400,
"minimum": 1,
"maximum": 31536000
},
"oidc": {
"type": "object",
"description": "OIDC configuration",
"properties": {
"secret": {
"type": "object",
"description": "Secret created by Headlamp to authenticate with the OIDC provider",
"properties": {
"name": {
"type": "string",
"description": "Name of the secret"
},
"create": {
"type": "boolean",
"description": "Create the secret"
}
}
},
"clientID": {
"type": "string",
"description": "Issuer of the OIDC provider"
},
"clientSecret": {
"type": "string",
"description": "Client ID of the OIDC provider"
},
"issuerURL": {
"type": "string",
"description": "Client secret of the OIDC provider"
},
"scopes": {
"type": "string",
"description": "Scopes of the OIDC provider"
},
"usePKCE": {
"type": "boolean",
"description": "Use PKCE (Proof Key for Code Exchange) for enhanced security in OIDC flow"
},
"externalSecret": {
"type": "object",
"description": "External secret to use for OIDC configuration",
"properties": {
"name": {
"type": "string",
"description": "Name of the external secret"
},
"enabled": {
"type": "boolean",
"description": "Enable the external secret"
}
}
}
}
},
"pluginsDir": {
"type": "string",
"description": "Directory to load plugins from"
},
"tlsCertPath": {
"type": "string",
"description": "Path of certificate file for TLS"
},
"tlsKeyPath": {
"type": "string",
"description": "Path of private key file for TLS"
},
"extraArgs": {
"type": "array",
"description": "Extra arguments to pass to the application",
"items": {
"type": "string"
}
}
}
},
"env": {
"type": "array",
"description": "Environment variables to pass to the deployment",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the environment variable"
},
"value": {
"type": "string",
"description": "Value of the environment variable"
}
},
"required": ["name", "value"],
"additionalProperties": false
}
},
"automountServiceAccountToken": {
"type": "boolean",
"description": "Mount Service Account token in pod"
},
"serviceAccount": {
"type": "object",
"properties": {
"create": {
"type": "boolean",
"description": "Specifies whether a service account should be created"
},
"annotations": {
"type": "object",
"description": "Annotations to add to the service account"
},
"name": {
"type": "string",
"description": "The name of the service account to use"
}
}
},
"clusterRoleBinding": {
"type": "object",
"properties": {
"create": {
"type": "boolean",
"description": "Specifies whether a cluster role binding should be created"
},
"clusterRoleName": {
"type": "string",
"description": "The name of the ClusterRole to create in the cluster"
},
"annotations": {
"type": "object",
"description": "Annotations to add to the cluster role binding"
}
}
},
"service": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Kubernetes Service type",
"enum": ["ClusterIP", "NodePort", "LoadBalancer", "ExternalName"]
},
"port": {
"type": "integer",
"description": "Kubernetes Service port"
},
"clusterIP": {
"type": "string",
"description": "Kubernetes Service clusterIP"
},
"loadBalancerIP": {
"type": "string",
"description": "Kubernetes Service loadBalancerIP"
},
"loadBalancerSourceRanges": {
"type": "array",
"items": {
"type": "string"
},
"description": "Kubernetes Service loadBalancerSourceRanges"
},
"nodePort": {
"type": ["integer", "null"],
"description": "Kubernetes Service Nodeport"
}
}
},
"persistentVolumeClaim": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable Persistent Volume Claim"
},
"annotations": {
"type": "object",
"description": "Annotations to add to the persistent volume claim (if enabled)"
},
"accessModes": {
"type": "array",
"items": {
"type": "string"
}
},
"size": {
"type": "string"
},
"storageClassName": {
"type": "string"
},
"selector": {
"type": "object",
"properties": {
"matchLabels": {
"type": "object"
},
"matchExpressions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"operator": {
"type": "string"
},
"values": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"volumeMode": {
"type": "string"
}
}
},
"ingress": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable ingress controller resource"
},
"annotations": {
"type": "object",
"description": "Annotations for Ingress resource"
},
"ingressClassName": {
"type": "string",
"description": "Ingress class name"
},
"hosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"paths": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
"tls": {
"type": "array",
"items": {
"type": "object",
"properties": {
"secretName": {
"type": "string"
},
"hosts": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"httpRoute": {
"type": "object",
"description": "HTTPRoute configuration for Gateway API",
"properties": {
"enabled": {
"type": "boolean",
"description": "Enable HTTPRoute resource for Gateway API"
},
"annotations": {
"type": "object",
"description": "Annotations for HTTPRoute resource"
},
"labels": {
"type": "object",
"description": "Additional labels for HTTPRoute resource"
},
"parentRefs": {
"type": "array",
"description": "Parent references (REQUIRED when enabled - HTTPRoute will not work without this)",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the parent gateway"
},
"namespace": {
"type": "string",
"description": "Namespace of the parent gateway"
},
"sectionName": {
"type": "string",
"description": "Section name of the parent gateway listener"
}
},
"required": ["name"]
}
},
"hostnames": {
"type": "array",
"description": "Hostnames for the HTTPRoute",
"items": {
"type": "string"
}
},
"rules": {
"type": "array",
"description": "Custom routing rules (optional, defaults to path prefix /)",
"items": {
"type": "object"
}
}
}
},
"podDisruptionBudget": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": false,
"description": "Enable PodDisruptionBudget. See: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/"
},
"minAvailable": {
"oneOf": [
{
"type": "null"
},
{
"type": "integer",
"minimum": 0
},
{
"type": "string",
"pattern": "^([0-9]+%?|[0-9]*\\.[0-9]+%)$"
}
],
"default": 0,
"description": "Minimum number/percentage of pods that should remain scheduled. When it's set, maxUnavailable must be disabled by `maxUnavailable: null`"
},
"maxUnavailable": {
"oneOf": [
{
"type": "null"
},
{
"type": "integer",
"minimum": 0
},
{
"type": "string",
"pattern": "^([0-9]+%?|[0-9]*\\.[0-9]+%)$"
}
],
"default": null,
"description": "Maximum number/percentage of pods that may be made unavailable"
},
"unhealthyPodEvictionPolicy": {
"oneOf": [
{
"type": "null"
},
{
"type": "string",
"enum": [
"IfHealthyBudget",
"AlwaysAllow"
]
}
],
"default": null,
"description": "How are unhealthy, but running, pods counted for eviction"
}
}
},
"extraManifests": {
"type": "array",
"description": "Extra manifests to apply to the deployment",
"items": {
"type": "string"
}
}
}
}