mirror of
https://github.com/morten-olsen/homelab-operator.git
synced 2026-02-08 01:36:28 +01:00
372 lines
12 KiB
JSON
372 lines
12 KiB
JSON
{
|
|
"properties": {
|
|
"spec": {
|
|
"description": "Describes a collection of workload instances. See more details at: https://istio.io/docs/reference/config/networking/workload-group.html",
|
|
"properties": {
|
|
"metadata": {
|
|
"description": "Metadata that will be used for all corresponding `WorkloadEntries`.",
|
|
"properties": {
|
|
"annotations": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"maxProperties": 256,
|
|
"type": "object"
|
|
},
|
|
"labels": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"maxProperties": 256,
|
|
"type": "object"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"probe": {
|
|
"description": "`ReadinessProbe` describes the configuration the user must provide for healthchecking on their workload.",
|
|
"oneOf": [
|
|
{
|
|
"not": {
|
|
"anyOf": [
|
|
{
|
|
"required": [
|
|
"httpGet"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"tcpSocket"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"exec"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"required": [
|
|
"httpGet"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"tcpSocket"
|
|
]
|
|
},
|
|
{
|
|
"required": [
|
|
"exec"
|
|
]
|
|
}
|
|
],
|
|
"properties": {
|
|
"exec": {
|
|
"description": "Health is determined by how the command that is executed exited.",
|
|
"properties": {
|
|
"command": {
|
|
"description": "Command to run.",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [
|
|
"command"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"failureThreshold": {
|
|
"description": "Minimum consecutive failures for the probe to be considered failed after having succeeded.",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"httpGet": {
|
|
"description": "`httpGet` is performed to a given endpoint and the status/able to connect determines health.",
|
|
"properties": {
|
|
"host": {
|
|
"description": "Host name to connect to, defaults to the pod IP.",
|
|
"type": "string"
|
|
},
|
|
"httpHeaders": {
|
|
"description": "Headers the proxy will pass on to make the request.",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"pattern": "^[-_A-Za-z0-9]+$"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"type": "array"
|
|
},
|
|
"path": {
|
|
"description": "Path to access on the HTTP server.",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"description": "Port on which the endpoint lives.",
|
|
"maximum": 4294967295,
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "port must be between 1-65535",
|
|
"rule": "0 < self && self <= 65535"
|
|
}
|
|
]
|
|
},
|
|
"scheme": {
|
|
"type": "string",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "scheme must be one of [HTTP, HTTPS]",
|
|
"rule": "self in ['', 'HTTP', 'HTTPS']"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"port"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"initialDelaySeconds": {
|
|
"description": "Number of seconds after the container has started before readiness probes are initiated.",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"periodSeconds": {
|
|
"description": "How often (in seconds) to perform the probe.",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"successThreshold": {
|
|
"description": "Minimum consecutive successes for the probe to be considered successful after having failed.",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
},
|
|
"tcpSocket": {
|
|
"description": "Health is determined by if the proxy is able to connect.",
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"maximum": 4294967295,
|
|
"minimum": 0,
|
|
"type": "integer",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "port must be between 1-65535",
|
|
"rule": "0 < self && self <= 65535"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"port"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"timeoutSeconds": {
|
|
"description": "Number of seconds after which the probe times out.",
|
|
"format": "int32",
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"type": "object"
|
|
},
|
|
"template": {
|
|
"description": "Template to be used for the generation of `WorkloadEntry` resources that belong to this `WorkloadGroup`.",
|
|
"properties": {
|
|
"address": {
|
|
"description": "Address associated with the network endpoint without the port.",
|
|
"maxLength": 256,
|
|
"type": "string",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "UDS must be an absolute path or abstract socket",
|
|
"rule": "self.startsWith('unix://') ? (self.substring(7,8) == '/' || self.substring(7,8) == '@') : true"
|
|
},
|
|
{
|
|
"message": "UDS may not be a dir",
|
|
"rule": "self.startsWith('unix://') ? !self.endsWith('/') : true"
|
|
}
|
|
]
|
|
},
|
|
"labels": {
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "One or more labels associated with the endpoint.",
|
|
"maxProperties": 256,
|
|
"type": "object"
|
|
},
|
|
"locality": {
|
|
"description": "The locality associated with the endpoint.",
|
|
"maxLength": 2048,
|
|
"type": "string"
|
|
},
|
|
"network": {
|
|
"description": "Network enables Istio to group endpoints resident in the same L3 domain/network.",
|
|
"maxLength": 2048,
|
|
"type": "string"
|
|
},
|
|
"ports": {
|
|
"additionalProperties": {
|
|
"type": "integer",
|
|
"maximum": 4294967295,
|
|
"minimum": 0,
|
|
"x-kubernetes-validations": [
|
|
{
|
|
"rule": "0 < self && self <= 65535",
|
|
"message": "port must be between 1-65535"
|
|
}
|
|
]
|
|
},
|
|
"description": "Set of ports associated with the endpoint.",
|
|
"maxProperties": 128,
|
|
"type": "object",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "port name must be valid",
|
|
"rule": "self.all(key, size(key) < 63 && key.matches('^[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?$'))"
|
|
}
|
|
]
|
|
},
|
|
"serviceAccount": {
|
|
"description": "The service account associated with the workload if a sidecar is present in the workload.",
|
|
"maxLength": 253,
|
|
"type": "string"
|
|
},
|
|
"weight": {
|
|
"description": "The load balancing weight associated with the endpoint.",
|
|
"maximum": 4294967295,
|
|
"minimum": 0,
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"x_kubernetes_validations": [
|
|
{
|
|
"message": "UDS may not include ports",
|
|
"rule": "(has(self.address) && self.address.startsWith('unix://')) ? !has(self.ports) : true"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"template"
|
|
],
|
|
"type": "object"
|
|
},
|
|
"status": {
|
|
"properties": {
|
|
"conditions": {
|
|
"description": "Current service state of the resource.",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"lastProbeTime": {
|
|
"description": "Last time we probed the condition.",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"lastTransitionTime": {
|
|
"description": "Last time the condition transitioned from one status to another.",
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"message": {
|
|
"description": "Human-readable message indicating details about last transition.",
|
|
"type": "string"
|
|
},
|
|
"reason": {
|
|
"description": "Unique, one-word, CamelCase reason for the condition's last transition.",
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"description": "Status is the status of the condition.",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"description": "Type is the type of the condition.",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"type": "array"
|
|
},
|
|
"observedGeneration": {
|
|
"anyOf": [
|
|
{
|
|
"type": "integer"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
],
|
|
"description": "Resource Generation to which the Reconciled Condition refers.",
|
|
"x_kubernetes_int_or_string": true
|
|
},
|
|
"validationMessages": {
|
|
"description": "Includes any errors or warnings detected by Istio's analyzers.",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"documentationUrl": {
|
|
"description": "A url pointing to the Istio documentation for this specific error type.",
|
|
"type": "string"
|
|
},
|
|
"level": {
|
|
"description": "Represents how severe a message is.\n\nValid Options: UNKNOWN, ERROR, WARNING, INFO",
|
|
"type": "string",
|
|
"enum": [
|
|
"UNKNOWN",
|
|
"ERROR",
|
|
"WARNING",
|
|
"INFO"
|
|
]
|
|
},
|
|
"type": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"description": "A 7 character code matching `^IST[0-9]{4}$` intended to uniquely identify the message type.",
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"description": "A human-readable name for the message type.",
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"type": "array"
|
|
}
|
|
},
|
|
"type": "object",
|
|
"x_kubernetes_preserve_unknown_fields": true
|
|
}
|
|
},
|
|
"required": [
|
|
"spec"
|
|
],
|
|
"type": "object"
|
|
} |