{ "title": "Chart Values", "type": "object", "properties": { "global": { "type": "object", "properties": { "imageRegistry": { "type": "string", "description": "Global Docker image registry", "default": "" }, "imagePullSecrets": { "type": "array", "description": "Global Docker registry secret names as an array", "default": [], "items": {} }, "storageClass": { "type": "string", "description": "Global StorageClass for Persistent Volume(s)", "default": "" }, "compatibility": { "type": "object", "properties": { "openshift": { "type": "object", "properties": { "adaptSecurityContext": { "type": "string", "description": "Adapt the securityContext sections of the deployment to make them compatible with Openshift restricted-v2 SCC: remove runAsUser, runAsGroup and fsGroup and let the platform use their allowed default IDs. Possible values: auto (apply if the detected running cluster is Openshift), force (perform the adaptation always), disabled (do not perform adaptation)", "default": "auto" } } } } } } }, "kubeVersion": { "type": "string", "description": "Override Kubernetes version", "default": "" }, "nameOverride": { "type": "string", "description": "String to partially override common.names.fullname", "default": "" }, "fullnameOverride": { "type": "string", "description": "String to fully override common.names.fullname", "default": "" }, "commonLabels": { "type": "object", "description": "Labels to add to all deployed objects", "default": {} }, "commonAnnotations": { "type": "object", "description": "Annotations to add to all deployed objects", "default": {} }, "clusterDomain": { "type": "string", "description": "Kubernetes cluster domain name", "default": "cluster.local" }, "extraDeploy": { "type": "array", "description": "Array of extra objects to deploy with the release", "default": [], "items": {} }, "enableServiceLinks": { "type": "boolean", "description": "Whether information about services should be injected into all pods' environment variable", "default": false }, "diagnosticMode": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable diagnostic mode (all probes will be disabled and the command will be overridden)", "default": false }, "command": { "type": "array", "description": "Command to override all containers in the deployments/statefulsets", "default": [ "sleep" ], "items": { "type": "string" } }, "args": { "type": "array", "description": "Args to override all containers in the deployments/statefulsets", "default": [ "infinity" ], "items": { "type": "string" } } } }, "milvus": { "type": "object", "properties": { "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Milvus image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Milvus image repository", "default": "REPOSITORY_NAME/milvus" }, "digest": { "type": "string", "description": "Milvus image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Milvus image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Milvus image pull secrets", "default": [], "items": {} }, "debug": { "type": "boolean", "description": "Enable debug mode", "default": false } } }, "auth": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "enable Milvus authentication", "default": false }, "username": { "type": "string", "description": "Milvus username", "default": "user" }, "password": { "type": "string", "description": "Milvus username password", "default": "" }, "rootPassword": { "type": "string", "description": "Milvus root password", "default": "" }, "existingSecret": { "type": "string", "description": "Name of a secret containing the Milvus password", "default": "" }, "existingSecretPasswordKey": { "type": "string", "description": "Name of the secret key containing the Milvus password", "default": "" } } }, "defaultConfig": { "type": "string", "description": "Milvus components default configuration", "default": "\"\"" }, "extraConfig": { "type": "object", "description": "Extra configuration parameters", "default": {} }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" } } }, "initJob": { "type": "object", "properties": { "forceRun": { "type": "boolean", "description": "Force the run of the credential job", "default": false }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "PyMilvus image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "PyMilvus image repository", "default": "REPOSITORY_NAME/pymilvus" }, "digest": { "type": "string", "description": "PyMilvus image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag image tag (immutable tags are recommended)", "default": "" }, "pullPolicy": { "type": "string", "description": "PyMilvus image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "PyMilvus image pull secrets", "default": [], "items": {} } } }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "tls": { "type": "object", "properties": { "existingSecret": { "type": "string", "description": "Name of the existing secret containing the TLS certificates for initJob.", "default": "" }, "cert": { "type": "string", "description": "The secret key from the existingSecret if 'cert' key different from the default (client.pem)", "default": "client.pem" }, "key": { "type": "string", "description": "The secret key from the existingSecret if 'key' key different from the default (client.key)", "default": "client.key" }, "caCert": { "type": "string", "description": "The secret key from the existingSecret if 'caCert' key different from the default (ca.pem)", "default": "ca.pem" }, "keyPassword": { "type": "string", "description": "Password to access the password-protected PEM key if necessary.", "default": "" } } }, "backoffLimit": { "type": "number", "description": "set backoff limit of the job", "default": 10 }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the credential init job", "default": [], "items": {} }, "extraCommands": { "type": "string", "description": "Extra commands to pass to the generation job", "default": "" }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled credential init job pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set credential init job pod's Security Context fsGroup", "default": 1001 } } }, "extraEnvVars": { "type": "array", "description": "Array containing extra env vars to configure the credential init job", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "ConfigMap containing extra env vars to configure the credential init job", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Secret containing extra env vars to configure the credential init job (in case of sensitive data)", "default": "" }, "extraVolumeMounts": { "type": "array", "description": "Array of extra volume mounts to be added to the jwt Container (evaluated as template). Normally used with `extraVolumes`.", "default": [], "items": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if initJob.resources is set (initJob.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on init job", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on init job", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Data Coordinator containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "Add deployment host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Additional pod labels", "default": {} }, "podAnnotations": { "type": "object", "description": "Additional pod annotations", "default": {} }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } } } }, "dataCoord": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Data Coordinator deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data coordinator nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data coordinator nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data coordinator nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Data Coordinator replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Data Coordinator", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Data Coordinator", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Data Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Data Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Data Coordinator containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if dataCoord.resources is set (dataCoord.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Data Coordinator pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Data Coordinator pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data coordinator container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data coordinator pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data coordinator pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data coordinator pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data coordinator.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data coordinator.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Data Coordinator pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Data Coordinator pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Data Coordinator pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Data Coordinator pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Data Coordinator statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Data Coordinator statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Data Coordinator pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Data Coordinator container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Data Coordinator pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Data Coordinator pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Data Coordinator pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Data Coordinator service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Data Coordinator GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Data Coordinator Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Data Coordinator service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Data Coordinator service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Data Coordinator service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Data Coordinator service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Data Coordinator service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Data Coordinator service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "rootCoord": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Root Coordinator deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data coordinator nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data coordinator nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data coordinator nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Root Coordinator replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Root Coordinator", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Root Coordinator", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Root Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Root Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Root Coordinator containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if rootCoord.resources is set (rootCoord.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Root Coordinator pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Root Coordinator pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data coordinator container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data coordinator pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data coordinator pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data coordinator pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data coordinator.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data coordinator.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Root Coordinator pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Root Coordinator pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Root Coordinator pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Root Coordinator pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Root Coordinator statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Root Coordinator statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Root Coordinator pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Root Coordinator container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Root Coordinator pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Root Coordinator pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Root Coordinator pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Root Coordinator service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Root Coordinator GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Root Coordinator Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Root Coordinator service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Root Coordinator service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Root Coordinator service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Root Coordinator service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Root Coordinator service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Root Coordinator service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "queryCoord": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Query Coordinator deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data coordinator nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data coordinator nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data coordinator nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Query Coordinator replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Query Coordinator", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Query Coordinator", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Query Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Query Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Query Coordinator containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if queryCoord.resources is set (queryCoord.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Query Coordinator pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Query Coordinator pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data coordinator container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data coordinator pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data coordinator pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data coordinator pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data coordinator.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data coordinator.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Query Coordinator pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Query Coordinator pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Query Coordinator pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Query Coordinator pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Query Coordinator statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Query Coordinator statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Query Coordinator pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Query Coordinator container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Query Coordinator pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Query Coordinator pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Query Coordinator pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Query Coordinator service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Query Coordinator GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Query Coordinator Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Query Coordinator service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Query Coordinator service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Query Coordinator service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Query Coordinator service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Query Coordinator service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Query Coordinator service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "indexCoord": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Index Coordinator deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data coordinator nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data coordinator nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data coordinator nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Index Coordinator replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Index Coordinator", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Index Coordinator", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Index Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Index Coordinator nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Index Coordinator containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if indexCoord.resources is set (indexCoord.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Index Coordinator pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Index Coordinator pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data coordinator container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data coordinator pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data coordinator pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data coordinator pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data coordinator.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data coordinator.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data coordinator.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Index Coordinator pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Index Coordinator pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Index Coordinator pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Index Coordinator pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Index Coordinator statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Index Coordinator statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Index Coordinator pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Index Coordinator container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Index Coordinator pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Index Coordinator pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Index Coordinator pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Index Coordinator service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Index Coordinator GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Index Coordinator Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Index Coordinator service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Index Coordinator service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Index Coordinator service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Index Coordinator service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Index Coordinator service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Index Coordinator service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "dataNode": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Data Node deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data node nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data node nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data node nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Data Node replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Data Node", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Data Node", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Data Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Data Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Data Node containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if dataNode.resources is set (dataNode.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Data Node pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Data Node pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data node container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data node pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data node pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data node pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data node.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data node.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Data Node pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Data Node pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Data Node pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Data Node pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Data Node statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Data Node statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Data Node pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Data Node container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Data Node pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Data Node pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Data Node pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Data Node service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Data Node GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Data Node Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Data Node service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Data Node service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Data Node service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Data Node service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Data Node service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Data Node service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "queryNode": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Query Node deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data node nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data node nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data node nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Query Node replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Query Node", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Query Node", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Query Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Query Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Query Node containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if queryNode.resources is set (queryNode.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Query Node pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Query Node pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data node container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data node pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data node pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data node pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data node.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data node.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Query Node pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Query Node pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Query Node pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Query Node pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Query Node statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Query Node statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Query Node pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Query Node container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Query Node pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Query Node pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Query Node pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Query Node service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Query Node GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Query Node Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Query Node service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Query Node service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Query Node service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Query Node service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Query Node service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Query Node service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "indexNode": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Index Node deployment", "default": true }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to data node nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for data node nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for data node nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Index Node replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Index Node", "default": 19530 }, "metrics": { "type": "number", "description": "Metrics port for Index Node", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Index Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Index Node nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Index Node containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if indexNode.resources is set (indexNode.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Index Node pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Index Node pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the data node container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "data node pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for data node pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for data node pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `data node.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `data node.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `data node.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Index Node pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Index Node pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Index Node pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Index Node pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Index Node statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Index Node statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Index Node pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Index Node container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Index Node pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Index Node pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Index Node pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Index Node service type", "default": "ClusterIP" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Index Node GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Index Node Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Index Node service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Index Node service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Index Node service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Index Node service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Index Node service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Index Node service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "proxy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Proxy deployment", "default": true }, "tls": { "type": "object", "properties": { "mode": { "type": "number", "description": "TLS mode for proxy. Allowed values: `0`, `1`, `2`", "default": 0 }, "existingSecret": { "type": "string", "description": "Name of the existing secret containing the TLS certificates for proxy.", "default": "" }, "cert": { "type": "string", "description": "The secret key from the existingSecret if 'cert' key different from the default (server.pem)", "default": "server.pem" }, "key": { "type": "string", "description": "The secret key from the existingSecret if 'key' key different from the default (server.key)", "default": "server.key" }, "caCert": { "type": "string", "description": "The secret key from the existingSecret if 'caCert' key different from the default (ca.pem)", "default": "ca.pem" }, "keyPassword": { "type": "string", "description": "Password to access the password-protected PEM key if necessary.", "default": "" } } }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to proxy nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for proxy nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for proxy nodes", "default": "" }, "defaultConfig": { "type": "string", "description": "Default override configuration from the common set in milvus.defaultConfig", "default": "\"\"" }, "existingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the default configuration", "default": "" }, "extraConfig": { "type": "object", "description": "Override configuration", "default": {} }, "extraConfigExistingConfigMap": { "type": "string", "description": "name of a ConfigMap with existing configuration for the Dashboard", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Proxy replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "grpc": { "type": "number", "description": "GRPC port for Proxy", "default": 19530 }, "grpcInternal": { "type": "number", "description": "GRPC internal port for Proxy", "default": 19529 }, "metrics": { "type": "number", "description": "Metrics port for Proxy", "default": 9091 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Proxy nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Proxy nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Proxy containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if proxy.resources is set (proxy.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Proxy pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Proxy pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the proxy container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "proxy pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for proxy pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for proxy pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `proxy.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `proxy.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `proxy.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `proxy.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `proxy.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Proxy pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Proxy pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Proxy pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Proxy pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Proxy statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Proxy statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Proxy pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Proxy container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Proxy pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Proxy pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Proxy pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Proxy service type", "default": "LoadBalancer" }, "ports": { "type": "object", "properties": { "grpc": { "type": "number", "description": "Proxy GRPC service port", "default": 19530 }, "metrics": { "type": "number", "description": "Proxy Metrics service port", "default": 9091 } } }, "nodePorts": { "type": "object", "properties": { "grpc": { "type": "string", "description": "Node port for GRPC", "default": "" }, "metrics": { "type": "string", "description": "Node port for Metrics", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Proxy service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Proxy service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Proxy service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Proxy service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Proxy service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Proxy service", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable metrics", "default": false }, "serviceMonitor": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create ServiceMonitor Resource for scraping metrics using Prometheus Operator", "default": false }, "annotations": { "type": "string", "description": "Annotations for the ServiceMonitor Resource", "default": "" }, "namespace": { "type": "string", "description": "Namespace for the ServiceMonitor Resource (defaults to the Release Namespace)", "default": "" }, "interval": { "type": "string", "description": "Interval at which metrics should be scraped.", "default": "" }, "scrapeTimeout": { "type": "string", "description": "Timeout after which the scrape is ended", "default": "" }, "labels": { "type": "object", "description": "Additional labels that can be used so ServiceMonitor will be discovered by Prometheus", "default": {} }, "selector": { "type": "object", "description": "Prometheus instance selector labels", "default": {} }, "relabelings": { "type": "array", "description": "RelabelConfigs to apply to samples before scraping", "default": [], "items": {} }, "metricRelabelings": { "type": "array", "description": "MetricRelabelConfigs to apply to samples before ingestion", "default": [], "items": {} }, "honorLabels": { "type": "boolean", "description": "Specify honorLabels parameter to add the scrape endpoint", "default": false }, "jobLabel": { "type": "string", "description": "The name of the label on the target service to use as the job name in prometheus.", "default": "" } } } } } } }, "attu": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Attu deployment", "default": true }, "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Attu image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Attu image repository", "default": "REPOSITORY_NAME/attu" }, "digest": { "type": "string", "description": "Attu image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Attu image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Attu image pull secrets", "default": [], "items": {} }, "debug": { "type": "boolean", "description": "Enable debug mode", "default": false } } }, "extraEnvVars": { "type": "array", "description": "Array with extra environment variables to add to attu nodes", "default": [], "items": {} }, "extraEnvVarsCM": { "type": "string", "description": "Name of existing ConfigMap containing extra env vars for attu nodes", "default": "" }, "extraEnvVarsSecret": { "type": "string", "description": "Name of existing Secret containing extra env vars for attu nodes", "default": "" }, "command": { "type": "array", "description": "Override default container command (useful when using custom images)", "default": [], "items": {} }, "args": { "type": "array", "description": "Override default container args (useful when using custom images)", "default": [], "items": {} }, "replicaCount": { "type": "number", "description": "Number of Attu replicas to deploy", "default": 1 }, "containerPorts": { "type": "object", "properties": { "http": { "type": "number", "description": "HTTP port for Attu", "default": 3000 } } }, "livenessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable livenessProbe on Attu nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for livenessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for livenessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for livenessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for livenessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for livenessProbe", "default": 1 } } }, "readinessProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable readinessProbe on Attu nodes", "default": true }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for readinessProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for readinessProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for readinessProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for readinessProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for readinessProbe", "default": 1 } } }, "startupProbe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable startupProbe on Attu containers", "default": false }, "initialDelaySeconds": { "type": "number", "description": "Initial delay seconds for startupProbe", "default": 5 }, "periodSeconds": { "type": "number", "description": "Period seconds for startupProbe", "default": 10 }, "timeoutSeconds": { "type": "number", "description": "Timeout seconds for startupProbe", "default": 5 }, "failureThreshold": { "type": "number", "description": "Failure threshold for startupProbe", "default": 5 }, "successThreshold": { "type": "number", "description": "Success threshold for startupProbe", "default": 1 } } }, "customLivenessProbe": { "type": "object", "description": "Custom livenessProbe that overrides the default one", "default": {} }, "customReadinessProbe": { "type": "object", "description": "Custom readinessProbe that overrides the default one", "default": {} }, "customStartupProbe": { "type": "object", "description": "Custom startupProbe that overrides the default one", "default": {} }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if attu.resources is set (attu.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} }, "podSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled Attu pods' Security Context", "default": true }, "fsGroupChangePolicy": { "type": "string", "description": "Set filesystem group change policy", "default": "Always" }, "sysctls": { "type": "array", "description": "Set kernel settings using the sysctl interface", "default": [], "items": {} }, "supplementalGroups": { "type": "array", "description": "Set filesystem extra groups", "default": [], "items": {} }, "fsGroup": { "type": "number", "description": "Set Attu pod's Security Context fsGroup", "default": 1001 } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "lifecycleHooks": { "type": "object", "description": "for the attu container(s) to automate configuration before or after startup", "default": {} }, "runtimeClassName": { "type": "string", "description": "Name of the runtime class to be used by pod(s)", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Mount Service Account token in pod", "default": false }, "hostAliases": { "type": "array", "description": "attu pods host aliases", "default": [], "items": {} }, "podLabels": { "type": "object", "description": "Extra labels for attu pods", "default": {} }, "podAnnotations": { "type": "object", "description": "Annotations for attu pods", "default": {} }, "podAffinityPreset": { "type": "string", "description": "Pod affinity preset. Ignored if `attu.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "podAntiAffinityPreset": { "type": "string", "description": "Pod anti-affinity preset. Ignored if `attu.affinity` is set. Allowed values: `soft` or `hard`", "default": "soft" }, "nodeAffinityPreset": { "type": "object", "properties": { "type": { "type": "string", "description": "Node affinity preset type. Ignored if `attu.affinity` is set. Allowed values: `soft` or `hard`", "default": "" }, "key": { "type": "string", "description": "Node label key to match. Ignored if `attu.affinity` is set", "default": "" }, "values": { "type": "array", "description": "Node label values to match. Ignored if `attu.affinity` is set", "default": [], "items": {} } } }, "affinity": { "type": "object", "description": "Affinity for Attu pods assignment", "default": {} }, "nodeSelector": { "type": "object", "description": "Node labels for Attu pods assignment", "default": {} }, "tolerations": { "type": "array", "description": "Tolerations for Attu pods assignment", "default": [], "items": {} }, "topologySpreadConstraints": { "type": "array", "description": "Topology Spread Constraints for pod assignment spread across your cluster among failure-domains", "default": [], "items": {} }, "priorityClassName": { "type": "string", "description": "Attu pods' priorityClassName", "default": "" }, "schedulerName": { "type": "string", "description": "Kubernetes pod scheduler registry", "default": "" }, "updateStrategy": { "type": "object", "properties": { "type": { "type": "string", "description": "Attu statefulset strategy type", "default": "RollingUpdate" }, "rollingUpdate": { "type": "object", "description": "Attu statefulset rolling update configuration parameters", "default": {} } } }, "extraVolumes": { "type": "array", "description": "Optionally specify extra list of additional volumes for the Attu pod(s)", "default": [], "items": {} }, "extraVolumeMounts": { "type": "array", "description": "Optionally specify extra list of additional volumeMounts for the Attu container(s)", "default": [], "items": {} }, "sidecars": { "type": "array", "description": "Add additional sidecar containers to the Attu pod(s)", "default": [], "items": {} }, "enableDefaultInitContainers": { "type": "boolean", "description": "Deploy default init containers", "default": true }, "initContainers": { "type": "array", "description": "Add additional init containers to the Attu pod(s)", "default": [], "items": {} }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable creation of ServiceAccount for Attu pods", "default": true }, "name": { "type": "string", "description": "The name of the ServiceAccount to use", "default": "" }, "automountServiceAccountToken": { "type": "boolean", "description": "Allows auto mount of ServiceAccountToken on the serviceAccount created", "default": false }, "annotations": { "type": "object", "description": "Additional custom annotations for the ServiceAccount", "default": {} } } }, "pdb": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Enable/disable a Pod Disruption Budget creation", "default": true } } }, "autoscaling": { "type": "object", "properties": { "vpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable VPA", "default": false }, "annotations": { "type": "object", "description": "Annotations for VPA resource", "default": {} }, "controlledResources": { "type": "array", "description": "VPA List of resources that the vertical pod autoscaler can control. Defaults to cpu and memory", "default": [], "items": {} }, "maxAllowed": { "type": "object", "description": "VPA Max allowed resources for the pod", "default": {} }, "minAllowed": { "type": "object", "description": "VPA Min allowed resources for the pod", "default": {} }, "updatePolicy": { "type": "object", "properties": { "updateMode": { "type": "string", "description": "Autoscaling update policy Specifies whether recommended updates are applied when a Pod is started and whether recommended updates are applied during the life of a Pod", "default": "Auto" } } } } }, "hpa": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable HPA for Milvus Data Plane", "default": false }, "annotations": { "type": "object", "description": "Annotations for HPA resource", "default": {} }, "minReplicas": { "type": "string", "description": "Minimum number of Milvus Data Plane replicas", "default": "" }, "maxReplicas": { "type": "string", "description": "Maximum number of Milvus Data Plane replicas", "default": "" }, "targetCPU": { "type": "string", "description": "Target CPU utilization percentage", "default": "" }, "targetMemory": { "type": "string", "description": "Target Memory utilization percentage", "default": "" } } } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "Attu service type", "default": "LoadBalancer" }, "ports": { "type": "object", "properties": { "http": { "type": "number", "description": "Attu HTTP service port", "default": 80 } } }, "nodePorts": { "type": "object", "properties": { "http": { "type": "string", "description": "Node port for HTTP", "default": "" } } }, "sessionAffinityConfig": { "type": "object", "description": "Additional settings for the sessionAffinity", "default": {} }, "sessionAffinity": { "type": "string", "description": "Control where client requests go, to the same pod or round-robin", "default": "None" }, "clusterIP": { "type": "string", "description": "Attu service Cluster IP", "default": "" }, "loadBalancerIP": { "type": "string", "description": "Attu service Load Balancer IP", "default": "" }, "loadBalancerSourceRanges": { "type": "array", "description": "Attu service Load Balancer sources", "default": [], "items": {} }, "externalTrafficPolicy": { "type": "string", "description": "Attu service external traffic policy", "default": "Cluster" }, "annotations": { "type": "object", "description": "Additional custom annotations for Attu service", "default": {} }, "extraPorts": { "type": "array", "description": "Extra ports to expose in the Attu service", "default": [], "items": {} } } }, "ingress": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable ingress record generation for Milvus", "default": false }, "pathType": { "type": "string", "description": "Ingress path type", "default": "ImplementationSpecific" }, "apiVersion": { "type": "string", "description": "Force Ingress API version (automatically detected if not set)", "default": "" }, "hostname": { "type": "string", "description": "Default host for the ingress record", "default": "milvus.local" }, "ingressClassName": { "type": "string", "description": "IngressClass that will be be used to implement the Ingress (Kubernetes 1.18+)", "default": "" }, "path": { "type": "string", "description": "Default path for the ingress record", "default": "/" }, "annotations": { "type": "object", "description": "Additional annotations for the Ingress resource. To enable certificate autogeneration, place here your cert-manager annotations.", "default": {} }, "tls": { "type": "boolean", "description": "Enable TLS configuration for the host defined at `attu.ingress.hostname` parameter", "default": false }, "selfSigned": { "type": "boolean", "description": "Create a TLS secret for this ingress record using self-signed certificates generated by Helm", "default": false }, "extraHosts": { "type": "array", "description": "An array with additional hostname(s) to be covered with the ingress record", "default": [], "items": {} }, "extraPaths": { "type": "array", "description": "An array with additional arbitrary paths that may need to be added to the ingress under the main host", "default": [], "items": {} }, "extraTls": { "type": "array", "description": "TLS configuration for additional hostname(s) to be covered with this ingress record", "default": [], "items": {} }, "secrets": { "type": "array", "description": "Custom TLS certificates as secrets", "default": [], "items": {} }, "extraRules": { "type": "array", "description": "Additional rules to be covered with this ingress record", "default": [], "items": {} } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable creation of NetworkPolicy resources", "default": true }, "allowExternal": { "type": "boolean", "description": "The Policy model to apply", "default": true }, "allowExternalEgress": { "type": "boolean", "description": "Allow the pod to access any range of port and all destinations.", "default": true }, "extraIngress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } }, "extraEgress": { "type": "array", "description": "Add extra ingress rules to the NetworkPolicy", "default": "[]", "items": { "type": "string" } } } } } }, "waitContainer": { "type": "object", "properties": { "image": { "type": "object", "properties": { "registry": { "type": "string", "description": "Init container wait-container image registry", "default": "REGISTRY_NAME" }, "repository": { "type": "string", "description": "Init container wait-container image name", "default": "REPOSITORY_NAME/os-shell" }, "digest": { "type": "string", "description": "Init container wait-container image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag", "default": "" }, "pullPolicy": { "type": "string", "description": "Init container wait-container image pull policy", "default": "IfNotPresent" }, "pullSecrets": { "type": "array", "description": "Specify docker-registry secret names as an array", "default": "[]", "items": { "type": "string" } } } }, "containerSecurityContext": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enabled containers' Security Context", "default": true }, "runAsUser": { "type": "number", "description": "Set containers' Security Context runAsUser", "default": 1001 }, "runAsGroup": { "type": "number", "description": "Set containers' Security Context runAsGroup", "default": 1001 }, "runAsNonRoot": { "type": "boolean", "description": "Set container's Security Context runAsNonRoot", "default": true }, "privileged": { "type": "boolean", "description": "Set container's Security Context privileged", "default": false }, "readOnlyRootFilesystem": { "type": "boolean", "description": "Set container's Security Context readOnlyRootFilesystem", "default": true }, "allowPrivilegeEscalation": { "type": "boolean", "description": "Set container's Security Context allowPrivilegeEscalation", "default": false }, "capabilities": { "type": "object", "properties": { "drop": { "type": "array", "description": "List of capabilities to be dropped", "default": [ "ALL" ], "items": { "type": "string" } } } }, "seccompProfile": { "type": "object", "properties": { "type": { "type": "string", "description": "Set container's Security Context seccomp profile", "default": "RuntimeDefault" } } } } }, "resourcesPreset": { "type": "string", "description": "Set container resources according to one common preset (allowed values: none, nano, small, medium, large, xlarge, 2xlarge). This is ignored if initJob.resources is set (initJob.resources is recommended for production).", "default": "micro" }, "resources": { "type": "object", "description": "Set container requests and limits for different resources like CPU or memory (essential for production workloads)", "default": {} } } }, "externalEtcd": { "type": "object", "properties": { "servers": { "type": "array", "description": "List of hostnames of the external etcd", "default": [], "items": {} }, "port": { "type": "number", "description": "Port of the external etcd instance", "default": 2379 }, "user": { "type": "string", "description": "User of the external etcd instance", "default": "root" }, "password": { "type": "string", "description": "Password of the external etcd instance", "default": "" }, "existingSecret": { "type": "string", "description": "Name of a secret containing the external etcd password", "default": "" }, "existingSecretPasswordKey": { "type": "string", "description": "Key inside the secret containing the external etcd password", "default": "etcd-root-password" }, "tls": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable TLS for etcd client connections.", "default": false }, "existingSecret": { "type": "string", "description": "Name of the existing secret containing the TLS certificates for external etcd client communications.", "default": "" }, "cert": { "type": "string", "description": "The secret key from the existingSecret if 'cert' key different from the default (tls.crt)", "default": "tls.crt" }, "key": { "type": "string", "description": "The secret key from the existingSecret if 'key' key different from the default (tls.key)", "default": "tls.key" }, "caCert": { "type": "string", "description": "The secret key from the existingSecret if 'caCert' key different from the default (ca.crt)", "default": "ca.crt" }, "keyPassword": { "type": "string", "description": "Password to access the password-protected PEM key if necessary.", "default": "" } } } } }, "externalS3": { "type": "object", "properties": { "host": { "type": "string", "description": "External S3 host", "default": "" }, "port": { "type": "number", "description": "External S3 port number", "default": 443 }, "accessKeyID": { "type": "string", "description": "External S3 access key ID", "default": "" }, "accessKeySecret": { "type": "string", "description": "External S3 access key secret", "default": "" }, "existingSecret": { "type": "string", "description": "Name of an existing secret resource containing the S3 credentials", "default": "" }, "existingSecretAccessKeyIDKey": { "type": "string", "description": "Name of an existing secret key containing the S3 access key ID", "default": "root-user" }, "existingSecretKeySecretKey": { "type": "string", "description": "Name of an existing secret key containing the S3 access key secret", "default": "root-password" }, "protocol": { "type": "string", "description": "External S3 protocol", "default": "https" }, "bucket": { "type": "string", "description": "External S3 bucket", "default": "milvus" }, "rootPath": { "type": "string", "description": "External S3 root path", "default": "file" }, "iamEndpoint": { "type": "string", "description": "External S3 IAM endpoint", "default": "" }, "cloudProvider": { "type": "string", "description": "External S3 cloud provider", "default": "" } } }, "externalKafka": { "type": "object", "properties": { "servers": { "type": "array", "description": "External Kafka brokers", "default": [ "localhost" ], "items": { "type": "string" } }, "port": { "type": "number", "description": "External Kafka port", "default": 9092 }, "listener": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Kafka listener protocol. Allowed protocols: PLAINTEXT, SASL_PLAINTEXT, SASL_SSL and SSL", "default": "PLAINTEXT" } } }, "sasl": { "type": "object", "properties": { "user": { "type": "string", "description": "User for SASL authentication", "default": "user" }, "password": { "type": "string", "description": "Password for SASL authentication", "default": "" }, "existingSecret": { "type": "string", "description": "Name of the existing secret containing a password for SASL authentication (under the key named \"client-passwords\")", "default": "" }, "existingSecretPasswordKey": { "type": "string", "description": "Name of the secret key containing the Kafka client user password", "default": "kafka-root-password" }, "enabledMechanisms": { "type": "string", "description": "Kafka enabled SASL mechanisms", "default": "PLAIN" } } } } }, "etcd": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Deploy etcd sub-chart", "default": true }, "replicaCount": { "type": "number", "description": "Number of etcd replicas", "default": 3 }, "containerPorts": { "type": "object", "properties": { "client": { "type": "number", "description": "Container port for etcd", "default": 2379 } } }, "auth": { "type": "object", "properties": { "rbac": { "type": "object", "properties": { "create": { "type": "boolean", "description": "Switch to enable RBAC authentication", "default": false } } }, "client": { "type": "object", "properties": { "secureTransport": { "type": "boolean", "description": "use TLS for client-to-server communications", "default": false } } } } } } }, "minio": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable/disable MinIO® chart installation", "default": true }, "auth": { "type": "object", "properties": { "rootUser": { "type": "string", "description": "MinIO® root username", "default": "admin" }, "rootPassword": { "type": "string", "description": "Password for MinIO® root user", "default": "" }, "existingSecret": { "type": "string", "description": "Name of an existing secret containing the MinIO® credentials", "default": "" } } }, "defaultBuckets": { "type": "string", "description": "Comma, semi-colon or space separated list of MinIO® buckets to create", "default": "milvus" }, "provisioning": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable/disable MinIO® provisioning job", "default": true }, "extraCommands": { "type": "array", "description": "Extra commands to run on MinIO® provisioning job", "default": [ "mc anonymous set download provisioning/milvus" ], "items": { "type": "string" } } } }, "tls": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable/disable MinIO® TLS support", "default": false } } }, "service": { "type": "object", "properties": { "type": { "type": "string", "description": "MinIO® service type", "default": "ClusterIP" }, "loadBalancerIP": { "type": "string", "description": "MinIO® service LoadBalancer IP", "default": "" }, "ports": { "type": "object", "properties": { "api": { "type": "number", "description": "MinIO® service port", "default": 80 } } } } } } }, "kafka": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable/disable Kafka chart installation", "default": true }, "controller": { "type": "object", "properties": { "replicaCount": { "type": "number", "description": "Number of Kafka controller eligible (controller+broker) nodes", "default": 1 } } }, "service": { "type": "object", "properties": { "ports": { "type": "object", "properties": { "client": { "type": "number", "description": "Kafka svc port for client connections", "default": 9092 } } } } }, "extraConfig": { "type": "string", "description": "Additional configuration to be appended at the end of the generated Kafka configuration file.", "default": "offsets.topic.replication.factor=1" }, "listeners": { "type": "object", "properties": { "client": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Kafka authentication protocol for the client listener", "default": "SASL_PLAINTEXT" } } } } }, "sasl": { "type": "object", "properties": { "enabledMechanisms": { "type": "string", "description": "Kafka enabled SASL mechanisms", "default": "PLAIN" }, "client": { "type": "object", "properties": { "users": { "type": "array", "description": "Kafka client users", "default": [ "user" ], "items": { "type": "string" } } } } } } } } } }