forked from projectsveltos/libsveltos
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlib.projectsveltos.io_healthchecks.yaml
More file actions
215 lines (214 loc) · 10.6 KB
/
lib.projectsveltos.io_healthchecks.yaml
File metadata and controls
215 lines (214 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.20.1
name: healthchecks.lib.projectsveltos.io
spec:
group: lib.projectsveltos.io
names:
kind: HealthCheck
listKind: HealthCheckList
plural: healthchecks
singular: healthcheck
scope: Cluster
versions:
- name: v1beta1
schema:
openAPIV3Schema:
description: HealthCheck is the Schema for the HealthCheck API
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More 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.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: HealthCheckSpec defines the desired state of HealthCheck
properties:
collectResources:
default: false
description: |-
CollectResources indicates whether matching resources need
to be collected and added to HealthReport.
type: boolean
evaluateHealth:
description: |-
The EvaluateHealth field specifies a Lua function responsible for evaluating the
health of the resources selected by resourceSelectors.
This function can assess the health of each resource independently or consider inter-resource relationships.
The function must be named *evaluate* and can access all objects identified by resourceSelectors using
the *resources* variable. It should return an array of structured instances, each containing the following fields:
- resource: The resource being evaluated
- healthStatus: The health status of the resource, which can be one of "Healthy", "Progressing", "Degraded", or "Suspended"
- message: An optional message providing additional information about the health status
- reEvaluate: If set to true, this healthCheck instances will be re-evaluated in 10 seconds
minLength: 1
type: string
evaluateIndependently:
default: true
description: |-
EvaluateIndependently indicates whether matching resources can be evaluated
in smaller batches to save memory.
Set this to true if the Lua script evaluates each resource independently.
Set this to false if the Lua script needs to compare all selected resources
type: boolean
resourceSelectors:
description: ResourceSelectors identifies what resources to select
to evaluate health
items:
description: ResourceSelector defines what resources are a match
properties:
evaluate:
description: |-
Evaluate contains a function "evaluate" in lua language.
The function will be passed one of the object selected based on
above criteria.
Must return struct with field "matching" representing whether
object is a match and an optional "message" field.
type: string
evaluateCEL:
description: |-
EvaluateCEL contains a list of named CEL (Common Expression Language) rules.
Each rule will be evaluated in order against each object selected based on
the criteria defined above. Each rule's expression must return a boolean value
indicating whether the object is a match.
Evaluation stops at the first rule that returns true; subsequent
rules will not be evaluated.
items:
description: CELRule defines a named CEL rule used in EvaluateCEL.
properties:
name:
description: Name is a human-readable identifier for the
rule.
type: string
rule:
description: |-
Rule is the CEL (Common Expression Language) expression to evaluate.
It must return a bool
type: string
required:
- name
- rule
type: object
type: array
group:
description: Group of the resource deployed in the Cluster.
type: string
kind:
description: Kind of the resource deployed in the Cluster.
minLength: 1
type: string
labelFilters:
description: LabelFilters allows to filter resources based on
current labels.
items:
properties:
key:
description: Key is the label key
type: string
operation:
description: Operation is the comparison operation
enum:
- Equal
- Different
- Has
- DoesNotHave
type: string
value:
description: Value is the label value
type: string
required:
- key
- operation
type: object
type: array
name:
description: Name of the resource deployed in the Cluster.
type: string
namespace:
description: |-
Namespace of the resource deployed in the Cluster.
Empty for resources scoped at cluster level.
For namespaced resources, an empty string "" indicates all namespaces.
type: string
selector:
description: |-
Selector is a standard Kubernetes label selector. Resources are selected
if their labels match the selector. This field uses the standard
Kubernetes label matching syntax (e.g., {"environment": "production"}).
If both LabelFilters and Selector are specified, the requirements from
both are logically ANDed.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: |-
A label selector requirement is a selector that contains values, a key, and an operator that
relates the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: |-
operator represents a key's relationship to a set of values.
Valid operators are In, NotIn, Exists and DoesNotExist.
type: string
values:
description: |-
values is an array of string values. If the operator is In or NotIn,
the values array must be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced during a strategic
merge patch.
items:
type: string
type: array
x-kubernetes-list-type: atomic
required:
- key
- operator
type: object
type: array
x-kubernetes-list-type: atomic
matchLabels:
additionalProperties:
type: string
description: |-
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
map is equivalent to an element of matchExpressions, whose key field is "key", the
operator is "In", and the values array contains only "value". The requirements are ANDed.
type: object
type: object
x-kubernetes-map-type: atomic
version:
description: Version of the resource deployed in the Cluster.
type: string
required:
- group
- kind
- version
type: object
type: array
required:
- evaluateHealth
- resourceSelectors
type: object
type: object
served: true
storage: true