update crd

This commit is contained in:
2026-06-04 23:22:18 +01:00
parent 95675c2c1f
commit 8e57124a0c
26 changed files with 1524 additions and 86 deletions
+31
View File
@@ -1630,6 +1630,37 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"mattermost": {
"description": "mattermost defines the default Mattermost Config",
"properties": {
"webhookURL": {
"description": "webhookURL defines the default Mattermost Webhook URL.\n\nIt requires Alertmanager >= v0.32.0.",
"properties": {
"key": {
"description": "The key of the secret to select from. Must be a valid secret key.",
"type": "string"
},
"name": {
"default": "",
"description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
"type": "string"
},
"optional": {
"description": "Specify whether the Secret or its key must be defined",
"type": "boolean"
}
},
"required": [
"key"
],
"type": "object",
"x-kubernetes-map-type": "atomic",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"opsGenieApiKey": { "opsGenieApiKey": {
"description": "opsGenieApiKey defines the default OpsGenie API Key.", "description": "opsGenieApiKey defines the default OpsGenie API Key.",
"properties": { "properties": {
@@ -1084,6 +1084,24 @@
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
"threading": {
"description": "threading defines the threading configuration for email receiver.\nIt requires Alertmanager >= v0.30.0.",
"properties": {
"threadByDate": {
"description": "threadByDate defines what granularity of current date to thread by. Accepted values: Daily, None.\n(None means group by alert group key, no date).",
"enum": [
"Daily",
"None"
],
"type": "string"
}
},
"required": [
"threadByDate"
],
"type": "object",
"additionalProperties": false
},
"tlsConfig": { "tlsConfig": {
"description": "tlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.", "description": "tlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.",
"properties": { "properties": {
@@ -7690,6 +7708,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -7732,6 +7755,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"subject": { "subject": {
+31 -31
View File
@@ -411,11 +411,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -866,11 +866,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -1461,11 +1461,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -1913,11 +1913,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -2405,11 +2405,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3061,11 +3061,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3516,11 +3516,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3718,7 +3718,7 @@
"type": "array" "type": "array"
}, },
"observedAt": { "observedAt": {
"description": "ObservedAt indicates when the application state was updated without querying latest git state\nDeprecated: controller no longer updates ObservedAt field", "description": "ObservedAt indicates when the application state was updated without querying latest git state\n\nDeprecated: controller no longer updates ObservedAt field",
"format": "date-time", "format": "date-time",
"type": "string" "type": "string"
}, },
@@ -4133,11 +4133,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -4588,11 +4588,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -5199,11 +5199,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -5654,11 +5654,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -6237,11 +6237,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -6750,11 +6750,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -7351,11 +7351,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -7806,11 +7806,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
+16
View File
@@ -36891,6 +36891,22 @@
}, },
"type": "array" "type": "array"
}, },
"health": {
"properties": {
"lastTransitionTime": {
"format": "date-time",
"type": "string"
},
"message": {
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"resources": { "resources": {
"items": { "items": {
"properties": { "properties": {
+232
View File
@@ -0,0 +1,232 @@
{
"description": "EngineFrontend is where Longhorn stores engine frontend object for v2 data engine initiator.",
"properties": {
"apiVersion": {
"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
"type": "string"
},
"kind": {
"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
"type": "string"
},
"metadata": {
"type": "object"
},
"spec": {
"description": "EngineFrontendSpec defines the desired state of the Longhorn engine frontend (v2 initiator)",
"properties": {
"active": {
"type": "boolean"
},
"dataEngine": {
"enum": [
"v1",
"v2"
],
"type": "string"
},
"desireState": {
"type": "string"
},
"disableFrontend": {
"type": "boolean"
},
"engineName": {
"description": "EngineName is the name of the v2 engine target (required for EngineFrontend instance creation)",
"type": "string"
},
"frontend": {
"enum": [
"blockdev",
"iscsi",
"nvmf",
"ublk",
""
],
"type": "string"
},
"image": {
"type": "string"
},
"logRequested": {
"type": "boolean"
},
"nodeID": {
"type": "string"
},
"salvageRequested": {
"type": "boolean"
},
"size": {
"description": "Size is the desired size of the frontend device in bytes, as requested\nby the volume owner. The EngineFrontend controller drives the frontend\ndevice toward this size independently of the engine's target size.",
"format": "int64",
"type": "string"
},
"targetIP": {
"description": "TargetIP is the IP address of the v2 engine target",
"type": "string"
},
"targetPort": {
"description": "TargetPort is the port of the v2 engine target",
"type": "integer"
},
"ublkNumberOfQueue": {
"description": "ublkNumberOfQueue controls the number of queues for ublk frontend.",
"type": "integer"
},
"ublkQueueDepth": {
"description": "ublkQueueDepth controls the depth of each queue for ublk frontend.",
"type": "integer"
},
"volumeName": {
"type": "string"
},
"volumeSize": {
"format": "int64",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "EngineFrontendStatus defines the observed state of the Longhorn engine frontend",
"properties": {
"activePath": {
"description": "ActivePath is the currently active frontend path address.",
"type": "string"
},
"conditions": {
"items": {
"properties": {
"lastProbeTime": {
"description": "Last time we probed the condition.",
"type": "string"
},
"lastTransitionTime": {
"description": "Last time the condition transitioned from one status to another.",
"type": "string"
},
"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.\nCan be True, False, Unknown.",
"type": "string"
},
"type": {
"description": "Type is the type of the condition.",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"nullable": true,
"type": "array"
},
"currentImage": {
"type": "string"
},
"currentSize": {
"description": "CurrentSize is the current size of the frontend device in bytes, as\nobserved from the data plane. It is 0 while the engine frontend is not\nrunning.",
"format": "int64",
"type": "string"
},
"currentState": {
"type": "string"
},
"endpoint": {
"description": "Endpoint is the initiator endpoint (e.g., /dev/longhorn/vol-name)",
"type": "string"
},
"instanceManagerName": {
"type": "string"
},
"ip": {
"type": "string"
},
"logFetched": {
"type": "boolean"
},
"ownerID": {
"type": "string"
},
"paths": {
"description": "Paths describes the currently known frontend multipath state.",
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"port": {
"type": "integer"
},
"preferredPath": {
"description": "PreferredPath is the preferred frontend path address.",
"type": "string"
},
"salvageExecuted": {
"type": "boolean"
},
"started": {
"type": "boolean"
},
"starting": {
"type": "boolean"
},
"storageIP": {
"type": "string"
},
"switchoverPhase": {
"description": "SwitchoverPhase is the last completed switchover phase reported by the data plane.",
"type": "string"
},
"targetIP": {
"description": "TargetIP is the currently connected IP address of the v2 engine target",
"type": "string"
},
"targetPort": {
"description": "TargetPort is the currently connected port of the v2 engine target",
"type": "integer"
},
"ublkID": {
"format": "int32",
"type": "integer"
},
"uuid": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object"
}
+185
View File
@@ -156,6 +156,119 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"instanceEngineFrontends": {
"additionalProperties": {
"properties": {
"spec": {
"properties": {
"dataEngine": {
"type": "string"
},
"name": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"properties": {
"activePath": {
"type": "string"
},
"conditions": {
"additionalProperties": {
"type": "boolean"
},
"nullable": true,
"type": "object"
},
"endpoint": {
"type": "string"
},
"errorMsg": {
"type": "string"
},
"frontend": {
"type": "string"
},
"listen": {
"type": "string"
},
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": {
"format": "int32",
"type": "integer"
},
"portStart": {
"format": "int32",
"type": "integer"
},
"preferredPath": {
"type": "string"
},
"resourceVersion": {
"format": "int64",
"type": "integer"
},
"state": {
"type": "string"
},
"targetPortEnd": {
"format": "int32",
"type": "integer"
},
"targetPortStart": {
"format": "int32",
"type": "integer"
},
"type": {
"type": "string"
},
"ublkID": {
"format": "int32",
"type": "integer"
},
"uuid": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"nullable": true,
"type": "object"
},
"instanceEngines": { "instanceEngines": {
"additionalProperties": { "additionalProperties": {
"properties": { "properties": {
@@ -173,6 +286,9 @@
}, },
"status": { "status": {
"properties": { "properties": {
"activePath": {
"type": "string"
},
"conditions": { "conditions": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -186,9 +302,39 @@
"errorMsg": { "errorMsg": {
"type": "string" "type": "string"
}, },
"frontend": {
"type": "string"
},
"listen": { "listen": {
"type": "string" "type": "string"
}, },
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": { "portEnd": {
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
@@ -197,6 +343,9 @@
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
}, },
"preferredPath": {
"type": "string"
},
"resourceVersion": { "resourceVersion": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
@@ -250,6 +399,9 @@
}, },
"status": { "status": {
"properties": { "properties": {
"activePath": {
"type": "string"
},
"conditions": { "conditions": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -263,9 +415,39 @@
"errorMsg": { "errorMsg": {
"type": "string" "type": "string"
}, },
"frontend": {
"type": "string"
},
"listen": { "listen": {
"type": "string" "type": "string"
}, },
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": { "portEnd": {
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
@@ -274,6 +456,9 @@
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
}, },
"preferredPath": {
"type": "string"
},
"resourceVersion": { "resourceVersion": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
@@ -1630,6 +1630,37 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"mattermost": {
"description": "mattermost defines the default Mattermost Config",
"properties": {
"webhookURL": {
"description": "webhookURL defines the default Mattermost Webhook URL.\n\nIt requires Alertmanager >= v0.32.0.",
"properties": {
"key": {
"description": "The key of the secret to select from. Must be a valid secret key.",
"type": "string"
},
"name": {
"default": "",
"description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
"type": "string"
},
"optional": {
"description": "Specify whether the Secret or its key must be defined",
"type": "boolean"
}
},
"required": [
"key"
],
"type": "object",
"x-kubernetes-map-type": "atomic",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"opsGenieApiKey": { "opsGenieApiKey": {
"description": "opsGenieApiKey defines the default OpsGenie API Key.", "description": "opsGenieApiKey defines the default OpsGenie API Key.",
"properties": { "properties": {
@@ -1084,6 +1084,24 @@
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
"threading": {
"description": "threading defines the threading configuration for email receiver.\nIt requires Alertmanager >= v0.30.0.",
"properties": {
"threadByDate": {
"description": "threadByDate defines what granularity of current date to thread by. Accepted values: Daily, None.\n(None means group by alert group key, no date).",
"enum": [
"Daily",
"None"
],
"type": "string"
}
},
"required": [
"threadByDate"
],
"type": "object",
"additionalProperties": false
},
"tlsConfig": { "tlsConfig": {
"description": "tlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.", "description": "tlsConfig defines the TLS configuration for SMTP connections.\nThis includes settings for certificates, CA validation, and TLS protocol options.",
"properties": { "properties": {
@@ -7690,6 +7708,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -7732,6 +7755,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"subject": { "subject": {
@@ -411,11 +411,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -866,11 +866,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -1461,11 +1461,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -1913,11 +1913,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -2405,11 +2405,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3061,11 +3061,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3516,11 +3516,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -3718,7 +3718,7 @@
"type": "array" "type": "array"
}, },
"observedAt": { "observedAt": {
"description": "ObservedAt indicates when the application state was updated without querying latest git state\nDeprecated: controller no longer updates ObservedAt field", "description": "ObservedAt indicates when the application state was updated without querying latest git state\n\nDeprecated: controller no longer updates ObservedAt field",
"format": "date-time", "format": "date-time",
"type": "string" "type": "string"
}, },
@@ -4133,11 +4133,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -4588,11 +4588,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -5199,11 +5199,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -5654,11 +5654,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -6237,11 +6237,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -6750,11 +6750,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -7351,11 +7351,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -7806,11 +7806,11 @@
"type": "boolean" "type": "boolean"
}, },
"namePrefix": { "namePrefix": {
"description": "NamePrefix is a prefix appended to resources for Kustomize apps", "description": "NamePrefix overrides the namePrefix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"nameSuffix": { "nameSuffix": {
"description": "NameSuffix is a suffix appended to resources for Kustomize apps", "description": "NameSuffix overrides the nameSuffix in the kustomization.yaml for Kustomize apps",
"type": "string" "type": "string"
}, },
"namespace": { "namespace": {
@@ -36891,6 +36891,22 @@
}, },
"type": "array" "type": "array"
}, },
"health": {
"properties": {
"lastTransitionTime": {
"format": "date-time",
"type": "string"
},
"message": {
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"resources": { "resources": {
"items": { "items": {
"properties": { "properties": {
@@ -0,0 +1,232 @@
{
"description": "EngineFrontend is where Longhorn stores engine frontend object for v2 data engine initiator.",
"properties": {
"apiVersion": {
"description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
"type": "string"
},
"kind": {
"description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
"type": "string"
},
"metadata": {
"type": "object"
},
"spec": {
"description": "EngineFrontendSpec defines the desired state of the Longhorn engine frontend (v2 initiator)",
"properties": {
"active": {
"type": "boolean"
},
"dataEngine": {
"enum": [
"v1",
"v2"
],
"type": "string"
},
"desireState": {
"type": "string"
},
"disableFrontend": {
"type": "boolean"
},
"engineName": {
"description": "EngineName is the name of the v2 engine target (required for EngineFrontend instance creation)",
"type": "string"
},
"frontend": {
"enum": [
"blockdev",
"iscsi",
"nvmf",
"ublk",
""
],
"type": "string"
},
"image": {
"type": "string"
},
"logRequested": {
"type": "boolean"
},
"nodeID": {
"type": "string"
},
"salvageRequested": {
"type": "boolean"
},
"size": {
"description": "Size is the desired size of the frontend device in bytes, as requested\nby the volume owner. The EngineFrontend controller drives the frontend\ndevice toward this size independently of the engine's target size.",
"format": "int64",
"type": "string"
},
"targetIP": {
"description": "TargetIP is the IP address of the v2 engine target",
"type": "string"
},
"targetPort": {
"description": "TargetPort is the port of the v2 engine target",
"type": "integer"
},
"ublkNumberOfQueue": {
"description": "ublkNumberOfQueue controls the number of queues for ublk frontend.",
"type": "integer"
},
"ublkQueueDepth": {
"description": "ublkQueueDepth controls the depth of each queue for ublk frontend.",
"type": "integer"
},
"volumeName": {
"type": "string"
},
"volumeSize": {
"format": "int64",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"description": "EngineFrontendStatus defines the observed state of the Longhorn engine frontend",
"properties": {
"activePath": {
"description": "ActivePath is the currently active frontend path address.",
"type": "string"
},
"conditions": {
"items": {
"properties": {
"lastProbeTime": {
"description": "Last time we probed the condition.",
"type": "string"
},
"lastTransitionTime": {
"description": "Last time the condition transitioned from one status to another.",
"type": "string"
},
"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.\nCan be True, False, Unknown.",
"type": "string"
},
"type": {
"description": "Type is the type of the condition.",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"nullable": true,
"type": "array"
},
"currentImage": {
"type": "string"
},
"currentSize": {
"description": "CurrentSize is the current size of the frontend device in bytes, as\nobserved from the data plane. It is 0 while the engine frontend is not\nrunning.",
"format": "int64",
"type": "string"
},
"currentState": {
"type": "string"
},
"endpoint": {
"description": "Endpoint is the initiator endpoint (e.g., /dev/longhorn/vol-name)",
"type": "string"
},
"instanceManagerName": {
"type": "string"
},
"ip": {
"type": "string"
},
"logFetched": {
"type": "boolean"
},
"ownerID": {
"type": "string"
},
"paths": {
"description": "Paths describes the currently known frontend multipath state.",
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"port": {
"type": "integer"
},
"preferredPath": {
"description": "PreferredPath is the preferred frontend path address.",
"type": "string"
},
"salvageExecuted": {
"type": "boolean"
},
"started": {
"type": "boolean"
},
"starting": {
"type": "boolean"
},
"storageIP": {
"type": "string"
},
"switchoverPhase": {
"description": "SwitchoverPhase is the last completed switchover phase reported by the data plane.",
"type": "string"
},
"targetIP": {
"description": "TargetIP is the currently connected IP address of the v2 engine target",
"type": "string"
},
"targetPort": {
"description": "TargetPort is the currently connected port of the v2 engine target",
"type": "integer"
},
"ublkID": {
"format": "int32",
"type": "integer"
},
"uuid": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object"
}
@@ -156,6 +156,119 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"instanceEngineFrontends": {
"additionalProperties": {
"properties": {
"spec": {
"properties": {
"dataEngine": {
"type": "string"
},
"name": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"status": {
"properties": {
"activePath": {
"type": "string"
},
"conditions": {
"additionalProperties": {
"type": "boolean"
},
"nullable": true,
"type": "object"
},
"endpoint": {
"type": "string"
},
"errorMsg": {
"type": "string"
},
"frontend": {
"type": "string"
},
"listen": {
"type": "string"
},
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": {
"format": "int32",
"type": "integer"
},
"portStart": {
"format": "int32",
"type": "integer"
},
"preferredPath": {
"type": "string"
},
"resourceVersion": {
"format": "int64",
"type": "integer"
},
"state": {
"type": "string"
},
"targetPortEnd": {
"format": "int32",
"type": "integer"
},
"targetPortStart": {
"format": "int32",
"type": "integer"
},
"type": {
"type": "string"
},
"ublkID": {
"format": "int32",
"type": "integer"
},
"uuid": {
"type": "string"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"nullable": true,
"type": "object"
},
"instanceEngines": { "instanceEngines": {
"additionalProperties": { "additionalProperties": {
"properties": { "properties": {
@@ -173,6 +286,9 @@
}, },
"status": { "status": {
"properties": { "properties": {
"activePath": {
"type": "string"
},
"conditions": { "conditions": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -186,9 +302,39 @@
"errorMsg": { "errorMsg": {
"type": "string" "type": "string"
}, },
"frontend": {
"type": "string"
},
"listen": { "listen": {
"type": "string" "type": "string"
}, },
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": { "portEnd": {
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
@@ -197,6 +343,9 @@
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
}, },
"preferredPath": {
"type": "string"
},
"resourceVersion": { "resourceVersion": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
@@ -250,6 +399,9 @@
}, },
"status": { "status": {
"properties": { "properties": {
"activePath": {
"type": "string"
},
"conditions": { "conditions": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -263,9 +415,39 @@
"errorMsg": { "errorMsg": {
"type": "string" "type": "string"
}, },
"frontend": {
"type": "string"
},
"listen": { "listen": {
"type": "string" "type": "string"
}, },
"paths": {
"items": {
"properties": {
"anaState": {
"type": "string"
},
"engineName": {
"type": "string"
},
"nguid": {
"type": "string"
},
"nqn": {
"type": "string"
},
"targetIP": {
"type": "string"
},
"targetPort": {
"type": "integer"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"portEnd": { "portEnd": {
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
@@ -274,6 +456,9 @@
"format": "int32", "format": "int32",
"type": "integer" "type": "integer"
}, },
"preferredPath": {
"type": "string"
},
"resourceVersion": { "resourceVersion": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
@@ -1262,6 +1262,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -1304,6 +1309,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"timeout": { "timeout": {
@@ -6855,6 +6866,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -6897,6 +6913,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
@@ -7823,7 +7845,7 @@
"type": "boolean" "type": "boolean"
}, },
"scrapeConfigNamespaceSelector": { "scrapeConfigNamespaceSelector": {
"description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -7870,7 +7892,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scrapeConfigSelector": { "scrapeConfigSelector": {
"description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -8232,10 +8254,10 @@
"description": "shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Alpha) Using this field requires the 'PrometheusShardRetentionPolicy' feature gate to be enabled.\n\nThe final goals for this feature can be seen at https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md#graceful-scale-down-of-prometheus-servers,\nhowever, the feature is not yet fully implemented in this PR. The limitation being:\n* Retention duration is not settable, for now, shards are retained forever.", "description": "shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Alpha) Using this field requires the 'PrometheusShardRetentionPolicy' feature gate to be enabled.\n\nThe final goals for this feature can be seen at https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md#graceful-scale-down-of-prometheus-servers,\nhowever, the feature is not yet fully implemented in this PR. The limitation being:\n* Retention duration is not settable, for now, shards are retained forever.",
"properties": { "properties": {
"retain": { "retain": {
"description": "retain defines the config for retention when the retention policy is set to `Retain`.\nThis field is ineffective as of now.", "description": "retain defines the config for retention when the retention policy is set\nto `Retain`.\n\nIf not defined, the operator will use the retention duration configured\nfor the Prometheus data. If the resource uses size-based retention, the\nshard(s) are kept forever (unless manually deleted).",
"properties": { "properties": {
"retentionPeriod": { "retentionPeriod": {
"description": "retentionPeriod defines the retentionPeriod for shard retention policy.", "description": "retentionPeriod defines how long the scaled-down shard(s) need to be\nkept before being deleted.",
"pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
"type": "string" "type": "string"
} }
@@ -8258,6 +8280,46 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"shardingStrategy": {
"description": "shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\n\nWhen not defined, the operator defaults to the 'Address' mode which distributes\ntargets based on a hash of the target address.",
"properties": {
"mode": {
"description": "mode defines the sharding mode. Can be 'Address' or 'Topology'.\n\n'Address' is the default mode and distributes targets across shards\nbased on a hash of the target address.\n\n'Topology' enables zone-aware sharding where each shard is assigned to a\nspecific topology zone and only scrapes targets in that zone.\n(Alpha) Using the 'Topology' mode requires the `PrometheusTopologySharding`\nfeature gate to be enabled.",
"enum": [
"Address",
"Topology"
],
"type": "string"
},
"topology": {
"description": "topology defines the configuration for topology-aware sharding.\nThis field is only valid when mode is set to 'Topology'.",
"properties": {
"externalLabelName": {
"description": "externalLabelName defines the name of the Prometheus external label used\nto communicate the topology zone assigned to the Prometheus instance.\nIf not defined, it defaults to \"zone\".\nIf set to the empty string, no external label is added to the Prometheus configuration.",
"type": "string"
},
"values": {
"description": "values defines the list of topology values (e.g. zone names) to be used\nfor sharding. The configured number of shards must be greater than or\nequal to the number of values.",
"items": {
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "atomic"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"x-kubernetes-validations": [
{
"message": "topology can only be defined when mode is set to 'Topology'",
"rule": "!has(self.topology) || (has(self.mode) && self.mode == 'Topology')"
}
],
"additionalProperties": false
},
"shards": { "shards": {
"description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.", "description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.",
"format": "int32", "format": "int32",
@@ -8888,7 +8950,7 @@
"type": "boolean" "type": "boolean"
}, },
"grpcServerTlsConfig": { "grpcServerTlsConfig": {
"description": "grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.", "description": "grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, `keyFile`, `cipherSuites` and `curves` fields are supported.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -9008,6 +9070,24 @@
"description": "certFile defines the path to the client cert file in the Prometheus container for the targets.", "description": "certFile defines the path to the client cert file in the Prometheus container for the targets.",
"type": "string" "type": "string"
}, },
"cipherSuites": {
"description": "cipherSuites defines the list of supported cipher suites for TLS\nversions up to TLS 1.2.\n\nIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"curves": {
"description": "curves defines the list of preferred elliptic curves for\nTLS handshakes.\n\nIf not defined, the Go default curves are used.\nAvailable curves are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#CurveID\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"insecureSkipVerify": { "insecureSkipVerify": {
"description": "insecureSkipVerify defines how to disable target certificate validation.", "description": "insecureSkipVerify defines how to disable target certificate validation.",
"type": "boolean" "type": "boolean"
@@ -11558,6 +11638,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "shards must be greater than or equal to the number of topology values when sharding strategy mode is Topology",
"rule": "!has(self.shardingStrategy) || !has(self.shardingStrategy.mode) || self.shardingStrategy.mode != 'Topology' || !has(self.shardingStrategy.topology) || !has(self.shardingStrategy.topology.values) || self.shardingStrategy.topology.values.size() == 0 || (has(self.shards) ? self.shards : 1) >= self.shardingStrategy.topology.values.size()"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"status": { "status": {
@@ -5412,6 +5412,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -5454,6 +5459,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
@@ -6245,7 +6256,7 @@
"type": "boolean" "type": "boolean"
}, },
"scrapeConfigNamespaceSelector": { "scrapeConfigNamespaceSelector": {
"description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -6292,7 +6303,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scrapeConfigSelector": { "scrapeConfigSelector": {
"description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -6646,6 +6657,46 @@
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
"shardingStrategy": {
"description": "shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\n\nWhen not defined, the operator defaults to the 'Address' mode which distributes\ntargets based on a hash of the target address.",
"properties": {
"mode": {
"description": "mode defines the sharding mode. Can be 'Address' or 'Topology'.\n\n'Address' is the default mode and distributes targets across shards\nbased on a hash of the target address.\n\n'Topology' enables zone-aware sharding where each shard is assigned to a\nspecific topology zone and only scrapes targets in that zone.\n(Alpha) Using the 'Topology' mode requires the `PrometheusTopologySharding`\nfeature gate to be enabled.",
"enum": [
"Address",
"Topology"
],
"type": "string"
},
"topology": {
"description": "topology defines the configuration for topology-aware sharding.\nThis field is only valid when mode is set to 'Topology'.",
"properties": {
"externalLabelName": {
"description": "externalLabelName defines the name of the Prometheus external label used\nto communicate the topology zone assigned to the Prometheus instance.\nIf not defined, it defaults to \"zone\".\nIf set to the empty string, no external label is added to the Prometheus configuration.",
"type": "string"
},
"values": {
"description": "values defines the list of topology values (e.g. zone names) to be used\nfor sharding. The configured number of shards must be greater than or\nequal to the number of values.",
"items": {
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "atomic"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"x-kubernetes-validations": [
{
"message": "topology can only be defined when mode is set to 'Topology'",
"rule": "!has(self.topology) || (has(self.mode) && self.mode == 'Topology')"
}
],
"additionalProperties": false
},
"shards": { "shards": {
"description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.", "description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.",
"format": "int32", "format": "int32",
@@ -9534,6 +9585,14 @@
{ {
"message": "additionalScrapeConfigs cannot be set when mode is DaemonSet", "message": "additionalScrapeConfigs cannot be set when mode is DaemonSet",
"rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.additionalScrapeConfigs))" "rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.additionalScrapeConfigs))"
},
{
"message": "shardingStrategy cannot be set when mode is DaemonSet",
"rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.shardingStrategy))"
},
{
"message": "shards must be greater than or equal to the number of topology values when sharding strategy mode is Topology",
"rule": "!has(self.shardingStrategy) || !has(self.shardingStrategy.mode) || self.shardingStrategy.mode != 'Topology' || !has(self.shardingStrategy.topology) || !has(self.shardingStrategy.topology.values) || self.shardingStrategy.topology.values.size() == 0 || (has(self.shards) ? self.shards : 1) >= self.shardingStrategy.topology.values.size()"
} }
], ],
"additionalProperties": false "additionalProperties": false
@@ -60,7 +60,8 @@
"enum": [ "enum": [
"OAuth", "OAuth",
"ManagedIdentity", "ManagedIdentity",
"SDK" "SDK",
"WorkloadIdentity"
], ],
"type": "string" "type": "string"
}, },
@@ -593,7 +594,7 @@
"type": "string" "type": "string"
}, },
"tlsConfig": { "tlsConfig": {
"description": "tlsConfig defies the TLS configuration applying to the target HTTP endpoint.", "description": "tlsConfig defines the TLS configuration applying to the target HTTP endpoint.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -939,7 +940,7 @@
"type": "boolean" "type": "boolean"
}, },
"filter": { "filter": {
"description": "filter defines the filter expression used to filter the catalog results.\nSee https://www.consul.io/api-docs/catalog#list-services\nIt requires Prometheus >= 3.0.0.", "description": "filter defines the filter expression used to filter the catalog results.\nSee https://developer.hashicorp.com/consul/api-docs/catalog#filtering\nIt requires Prometheus >= 3.0.0.",
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
@@ -947,6 +948,11 @@
"description": "followRedirects defines whether HTTP requests follow HTTP 3xx redirects.", "description": "followRedirects defines whether HTTP requests follow HTTP 3xx redirects.",
"type": "boolean" "type": "boolean"
}, },
"healthFilter": {
"description": "healthFilter defines the filter expression used to filter the health results.\nSee https://developer.hashicorp.com/consul/api-docs/health#filtering\nIt requires Prometheus >= 3.11.2.",
"minLength": 1,
"type": "string"
},
"namespace": { "namespace": {
"description": "namespace are only supported in Consul Enterprise.\n\nIt requires Prometheus >= 2.28.0.", "description": "namespace are only supported in Consul Enterprise.\n\nIt requires Prometheus >= 2.28.0.",
"minLength": 1, "minLength": 1,
@@ -8661,6 +8667,7 @@
}, },
"roleARN": { "roleARN": {
"description": "roleARN defines the AWS Role ARN, an alternative to using AWS API keys.", "description": "roleARN defines the AWS Role ARN, an alternative to using AWS API keys.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"secretKey": { "secretKey": {
@@ -9700,6 +9707,7 @@
}, },
"namespace": { "namespace": {
"description": "namespace defines the Nomad namespace to query for service discovery.\nWhen specified, only resources within this namespace will be discovered.", "description": "namespace defines the Nomad namespace to query for service discovery.\nWhen specified, only resources within this namespace will be discovered.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"noProxy": { "noProxy": {
@@ -10078,6 +10086,7 @@
}, },
"region": { "region": {
"description": "region defines the Nomad region to query for service discovery.\nWhen specified, only resources within this region will be discovered.", "description": "region defines the Nomad region to query for service discovery.\nWhen specified, only resources within this region will be discovered.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"server": { "server": {
@@ -10087,6 +10096,7 @@
}, },
"tagSeparator": { "tagSeparator": {
"description": "tagSeparator defines the separator used to join multiple tags.\nThis determines how Nomad service tags are concatenated into Prometheus labels.", "description": "tagSeparator defines the separator used to join multiple tags.\nThis determines how Nomad service tags are concatenated into Prometheus labels.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"tlsConfig": { "tlsConfig": {
@@ -10602,6 +10612,7 @@
}, },
"applicationCredentialId": { "applicationCredentialId": {
"description": "applicationCredentialId defines the OpenStack applicationCredentialId.", "description": "applicationCredentialId defines the OpenStack applicationCredentialId.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"applicationCredentialName": { "applicationCredentialName": {
@@ -11804,7 +11815,7 @@
"scalewaySDConfigs": { "scalewaySDConfigs": {
"description": "scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.", "description": "scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.",
"items": { "items": {
"description": "ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\nSee https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config", "description": "ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\nSee https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\n\nNote: The `_file` variants of credential fields (e.g. `secret_key_file`)\nfrom the Prometheus configuration are not supported. Use Kubernetes secrets via `secretKey` instead.",
"properties": { "properties": {
"accessKey": { "accessKey": {
"description": "accessKey defines the access key to use. https://console.scaleway.com/project/credentials", "description": "accessKey defines the access key to use. https://console.scaleway.com/project/credentials",
@@ -12382,6 +12393,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "at most one of basicAuth, authorization, or oauth2 can be configured",
"rule": "[has(self.basicAuth), has(self.authorization), has(self.oauth2)].filter(x, x).size() <= 1"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"status": { "status": {
@@ -26,6 +26,10 @@
"status": { "status": {
"description": "ShareManagerStatus defines the observed state of the Longhorn share manager", "description": "ShareManagerStatus defines the observed state of the Longhorn share manager",
"properties": { "properties": {
"currentImage": {
"description": "The image currently used by the share manager pod",
"type": "string"
},
"endpoint": { "endpoint": {
"description": "NFS endpoint that can access the mounted filesystem of the volume", "description": "NFS endpoint that can access the mounted filesystem of the volume",
"type": "string" "type": "string"
@@ -44,6 +44,10 @@
"checksum": { "checksum": {
"type": "string" "type": "string"
}, },
"checksumCalculatedAt": {
"description": "ChecksumCalculatedAt is the RFC3339 timestamp indicating when the checksum\nfor this snapshot was last calculated or updated.",
"type": "string"
},
"children": { "children": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -76,6 +80,9 @@
"readyToUse": { "readyToUse": {
"type": "boolean" "type": "boolean"
}, },
"requestedTime": {
"type": "string"
},
"restoreSize": { "restoreSize": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
@@ -2424,7 +2424,7 @@
"type": "string" "type": "string"
}, },
"grpcServerTlsConfig": { "grpcServerTlsConfig": {
"description": "grpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.", "description": "grpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, `keyFile`, `cipherSuites` and `curves` fields are supported.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -2544,6 +2544,24 @@
"description": "certFile defines the path to the client cert file in the Prometheus container for the targets.", "description": "certFile defines the path to the client cert file in the Prometheus container for the targets.",
"type": "string" "type": "string"
}, },
"cipherSuites": {
"description": "cipherSuites defines the list of supported cipher suites for TLS\nversions up to TLS 1.2.\n\nIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"curves": {
"description": "curves defines the list of preferred elliptic curves for\nTLS handshakes.\n\nIf not defined, the Go default curves are used.\nAvailable curves are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#CurveID\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"insecureSkipVerify": { "insecureSkipVerify": {
"description": "insecureSkipVerify defines how to disable target certificate validation.", "description": "insecureSkipVerify defines how to disable target certificate validation.",
"type": "boolean" "type": "boolean"
@@ -4968,6 +4986,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -5010,6 +5033,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
@@ -100,6 +100,10 @@
} }
] ]
}, },
"engineNodeID": {
"description": "engineNodeID defines the node where the backend engine (target) runs.\nIf empty, falls back to NodeID.",
"type": "string"
},
"freezeFilesystemForSnapshot": { "freezeFilesystemForSnapshot": {
"description": "Setting that freezes the filesystem on the root partition before a snapshot is created.", "description": "Setting that freezes the filesystem on the root partition before a snapshot is created.",
"enum": [ "enum": [
@@ -135,6 +139,7 @@
"type": "string" "type": "string"
}, },
"nodeID": { "nodeID": {
"description": "nodeID defines the node where the volume is attached (where the frontend initiator runs).",
"type": "string" "type": "string"
}, },
"nodeSelector": { "nodeSelector": {
@@ -227,6 +232,10 @@
], ],
"type": "string" "type": "string"
}, },
"snapshotHashingRequestedAt": {
"description": "SnapshotHashingRequestedAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when an on-demand snapshot checksum calculation is requested.\nWhen this value is set and is later than LastOnDemandSnapshotHashingCompleteAt, the system will calculate checksums\nfor all user snapshots.\n\nIf SnapshotHashingRequestedAt differs from LastOnDemandSnapshotHashingCompleteAt, it indicates that a hashing request\nis still in progress, and a new request will be rejected.",
"type": "string"
},
"snapshotMaxCount": { "snapshotMaxCount": {
"type": "integer" "type": "integer"
}, },
@@ -319,6 +328,10 @@
"nullable": true, "nullable": true,
"type": "array" "type": "array"
}, },
"currentEngineNodeID": {
"description": "the node that the engine (target) is currently running on.",
"type": "string"
},
"currentImage": { "currentImage": {
"type": "string" "type": "string"
}, },
@@ -386,6 +399,9 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"lastAutoSalvagedAt": {
"type": "string"
},
"lastBackup": { "lastBackup": {
"type": "string" "type": "string"
}, },
@@ -395,6 +411,10 @@
"lastDegradedAt": { "lastDegradedAt": {
"type": "string" "type": "string"
}, },
"lastOnDemandSnapshotHashingCompleteAt": {
"description": "LastOnDemandSnapshotHashingCompleteAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when the\nmost recent on-demand snapshot checksum calculation completed.\nWhen this value matches SnapshotHashingRequestedAt, the requested on-demand checksum calculation is considered complete.",
"type": "string"
},
"ownerID": { "ownerID": {
"type": "string" "type": "string"
}, },
@@ -418,6 +438,10 @@
}, },
"state": { "state": {
"type": "string" "type": "string"
},
"switchoverState": {
"description": "SwitchoverState describes the current progress of a v2 engine live switchover.\nEmpty when no switchover is in progress.",
"type": "string"
} }
}, },
"type": "object", "type": "object",
+91 -5
View File
@@ -1262,6 +1262,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -1304,6 +1309,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"timeout": { "timeout": {
@@ -6855,6 +6866,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -6897,6 +6913,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
@@ -7823,7 +7845,7 @@
"type": "boolean" "type": "boolean"
}, },
"scrapeConfigNamespaceSelector": { "scrapeConfigNamespaceSelector": {
"description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -7870,7 +7892,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scrapeConfigSelector": { "scrapeConfigSelector": {
"description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -8232,10 +8254,10 @@
"description": "shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Alpha) Using this field requires the 'PrometheusShardRetentionPolicy' feature gate to be enabled.\n\nThe final goals for this feature can be seen at https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md#graceful-scale-down-of-prometheus-servers,\nhowever, the feature is not yet fully implemented in this PR. The limitation being:\n* Retention duration is not settable, for now, shards are retained forever.", "description": "shardRetentionPolicy defines the retention policy for the Prometheus shards.\n(Alpha) Using this field requires the 'PrometheusShardRetentionPolicy' feature gate to be enabled.\n\nThe final goals for this feature can be seen at https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/proposals/202310-shard-autoscaling.md#graceful-scale-down-of-prometheus-servers,\nhowever, the feature is not yet fully implemented in this PR. The limitation being:\n* Retention duration is not settable, for now, shards are retained forever.",
"properties": { "properties": {
"retain": { "retain": {
"description": "retain defines the config for retention when the retention policy is set to `Retain`.\nThis field is ineffective as of now.", "description": "retain defines the config for retention when the retention policy is set\nto `Retain`.\n\nIf not defined, the operator will use the retention duration configured\nfor the Prometheus data. If the resource uses size-based retention, the\nshard(s) are kept forever (unless manually deleted).",
"properties": { "properties": {
"retentionPeriod": { "retentionPeriod": {
"description": "retentionPeriod defines the retentionPeriod for shard retention policy.", "description": "retentionPeriod defines how long the scaled-down shard(s) need to be\nkept before being deleted.",
"pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$", "pattern": "^(0|(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?)$",
"type": "string" "type": "string"
} }
@@ -8258,6 +8280,46 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"shardingStrategy": {
"description": "shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\n\nWhen not defined, the operator defaults to the 'Address' mode which distributes\ntargets based on a hash of the target address.",
"properties": {
"mode": {
"description": "mode defines the sharding mode. Can be 'Address' or 'Topology'.\n\n'Address' is the default mode and distributes targets across shards\nbased on a hash of the target address.\n\n'Topology' enables zone-aware sharding where each shard is assigned to a\nspecific topology zone and only scrapes targets in that zone.\n(Alpha) Using the 'Topology' mode requires the `PrometheusTopologySharding`\nfeature gate to be enabled.",
"enum": [
"Address",
"Topology"
],
"type": "string"
},
"topology": {
"description": "topology defines the configuration for topology-aware sharding.\nThis field is only valid when mode is set to 'Topology'.",
"properties": {
"externalLabelName": {
"description": "externalLabelName defines the name of the Prometheus external label used\nto communicate the topology zone assigned to the Prometheus instance.\nIf not defined, it defaults to \"zone\".\nIf set to the empty string, no external label is added to the Prometheus configuration.",
"type": "string"
},
"values": {
"description": "values defines the list of topology values (e.g. zone names) to be used\nfor sharding. The configured number of shards must be greater than or\nequal to the number of values.",
"items": {
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "atomic"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"x-kubernetes-validations": [
{
"message": "topology can only be defined when mode is set to 'Topology'",
"rule": "!has(self.topology) || (has(self.mode) && self.mode == 'Topology')"
}
],
"additionalProperties": false
},
"shards": { "shards": {
"description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.", "description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.",
"format": "int32", "format": "int32",
@@ -8888,7 +8950,7 @@
"type": "boolean" "type": "boolean"
}, },
"grpcServerTlsConfig": { "grpcServerTlsConfig": {
"description": "grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.", "description": "grpcServerTlsConfig defines the TLS parameters for the gRPC server providing the StoreAPI.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, `keyFile`, `cipherSuites` and `curves` fields are supported.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -9008,6 +9070,24 @@
"description": "certFile defines the path to the client cert file in the Prometheus container for the targets.", "description": "certFile defines the path to the client cert file in the Prometheus container for the targets.",
"type": "string" "type": "string"
}, },
"cipherSuites": {
"description": "cipherSuites defines the list of supported cipher suites for TLS\nversions up to TLS 1.2.\n\nIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"curves": {
"description": "curves defines the list of preferred elliptic curves for\nTLS handshakes.\n\nIf not defined, the Go default curves are used.\nAvailable curves are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#CurveID\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"insecureSkipVerify": { "insecureSkipVerify": {
"description": "insecureSkipVerify defines how to disable target certificate validation.", "description": "insecureSkipVerify defines how to disable target certificate validation.",
"type": "boolean" "type": "boolean"
@@ -11558,6 +11638,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "shards must be greater than or equal to the number of topology values when sharding strategy mode is Topology",
"rule": "!has(self.shardingStrategy) || !has(self.shardingStrategy.mode) || self.shardingStrategy.mode != 'Topology' || !has(self.shardingStrategy.topology) || !has(self.shardingStrategy.topology.values) || self.shardingStrategy.topology.values.size() == 0 || (has(self.shards) ? self.shards : 1) >= self.shardingStrategy.topology.values.size()"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"status": { "status": {
+61 -2
View File
@@ -5412,6 +5412,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -5454,6 +5459,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
@@ -6245,7 +6256,7 @@
"type": "boolean" "type": "boolean"
}, },
"scrapeConfigNamespaceSelector": { "scrapeConfigNamespaceSelector": {
"description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigNamespaceSelector defines the namespaces to match for ScrapeConfig discovery. An empty label selector\nmatches all namespaces. A null label selector matches the current\nnamespace only.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -6292,7 +6303,7 @@
"additionalProperties": false "additionalProperties": false
}, },
"scrapeConfigSelector": { "scrapeConfigSelector": {
"description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level.", "description": "scrapeConfigSelector defines the scrapeConfigs to be selected for target discovery. An empty label\nselector matches all objects. A null label selector matches no objects.\n\nIf `spec.serviceMonitorSelector`, `spec.podMonitorSelector`, `spec.probeSelector`\nand `spec.scrapeConfigSelector` are null, the Prometheus configuration is unmanaged.\nThe Prometheus operator will ensure that the Prometheus configuration's\nSecret exists, but it is the responsibility of the user to provide the raw\ngzipped Prometheus configuration under the `prometheus.yaml.gz` key.\nThis behavior is *deprecated* and will be removed in the next major version\nof the custom resource definition. It is recommended to use\n`spec.additionalScrapeConfigs` instead.\n\nNote that the ScrapeConfig custom resource definition is currently at Alpha level\nand will be graduated to Beta in a future release.",
"properties": { "properties": {
"matchExpressions": { "matchExpressions": {
"description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
@@ -6646,6 +6657,46 @@
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
"shardingStrategy": {
"description": "shardingStrategy defines the sharding strategy for distributing scraped targets across Prometheus shards.\n\nWhen not defined, the operator defaults to the 'Address' mode which distributes\ntargets based on a hash of the target address.",
"properties": {
"mode": {
"description": "mode defines the sharding mode. Can be 'Address' or 'Topology'.\n\n'Address' is the default mode and distributes targets across shards\nbased on a hash of the target address.\n\n'Topology' enables zone-aware sharding where each shard is assigned to a\nspecific topology zone and only scrapes targets in that zone.\n(Alpha) Using the 'Topology' mode requires the `PrometheusTopologySharding`\nfeature gate to be enabled.",
"enum": [
"Address",
"Topology"
],
"type": "string"
},
"topology": {
"description": "topology defines the configuration for topology-aware sharding.\nThis field is only valid when mode is set to 'Topology'.",
"properties": {
"externalLabelName": {
"description": "externalLabelName defines the name of the Prometheus external label used\nto communicate the topology zone assigned to the Prometheus instance.\nIf not defined, it defaults to \"zone\".\nIf set to the empty string, no external label is added to the Prometheus configuration.",
"type": "string"
},
"values": {
"description": "values defines the list of topology values (e.g. zone names) to be used\nfor sharding. The configured number of shards must be greater than or\nequal to the number of values.",
"items": {
"type": "string"
},
"type": "array",
"x-kubernetes-list-type": "atomic"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"x-kubernetes-validations": [
{
"message": "topology can only be defined when mode is set to 'Topology'",
"rule": "!has(self.topology) || (has(self.mode) && self.mode == 'Topology')"
}
],
"additionalProperties": false
},
"shards": { "shards": {
"description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.", "description": "shards defines the number of shards to distribute the scraped targets onto.\n\n`spec.replicas` multiplied by `spec.shards` is the total number of Pods\nbeing created.\n\nWhen not defined, the operator assumes only one shard.\n\nNote that scaling down shards will not reshard data onto the remaining\ninstances, it must be manually moved. Increasing shards will not reshard\ndata either but it will continue to be available from the same\ninstances. To query globally, use either\n* Thanos sidecar + querier for query federation and Thanos Ruler for rules.\n* Remote-write to send metrics to a central location.\n\nBy default, the sharding of targets is performed on:\n* The `__address__` target's metadata label for PodMonitor,\nServiceMonitor and ScrapeConfig resources.\n* The `__param_target__` label for Probe resources.\n\nUsers can define their own sharding implementation by setting the\n`__tmp_hash` label during the target discovery with relabeling\nconfiguration (either in the monitoring resources or via scrape class).\n\nYou can also disable sharding on a specific target by setting the\n`__tmp_disable_sharding` label with relabeling configuration. When\nthe label value isn't empty, all Prometheus shards will scrape the target.",
"format": "int32", "format": "int32",
@@ -9534,6 +9585,14 @@
{ {
"message": "additionalScrapeConfigs cannot be set when mode is DaemonSet", "message": "additionalScrapeConfigs cannot be set when mode is DaemonSet",
"rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.additionalScrapeConfigs))" "rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.additionalScrapeConfigs))"
},
{
"message": "shardingStrategy cannot be set when mode is DaemonSet",
"rule": "!(has(self.mode) && self.mode == 'DaemonSet' && has(self.shardingStrategy))"
},
{
"message": "shards must be greater than or equal to the number of topology values when sharding strategy mode is Topology",
"rule": "!has(self.shardingStrategy) || !has(self.shardingStrategy.mode) || self.shardingStrategy.mode != 'Topology' || !has(self.shardingStrategy.topology) || !has(self.shardingStrategy.topology.values) || self.shardingStrategy.topology.values.size() == 0 || (has(self.shards) ? self.shards : 1) >= self.shardingStrategy.topology.values.size()"
} }
], ],
"additionalProperties": false "additionalProperties": false
+21 -4
View File
@@ -60,7 +60,8 @@
"enum": [ "enum": [
"OAuth", "OAuth",
"ManagedIdentity", "ManagedIdentity",
"SDK" "SDK",
"WorkloadIdentity"
], ],
"type": "string" "type": "string"
}, },
@@ -593,7 +594,7 @@
"type": "string" "type": "string"
}, },
"tlsConfig": { "tlsConfig": {
"description": "tlsConfig defies the TLS configuration applying to the target HTTP endpoint.", "description": "tlsConfig defines the TLS configuration applying to the target HTTP endpoint.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -939,7 +940,7 @@
"type": "boolean" "type": "boolean"
}, },
"filter": { "filter": {
"description": "filter defines the filter expression used to filter the catalog results.\nSee https://www.consul.io/api-docs/catalog#list-services\nIt requires Prometheus >= 3.0.0.", "description": "filter defines the filter expression used to filter the catalog results.\nSee https://developer.hashicorp.com/consul/api-docs/catalog#filtering\nIt requires Prometheus >= 3.0.0.",
"minLength": 1, "minLength": 1,
"type": "string" "type": "string"
}, },
@@ -947,6 +948,11 @@
"description": "followRedirects defines whether HTTP requests follow HTTP 3xx redirects.", "description": "followRedirects defines whether HTTP requests follow HTTP 3xx redirects.",
"type": "boolean" "type": "boolean"
}, },
"healthFilter": {
"description": "healthFilter defines the filter expression used to filter the health results.\nSee https://developer.hashicorp.com/consul/api-docs/health#filtering\nIt requires Prometheus >= 3.11.2.",
"minLength": 1,
"type": "string"
},
"namespace": { "namespace": {
"description": "namespace are only supported in Consul Enterprise.\n\nIt requires Prometheus >= 2.28.0.", "description": "namespace are only supported in Consul Enterprise.\n\nIt requires Prometheus >= 2.28.0.",
"minLength": 1, "minLength": 1,
@@ -8661,6 +8667,7 @@
}, },
"roleARN": { "roleARN": {
"description": "roleARN defines the AWS Role ARN, an alternative to using AWS API keys.", "description": "roleARN defines the AWS Role ARN, an alternative to using AWS API keys.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"secretKey": { "secretKey": {
@@ -9700,6 +9707,7 @@
}, },
"namespace": { "namespace": {
"description": "namespace defines the Nomad namespace to query for service discovery.\nWhen specified, only resources within this namespace will be discovered.", "description": "namespace defines the Nomad namespace to query for service discovery.\nWhen specified, only resources within this namespace will be discovered.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"noProxy": { "noProxy": {
@@ -10078,6 +10086,7 @@
}, },
"region": { "region": {
"description": "region defines the Nomad region to query for service discovery.\nWhen specified, only resources within this region will be discovered.", "description": "region defines the Nomad region to query for service discovery.\nWhen specified, only resources within this region will be discovered.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"server": { "server": {
@@ -10087,6 +10096,7 @@
}, },
"tagSeparator": { "tagSeparator": {
"description": "tagSeparator defines the separator used to join multiple tags.\nThis determines how Nomad service tags are concatenated into Prometheus labels.", "description": "tagSeparator defines the separator used to join multiple tags.\nThis determines how Nomad service tags are concatenated into Prometheus labels.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"tlsConfig": { "tlsConfig": {
@@ -10602,6 +10612,7 @@
}, },
"applicationCredentialId": { "applicationCredentialId": {
"description": "applicationCredentialId defines the OpenStack applicationCredentialId.", "description": "applicationCredentialId defines the OpenStack applicationCredentialId.",
"minLength": 1,
"type": "string" "type": "string"
}, },
"applicationCredentialName": { "applicationCredentialName": {
@@ -11804,7 +11815,7 @@
"scalewaySDConfigs": { "scalewaySDConfigs": {
"description": "scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.", "description": "scalewaySDConfigs defines a list of Scaleway instances and baremetal service discovery configurations.",
"items": { "items": {
"description": "ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\nSee https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config", "description": "ScalewaySDConfig configurations allow retrieving scrape targets from Scaleway instances and baremetal services.\nSee https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scaleway_sd_config\n\nNote: The `_file` variants of credential fields (e.g. `secret_key_file`)\nfrom the Prometheus configuration are not supported. Use Kubernetes secrets via `secretKey` instead.",
"properties": { "properties": {
"accessKey": { "accessKey": {
"description": "accessKey defines the access key to use. https://console.scaleway.com/project/credentials", "description": "accessKey defines the access key to use. https://console.scaleway.com/project/credentials",
@@ -12382,6 +12393,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "at most one of basicAuth, authorization, or oauth2 can be configured",
"rule": "[has(self.basicAuth), has(self.authorization), has(self.oauth2)].filter(x, x).size() <= 1"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"status": { "status": {
+4
View File
@@ -26,6 +26,10 @@
"status": { "status": {
"description": "ShareManagerStatus defines the observed state of the Longhorn share manager", "description": "ShareManagerStatus defines the observed state of the Longhorn share manager",
"properties": { "properties": {
"currentImage": {
"description": "The image currently used by the share manager pod",
"type": "string"
},
"endpoint": { "endpoint": {
"description": "NFS endpoint that can access the mounted filesystem of the volume", "description": "NFS endpoint that can access the mounted filesystem of the volume",
"type": "string" "type": "string"
+7
View File
@@ -44,6 +44,10 @@
"checksum": { "checksum": {
"type": "string" "type": "string"
}, },
"checksumCalculatedAt": {
"description": "ChecksumCalculatedAt is the RFC3339 timestamp indicating when the checksum\nfor this snapshot was last calculated or updated.",
"type": "string"
},
"children": { "children": {
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
@@ -76,6 +80,9 @@
"readyToUse": { "readyToUse": {
"type": "boolean" "type": "boolean"
}, },
"requestedTime": {
"type": "string"
},
"restoreSize": { "restoreSize": {
"format": "int64", "format": "int64",
"type": "integer" "type": "integer"
+30 -1
View File
@@ -2424,7 +2424,7 @@
"type": "string" "type": "string"
}, },
"grpcServerTlsConfig": { "grpcServerTlsConfig": {
"description": "grpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, and `keyFile` fields are supported.", "description": "grpcServerTlsConfig defines the gRPC server from which Thanos Querier reads\nrecorded rule data.\n\nNote: Currently only the `minVersion`, `caFile`, `certFile`, `keyFile`, `cipherSuites` and `curves` fields are supported.",
"properties": { "properties": {
"ca": { "ca": {
"description": "ca defines the Certificate authority used when verifying server certificates.", "description": "ca defines the Certificate authority used when verifying server certificates.",
@@ -2544,6 +2544,24 @@
"description": "certFile defines the path to the client cert file in the Prometheus container for the targets.", "description": "certFile defines the path to the client cert file in the Prometheus container for the targets.",
"type": "string" "type": "string"
}, },
"cipherSuites": {
"description": "cipherSuites defines the list of supported cipher suites for TLS\nversions up to TLS 1.2.\n\nIf not defined, the Go default cipher suites are used.\nAvailable cipher suites are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#pkg-constants\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"curves": {
"description": "curves defines the list of preferred elliptic curves for\nTLS handshakes.\n\nIf not defined, the Go default curves are used.\nAvailable curves are documented in the Go documentation:\nhttps://golang.org/pkg/crypto/tls/#CurveID\n\nIt requires Thanos >= v0.42.0. Note that the operator doesn't verify if\nthe Thanos version supports the provided values.",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array",
"x-kubernetes-list-type": "set"
},
"insecureSkipVerify": { "insecureSkipVerify": {
"description": "insecureSkipVerify defines how to disable target certificate validation.", "description": "insecureSkipVerify defines how to disable target certificate validation.",
"type": "boolean" "type": "boolean"
@@ -4968,6 +4986,11 @@
"x-kubernetes-map-type": "atomic", "x-kubernetes-map-type": "atomic",
"additionalProperties": false "additionalProperties": false
}, },
"externalId": {
"description": "externalId defines the external ID used when assuming an AWS role. Can only be used with roleArn.\nIt requires Prometheus >= v3.11.0 or Alertmanager >= v0.33.0. Currently not supported by Thanos.",
"minLength": 1,
"type": "string"
},
"profile": { "profile": {
"description": "profile defines the named AWS profile used to authenticate.", "description": "profile defines the named AWS profile used to authenticate.",
"type": "string" "type": "string"
@@ -5010,6 +5033,12 @@
} }
}, },
"type": "object", "type": "object",
"x-kubernetes-validations": [
{
"message": "externalId can only be used when roleArn is specified",
"rule": "!has(self.externalId) || has(self.roleArn)"
}
],
"additionalProperties": false "additionalProperties": false
}, },
"tlsConfig": { "tlsConfig": {
+24
View File
@@ -100,6 +100,10 @@
} }
] ]
}, },
"engineNodeID": {
"description": "engineNodeID defines the node where the backend engine (target) runs.\nIf empty, falls back to NodeID.",
"type": "string"
},
"freezeFilesystemForSnapshot": { "freezeFilesystemForSnapshot": {
"description": "Setting that freezes the filesystem on the root partition before a snapshot is created.", "description": "Setting that freezes the filesystem on the root partition before a snapshot is created.",
"enum": [ "enum": [
@@ -135,6 +139,7 @@
"type": "string" "type": "string"
}, },
"nodeID": { "nodeID": {
"description": "nodeID defines the node where the volume is attached (where the frontend initiator runs).",
"type": "string" "type": "string"
}, },
"nodeSelector": { "nodeSelector": {
@@ -227,6 +232,10 @@
], ],
"type": "string" "type": "string"
}, },
"snapshotHashingRequestedAt": {
"description": "SnapshotHashingRequestedAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when an on-demand snapshot checksum calculation is requested.\nWhen this value is set and is later than LastOnDemandSnapshotHashingCompleteAt, the system will calculate checksums\nfor all user snapshots.\n\nIf SnapshotHashingRequestedAt differs from LastOnDemandSnapshotHashingCompleteAt, it indicates that a hashing request\nis still in progress, and a new request will be rejected.",
"type": "string"
},
"snapshotMaxCount": { "snapshotMaxCount": {
"type": "integer" "type": "integer"
}, },
@@ -319,6 +328,10 @@
"nullable": true, "nullable": true,
"type": "array" "type": "array"
}, },
"currentEngineNodeID": {
"description": "the node that the engine (target) is currently running on.",
"type": "string"
},
"currentImage": { "currentImage": {
"type": "string" "type": "string"
}, },
@@ -386,6 +399,9 @@
"type": "object", "type": "object",
"additionalProperties": false "additionalProperties": false
}, },
"lastAutoSalvagedAt": {
"type": "string"
},
"lastBackup": { "lastBackup": {
"type": "string" "type": "string"
}, },
@@ -395,6 +411,10 @@
"lastDegradedAt": { "lastDegradedAt": {
"type": "string" "type": "string"
}, },
"lastOnDemandSnapshotHashingCompleteAt": {
"description": "LastOnDemandSnapshotHashingCompleteAt is the RFC3339 timestamp (e.g., \"2026-03-16T10:30:00Z\") when the\nmost recent on-demand snapshot checksum calculation completed.\nWhen this value matches SnapshotHashingRequestedAt, the requested on-demand checksum calculation is considered complete.",
"type": "string"
},
"ownerID": { "ownerID": {
"type": "string" "type": "string"
}, },
@@ -418,6 +438,10 @@
}, },
"state": { "state": {
"type": "string" "type": "string"
},
"switchoverState": {
"description": "SwitchoverState describes the current progress of a v2 engine live switchover.\nEmpty when no switchover is in progress.",
"type": "string"
} }
}, },
"type": "object", "type": "object",