mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 11:30:15 +00:00
352 lines
10 KiB
JSON
352 lines
10 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"required": ["server"],
|
|
"properties": {
|
|
"replicaCount": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Number of Pulse server replicas"
|
|
},
|
|
"image": {
|
|
"type": "object",
|
|
"properties": {
|
|
"repository": {
|
|
"type": "string",
|
|
"description": "Container image repository"
|
|
},
|
|
"pullPolicy": {
|
|
"type": "string",
|
|
"enum": ["Always", "IfNotPresent", "Never"],
|
|
"description": "Image pull policy"
|
|
},
|
|
"tag": {
|
|
"type": "string",
|
|
"description": "Container image tag (overrides chart appVersion)"
|
|
}
|
|
}
|
|
},
|
|
"imagePullSecrets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"description": "Image pull secrets for private registries"
|
|
},
|
|
"service": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["ClusterIP", "NodePort", "LoadBalancer"],
|
|
"description": "Kubernetes service type"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"description": "Service port"
|
|
}
|
|
}
|
|
},
|
|
"ingress": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable ingress resource"
|
|
},
|
|
"className": {
|
|
"type": "string",
|
|
"description": "Ingress class name"
|
|
},
|
|
"hosts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string",
|
|
"format": "hostname"
|
|
},
|
|
"paths": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string"
|
|
},
|
|
"pathType": {
|
|
"type": "string",
|
|
"enum": ["Prefix", "Exact", "ImplementationSpecific"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"persistence": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable persistent storage"
|
|
},
|
|
"existingClaim": {
|
|
"type": "string",
|
|
"description": "Use existing PVC"
|
|
},
|
|
"storageClass": {
|
|
"type": "string",
|
|
"description": "Storage class name"
|
|
},
|
|
"accessMode": {
|
|
"type": "string",
|
|
"enum": ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany", "ReadWriteOncePod"],
|
|
"description": "PVC access mode"
|
|
},
|
|
"size": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[EPTGMK]i?$",
|
|
"description": "Storage size (e.g., 8Gi)"
|
|
}
|
|
}
|
|
},
|
|
"server": {
|
|
"type": "object",
|
|
"properties": {
|
|
"resources": {
|
|
"type": "object",
|
|
"description": "Resource requests and limits"
|
|
},
|
|
"env": {
|
|
"type": "array",
|
|
"description": "Environment variables"
|
|
},
|
|
"secretEnv": {
|
|
"type": "object",
|
|
"properties": {
|
|
"create": {
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"data": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"agent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable optional unified pulse-agent workload"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": ["DaemonSet", "Deployment"],
|
|
"description": "Agent deployment type"
|
|
},
|
|
"healthPort": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535,
|
|
"description": "Health/metrics server port"
|
|
},
|
|
"livenessProbe": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable liveness probe"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Liveness probe path"
|
|
},
|
|
"initialDelaySeconds": {
|
|
"type": "integer"
|
|
},
|
|
"periodSeconds": {
|
|
"type": "integer"
|
|
},
|
|
"timeoutSeconds": {
|
|
"type": "integer"
|
|
},
|
|
"failureThreshold": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"readinessProbe": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable readiness probe"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Readiness probe path"
|
|
},
|
|
"initialDelaySeconds": {
|
|
"type": "integer"
|
|
},
|
|
"periodSeconds": {
|
|
"type": "integer"
|
|
},
|
|
"timeoutSeconds": {
|
|
"type": "integer"
|
|
},
|
|
"failureThreshold": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"monitoring": {
|
|
"type": "object",
|
|
"properties": {
|
|
"serviceMonitor": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Create ServiceMonitor for Prometheus"
|
|
},
|
|
"interval": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smh]$",
|
|
"description": "Scrape interval (e.g., 30s)"
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"description": "Metrics endpoint path on the main HTTP service (metrics listener is separate)"
|
|
}
|
|
}
|
|
},
|
|
"prometheusRule": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Create PrometheusRule for Explore recording rules and alerts"
|
|
},
|
|
"labels": {
|
|
"type": "object",
|
|
"description": "Additional labels for PrometheusRule"
|
|
},
|
|
"annotations": {
|
|
"type": "object",
|
|
"description": "Additional annotations for PrometheusRule"
|
|
},
|
|
"failureRate": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable high Explore failure-rate alert"
|
|
},
|
|
"window": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "PromQL range window for failure-rate calculations"
|
|
},
|
|
"threshold": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1,
|
|
"description": "Failure rate threshold (0-1)"
|
|
},
|
|
"minRuns": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Minimum Explore runs in the window before alerting"
|
|
},
|
|
"for": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "Required alert duration before firing"
|
|
},
|
|
"severity": {
|
|
"type": "string",
|
|
"description": "Severity label for the alert"
|
|
}
|
|
}
|
|
},
|
|
"p95Duration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable high Explore p95 latency alert"
|
|
},
|
|
"window": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "PromQL range window for latency calculations"
|
|
},
|
|
"thresholdSeconds": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"description": "p95 latency threshold in seconds"
|
|
},
|
|
"for": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "Required alert duration before firing"
|
|
},
|
|
"severity": {
|
|
"type": "string",
|
|
"description": "Severity label for the alert"
|
|
}
|
|
}
|
|
},
|
|
"skippedNoModel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean",
|
|
"description": "Enable alert when Explore skips due to missing explicit model"
|
|
},
|
|
"window": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "PromQL range window for skipped-no-model counts"
|
|
},
|
|
"threshold": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"description": "Skipped-no-model threshold over the window"
|
|
},
|
|
"for": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]+[smhd]$",
|
|
"description": "Required alert duration before firing"
|
|
},
|
|
"severity": {
|
|
"type": "string",
|
|
"description": "Severity label for the alert"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|