{ "$schema": "https://json-schema.org/draft-07/schema#", "type": "object", "properties": { "cluster": { "type": "object", "required": ["shards", "replicasPerShard", "busPort"], "properties": { "shards": { "type": "integer", "minimum": 3, "maximum": 99 }, "replicasPerShard": { "type": "integer", "minimum": 1, "maximum": 9 }, "busPort": { "type": "integer", "minimum": 1, "maximum": 65535 }, "nodeTimeoutMilliseconds": { "type": "integer", "minimum": 1000 }, "requireFullCoverage": { "type": "boolean" }, "allowReadsWhenDown": { "type": "boolean" }, "migrationBarrier": { "type": "integer", "minimum": 0 } } }, "auth": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "password": { "type": "string" }, "existingSecret": { "type": "string" }, "existingSecretKey": { "type": "string" } } }, "redis": { "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "maxmemory": { "type": "string" }, "maxmemoryPolicy": { "enum": [ "noeviction", "allkeys-lru", "volatile-lru", "allkeys-lfu", "volatile-lfu", "allkeys-random", "volatile-random", "volatile-ttl" ] }, "extraConfig": { "type": "string" } } }, "probes": { "type": "object", "properties": { "redis": { "type": "object", "properties": { "startup": { "$ref": "#/definitions/probe" }, "liveness": { "$ref": "#/definitions/probe" }, "readiness": { "$ref": "#/definitions/probe" } } } } }, "externalAccess": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "bootstrap": { "type": "object", "properties": { "annotations": { "type": "object" } } }, "memberServices": { "type": "object", "properties": { "annotations": { "type": "object" } } }, "loadBalancerClass": { "type": "string" }, "externalTrafficPolicy": { "enum": ["Cluster", "Local"] }, "loadBalancerSourceRanges": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "allocateLoadBalancerNodePorts": { "type": "boolean" }, "endpointDiscovery": { "type": "object", "properties": { "image": { "type": "object", "properties": { "repository": { "type": "string", "minLength": 1 }, "tag": { "type": "string", "minLength": 1 }, "pullPolicy": { "enum": ["Always", "IfNotPresent", "Never"] } } }, "resources": { "type": "object" } } } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 } } }, "redisInsight": { "type": "object", "required": ["enabled", "image", "port", "connection", "persistence", "ingress"], "properties": { "enabled": { "type": "boolean" }, "image": { "type": "object", "required": ["repository", "tag", "pullPolicy"], "properties": { "repository": { "type": "string", "minLength": 1 }, "tag": { "type": "string", "minLength": 1 }, "pullPolicy": { "enum": ["Always", "IfNotPresent", "Never"] } } }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "connection": { "type": "object", "required": ["host", "port", "alias", "tls"], "properties": { "host": { "type": "string" }, "port": { "type": "integer", "minimum": 0, "maximum": 65535 }, "alias": { "type": "string", "minLength": 1 }, "tls": { "type": "boolean" } } }, "persistence": { "type": "object", "required": ["enabled", "size"], "properties": { "enabled": { "type": "boolean" }, "storageClass": { "type": "string" }, "accessModes": { "type": "array", "minItems": 1, "items": { "enum": ["ReadWriteOnce", "ReadOnlyMany", "ReadWriteMany", "ReadWriteOncePod"] } }, "size": { "type": "string", "minLength": 1, "pattern": "^([0-9]+([.][0-9]+)?|[.][0-9]+)([eE][+-]?[0-9]+|[num]|[kKMGTP]i?|Ei?)?$" }, "annotations": { "type": "object" } } }, "resources": { "type": "object" }, "podAnnotations": { "type": "object" }, "nodeSelector": { "type": "object" }, "tolerations": { "type": "array" }, "ingress": { "type": "object", "required": ["enabled", "host", "gatewaySelector", "requestTimeout", "tls"], "properties": { "enabled": { "type": "boolean" }, "host": { "type": "string" }, "gatewaySelector": { "type": "object", "minProperties": 1 }, "requestTimeout": { "type": "string", "minLength": 1 }, "tls": { "type": "object", "required": ["enabled", "credentialName", "certificate"], "properties": { "enabled": { "type": "boolean" }, "credentialName": { "type": "string" }, "certificate": { "type": "object", "required": ["create", "issuerName", "issuerKind", "secretNamespace"], "properties": { "create": { "type": "boolean" }, "issuerName": { "type": "string" }, "issuerKind": { "enum": ["Issuer", "ClusterIssuer"] }, "secretNamespace": { "type": "string" } } } } } } } } }, "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "storageClass": { "type": "string" }, "size": { "type": "string", "minLength": 1, "pattern": "^([0-9]+([.][0-9]+)?|[.][0-9]+)([eE][+-]?[0-9]+|[num]|[kKMGTP]i?|Ei?)?$" } } }, "networkPolicy": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "allowExternal": { "type": "boolean" }, "extraIngress": { "type": "array" }, "metricsFromNamespaces": { "type": "array", "items": { "type": "string" } } } }, "podDisruptionBudget": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "maxUnavailable": { "type": "integer", "minimum": 0 } } }, "istio": { "type": "object", "properties": { "injectSidecar": { "type": "boolean" } } }, "terminationGracePeriodSeconds": { "type": "integer", "minimum": 0 } }, "definitions": { "probe": { "type": "object", "required": ["periodSeconds", "timeoutSeconds", "failureThreshold"], "properties": { "initialDelaySeconds": { "type": "integer", "minimum": 0 }, "periodSeconds": { "type": "integer", "minimum": 1 }, "timeoutSeconds": { "type": "integer", "minimum": 1 }, "failureThreshold": { "type": "integer", "minimum": 1 } } } } }