diff --git a/charts/qdrant/values.schema.json b/charts/qdrant/values.schema.json new file mode 100644 index 0000000..4f3190a --- /dev/null +++ b/charts/qdrant/values.schema.json @@ -0,0 +1,352 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Schema for validating Helm values for Qdrant Helm chart", + "type": "object", + "definitions": { + "stringMap": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "probe": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "initialDelaySeconds": { "type": "integer", "minimum": 0 }, + "periodSeconds": { "type": "integer", "minimum": 1 }, + "timeoutSeconds": { "type": "integer", "minimum": 1 }, + "failureThreshold": { "type": "integer", "minimum": 1 }, + "successThreshold": { "type": "integer", "minimum": 1 } + } + }, + "apiKey": { + "description": "false: disabled, true: auto-generated, string: the key itself, object: valueFrom reference to an external secret", + "oneOf": [ + { "type": "boolean" }, + { "type": "string" }, + { + "type": "object", + "properties": { + "valueFrom": { + "type": "object", + "properties": { + "secretKeyRef": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "key": { "type": "string" } + }, + "required": ["name", "key"] + } + }, + "required": ["secretKeyRef"] + } + }, + "required": ["valueFrom"] + } + ] + }, + "volumeClaim": { + "type": "object", + "properties": { + "accessModes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ReadWriteOnce", + "ReadOnlyMany", + "ReadWriteMany", + "ReadWriteOncePod" + ] + } + }, + "size": { "type": "string" }, + "annotations": { "type": "object" }, + "additionalLabels": { "type": "object" }, + "storageVolumeName": { "type": "string" }, + "storageSubPath": { "type": "string" }, + "storageClassName": { "type": "string" }, + "snapshotsVolumeName": { "type": "string" }, + "snapshotsSubPath": { "type": "string" }, + "volumeAttributesClassName": { "type": "string" } + } + } + }, + "properties": { + "replicaCount": { "type": "integer", "minimum": 0 }, + "image": { + "type": "object", + "properties": { + "repository": { "type": "string" }, + "pullPolicy": { + "type": "string", + "enum": ["Always", "IfNotPresent", "Never"] + }, + "tag": { "type": "string" }, + "useUnprivilegedImage": { "type": "boolean" } + } + }, + "imagePullSecrets": { + "type": "array", + "items": { "type": "object" } + }, + "nameOverride": { "type": "string" }, + "fullnameOverride": { "type": "string" }, + "args": { + "type": "array", + "items": { "type": "string" } + }, + "env": { + "type": "array", + "items": { "type": "object" } + }, + "service": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["ClusterIP", "NodePort", "LoadBalancer", "ExternalName"] + }, + "additionalLabels": { "type": "object" }, + "annotations": { "type": "object" }, + "loadBalancerIP": { "type": "string" }, + "ports": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, + "targetPort": { + "oneOf": [ + { "type": "integer", "minimum": 1, "maximum": 65535 }, + { "type": "string" } + ] + }, + "protocol": { + "type": "string", + "enum": ["TCP", "UDP", "SCTP"] + }, + "checksEnabled": { "type": "boolean" }, + "appProtocol": { "type": "string" } + }, + "required": ["name", "port", "targetPort"] + } + } + } + }, + "ingress": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "ingressClassName": { "type": "string" }, + "additionalLabels": { "type": "object" }, + "annotations": { "type": "object" }, + "hosts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "host": { "type": "string" }, + "paths": { + "type": "array", + "items": { + "type": "object", + "properties": { + "path": { "type": "string" }, + "pathType": { + "type": "string", + "enum": ["Prefix", "Exact", "ImplementationSpecific"] + }, + "servicePort": { + "oneOf": [ + { "type": "integer", "minimum": 1, "maximum": 65535 }, + { "type": "string" } + ] + } + } + } + } + } + } + }, + "tls": { + "type": "array", + "items": { "type": "object" } + } + } + }, + "livenessProbe": { "$ref": "#/definitions/probe" }, + "readinessProbe": { "$ref": "#/definitions/probe" }, + "startupProbe": { "$ref": "#/definitions/probe" }, + "additionalLabels": { "type": "object" }, + "additionalAnnotations": { "type": "object" }, + "podAnnotations": { "type": "object" }, + "podLabels": { "type": "object" }, + "resources": { "type": "object" }, + "containerSecurityContext": { + "type": ["object", "boolean"], + "properties": { + "runAsNonRoot": { "type": "boolean" }, + "runAsUser": { "type": "integer", "minimum": 0 }, + "runAsGroup": { "type": "integer", "minimum": 0 }, + "allowPrivilegeEscalation": { "type": "boolean" }, + "privileged": { "type": "boolean" }, + "readOnlyRootFilesystem": { "type": "boolean" } + } + }, + "podSecurityContext": { + "type": ["object", "boolean"], + "properties": { + "fsGroup": { "type": "integer", "minimum": 0 }, + "fsGroupChangePolicy": { + "type": "string", + "enum": ["Always", "OnRootMismatch"] + } + } + }, + "lifecycle": { "type": "object" }, + "updateVolumeFsOwnership": { "type": "boolean" }, + "nodeSelector": { "type": "object" }, + "tolerations": { + "type": "array", + "items": { "type": "object" } + }, + "affinity": { "type": "object" }, + "topologySpreadConstraints": { + "type": "array", + "items": { "type": "object" } + }, + "persistence": { "$ref": "#/definitions/volumeClaim" }, + "snapshotPersistence": { + "allOf": [ + { "$ref": "#/definitions/volumeClaim" }, + { + "type": "object", + "properties": { "enabled": { "type": "boolean" } } + } + ] + }, + "snapshotRestoration": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "pvcName": { "type": "string" }, + "mountPath": { "type": "string" }, + "snapshots": { + "type": ["array", "null"], + "items": { "type": "string" } + } + } + }, + "config": { + "description": "Free-form Qdrant configuration, rendered into the config file. Left open because Qdrant adds options between releases.", + "type": "object", + "properties": { + "cluster": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "p2p": { + "type": "object", + "properties": { + "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, + "enable_tls": { "type": "boolean" } + } + }, + "consensus": { + "type": "object", + "properties": { + "tick_period_ms": { "type": "integer", "minimum": 1 } + } + } + } + }, + "service": { + "type": "object", + "properties": { + "enable_tls": { "type": "boolean" } + } + } + } + }, + "sidecarContainers": { + "type": "array", + "items": { "type": "object" } + }, + "metrics": { + "type": "object", + "properties": { + "serviceMonitor": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "additionalLabels": { "type": "object" }, + "scrapeInterval": { "type": "string" }, + "scrapeTimeout": { "type": "string" }, + "targetPort": { + "oneOf": [{ "type": "string" }, { "type": "integer" }] + }, + "targetPath": { "type": "string" }, + "metricRelabelings": { "type": "array" }, + "relabelings": { "type": "array" }, + "authorization": { "type": "object" } + } + } + } + }, + "serviceAccount": { + "type": "object", + "properties": { + "create": { "type": "boolean" }, + "name": { "type": "string" }, + "annotations": { "type": "object" } + } + }, + "priorityClassName": { "type": "string" }, + "shareProcessNamespace": { "type": "boolean" }, + "terminationGracePeriodSeconds": { "type": "integer", "minimum": 0 }, + "podManagementPolicy": { + "type": "string", + "enum": ["Parallel", "OrderedReady"] + }, + "podDisruptionBudget": { + "type": "object", + "properties": { + "enabled": { "type": "boolean" }, + "maxUnavailable": { + "oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "string" }] + }, + "minAvailable": { + "oneOf": [{ "type": "integer", "minimum": 0 }, { "type": "string" }] + }, + "unhealthyPodEvictionPolicy": { + "type": "string", + "enum": ["", "IfHealthyBudget", "AlwaysAllow"] + } + } + }, + "apiKey": { "$ref": "#/definitions/apiKey" }, + "readOnlyApiKey": { "$ref": "#/definitions/apiKey" }, + "additionalVolumes": { + "type": "array", + "items": { "type": "object" } + }, + "additionalVolumeMounts": { + "type": "array", + "items": { "type": "object" } + }, + "chartTests": { + "type": "object", + "properties": { + "dbInteraction": { + "type": "object", + "properties": { + "image": { "type": "string" }, + "resources": { "type": "object" } + } + } + } + } + } +}