1# Copyright 2020 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15apiVersion: apiextensions.k8s.io/v1
16kind: CustomResourceDefinition
17metadata:
18 annotations:
19 cnrm.cloud.google.com/version: 1.106.0
20 creationTimestamp: null
21 labels:
22 cnrm.cloud.google.com/dcl2crd: "true"
23 cnrm.cloud.google.com/managed-by-kcc: "true"
24 cnrm.cloud.google.com/stability-level: stable
25 cnrm.cloud.google.com/system: "true"
26 name: monitoringservicelevelobjectives.monitoring.cnrm.cloud.google.com
27spec:
28 group: monitoring.cnrm.cloud.google.com
29 names:
30 categories:
31 - gcp
32 kind: MonitoringServiceLevelObjective
33 plural: monitoringservicelevelobjectives
34 shortNames:
35 - gcpmonitoringservicelevelobjective
36 - gcpmonitoringservicelevelobjectives
37 singular: monitoringservicelevelobjective
38 scope: Namespaced
39 versions:
40 - additionalPrinterColumns:
41 - jsonPath: .metadata.creationTimestamp
42 name: Age
43 type: date
44 - description: When 'True', the most recent reconcile of the resource succeeded
45 jsonPath: .status.conditions[?(@.type=='Ready')].status
46 name: Ready
47 type: string
48 - description: The reason for the value in 'Ready'
49 jsonPath: .status.conditions[?(@.type=='Ready')].reason
50 name: Status
51 type: string
52 - description: The last transition time for the value in 'Status'
53 jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
54 name: Status Age
55 type: date
56 name: v1beta1
57 schema:
58 openAPIV3Schema:
59 properties:
60 apiVersion:
61 description: 'apiVersion defines the versioned schema of this representation
62 of an object. Servers should convert recognized schemas to the latest
63 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
64 type: string
65 kind:
66 description: 'kind is a string value representing the REST resource this
67 object represents. Servers may infer this from the endpoint the client
68 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
69 type: string
70 metadata:
71 type: object
72 spec:
73 properties:
74 calendarPeriod:
75 description: 'A calendar period, semantically "since the start of
76 the current ``". At this time, only `DAY`, `WEEK`, `FORTNIGHT`,
77 and `MONTH` are supported. Possible values: CALENDAR_PERIOD_UNSPECIFIED,
78 DAY, WEEK, FORTNIGHT, MONTH, QUARTER, HALF, YEAR'
79 type: string
80 displayName:
81 description: Name used for UI elements listing this SLO.
82 type: string
83 goal:
84 description: The fraction of service that must be good in order for
85 this objective to be met. `0 < goal <= 0.999`.
86 format: double
87 type: number
88 projectRef:
89 description: Immutable. The Project that this resource belongs to.
90 oneOf:
91 - not:
92 required:
93 - external
94 required:
95 - name
96 - not:
97 anyOf:
98 - required:
99 - name
100 - required:
101 - namespace
102 required:
103 - external
104 properties:
105 external:
106 description: |-
107 The project for the resource
108
109 Allowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).
110 type: string
111 name:
112 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
113 type: string
114 namespace:
115 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
116 type: string
117 type: object
118 resourceID:
119 description: Immutable. Optional. The name of the resource. Used for
120 creation and acquisition. When unset, the value of `metadata.name`
121 is used as the default.
122 type: string
123 rollingPeriod:
124 description: A rolling time period, semantically "in the past ``".
125 Must be an integer multiple of 1 day no larger than 30 days.
126 type: string
127 serviceLevelIndicator:
128 description: The definition of good service, used to measure and calculate
129 the quality of the `Service`'s performance with respect to a single
130 aspect of service quality.
131 properties:
132 basicSli:
133 description: Basic SLI on a well-known service type.
134 properties:
135 availability:
136 description: Good service is defined to be the count of requests
137 made to this service that return successfully.
138 type: object
139 x-kubernetes-preserve-unknown-fields: true
140 latency:
141 description: Good service is defined to be the count of requests
142 made to this service that are fast enough with respect to
143 `latency.threshold`.
144 properties:
145 experience:
146 description: 'A description of the experience associated
147 with failing requests. Possible values: LATENCY_EXPERIENCE_UNSPECIFIED,
148 DELIGHTING, SATISFYING, ANNOYING'
149 type: string
150 threshold:
151 description: Good service is defined to be the count of
152 requests made to this service that return in no more
153 than `threshold`.
154 type: string
155 type: object
156 location:
157 description: 'OPTIONAL: The set of locations to which this
158 SLI is relevant. Telemetry from other locations will not
159 be used to calculate performance for this SLI. If omitted,
160 this SLI applies to all locations in which the Service has
161 activity. For service types that don''t support breaking
162 down by location, setting this field will result in an error.'
163 items:
164 type: string
165 type: array
166 method:
167 description: 'OPTIONAL: The set of RPCs to which this SLI
168 is relevant. Telemetry from other methods will not be used
169 to calculate performance for this SLI. If omitted, this
170 SLI applies to all the Service''s methods. For service types
171 that don''t support breaking down by method, setting this
172 field will result in an error.'
173 items:
174 type: string
175 type: array
176 operationAvailability:
177 description: Good service is defined to be the count of operations
178 performed by this service that return successfully
179 type: object
180 x-kubernetes-preserve-unknown-fields: true
181 operationLatency:
182 description: Good service is defined to be the count of operations
183 performed by this service that are fast enough with respect
184 to `operation_latency.threshold`.
185 properties:
186 experience:
187 description: 'A description of the experience associated
188 with failing requests. Possible values: LATENCY_EXPERIENCE_UNSPECIFIED,
189 DELIGHTING, SATISFYING, ANNOYING'
190 type: string
191 threshold:
192 description: Good service is defined to be the count of
193 operations that are completed in no more than `threshold`.
194 type: string
195 type: object
196 version:
197 description: 'OPTIONAL: The set of API versions to which this
198 SLI is relevant. Telemetry from other API versions will
199 not be used to calculate performance for this SLI. If omitted,
200 this SLI applies to all API versions. For service types
201 that don''t support breaking down by version, setting this
202 field will result in an error.'
203 items:
204 type: string
205 type: array
206 type: object
207 requestBased:
208 description: Request-based SLIs
209 properties:
210 distributionCut:
211 description: '`distribution_cut` is used when `good_service`
212 is a count of values aggregated in a `Distribution` that
213 fall into a good range. The `total_service` is the total
214 count of all values aggregated in the `Distribution`.'
215 properties:
216 distributionFilter:
217 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
218 specifying a `TimeSeries` aggregating values. Must have
219 `ValueType = DISTRIBUTION` and `MetricKind = DELTA`
220 or `MetricKind = CUMULATIVE`.
221 type: string
222 range:
223 description: Range of values considered "good." For a
224 one-sided range, set one bound to an infinite value.
225 properties:
226 max:
227 description: Range maximum.
228 format: double
229 type: number
230 min:
231 description: Range minimum.
232 format: double
233 type: number
234 type: object
235 type: object
236 goodTotalRatio:
237 description: '`good_total_ratio` is used when the ratio of
238 `good_service` to `total_service` is computed from two `TimeSeries`.'
239 properties:
240 badServiceFilter:
241 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
242 specifying a `TimeSeries` quantifying bad service, either
243 demanded service that was not provided or demanded service
244 that was of inadequate quality. Must have `ValueType
245 = DOUBLE` or `ValueType = INT64` and must have `MetricKind
246 = DELTA` or `MetricKind = CUMULATIVE`.
247 type: string
248 goodServiceFilter:
249 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
250 specifying a `TimeSeries` quantifying good service provided.
251 Must have `ValueType = DOUBLE` or `ValueType = INT64`
252 and must have `MetricKind = DELTA` or `MetricKind =
253 CUMULATIVE`.
254 type: string
255 totalServiceFilter:
256 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
257 specifying a `TimeSeries` quantifying total demanded
258 service. Must have `ValueType = DOUBLE` or `ValueType
259 = INT64` and must have `MetricKind = DELTA` or `MetricKind
260 = CUMULATIVE`.
261 type: string
262 type: object
263 type: object
264 windowsBased:
265 description: Windows-based SLIs
266 properties:
267 goodBadMetricFilter:
268 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
269 specifying a `TimeSeries` with `ValueType = BOOL`. The window
270 is good if any `true` values appear in the window.
271 type: string
272 goodTotalRatioThreshold:
273 description: A window is good if its `performance` is high
274 enough.
275 properties:
276 basicSliPerformance:
277 description: '`BasicSli` to evaluate to judge window quality.'
278 properties:
279 availability:
280 description: Good service is defined to be the count
281 of requests made to this service that return successfully.
282 type: object
283 x-kubernetes-preserve-unknown-fields: true
284 latency:
285 description: Good service is defined to be the count
286 of requests made to this service that are fast enough
287 with respect to `latency.threshold`.
288 properties:
289 experience:
290 description: 'A description of the experience
291 associated with failing requests. Possible values:
292 LATENCY_EXPERIENCE_UNSPECIFIED, DELIGHTING,
293 SATISFYING, ANNOYING'
294 type: string
295 threshold:
296 description: Good service is defined to be the
297 count of requests made to this service that
298 return in no more than `threshold`.
299 type: string
300 type: object
301 location:
302 description: 'OPTIONAL: The set of locations to which
303 this SLI is relevant. Telemetry from other locations
304 will not be used to calculate performance for this
305 SLI. If omitted, this SLI applies to all locations
306 in which the Service has activity. For service types
307 that don''t support breaking down by location, setting
308 this field will result in an error.'
309 items:
310 type: string
311 type: array
312 method:
313 description: 'OPTIONAL: The set of RPCs to which this
314 SLI is relevant. Telemetry from other methods will
315 not be used to calculate performance for this SLI.
316 If omitted, this SLI applies to all the Service''s
317 methods. For service types that don''t support breaking
318 down by method, setting this field will result in
319 an error.'
320 items:
321 type: string
322 type: array
323 operationAvailability:
324 description: Good service is defined to be the count
325 of operations performed by this service that return
326 successfully
327 type: object
328 x-kubernetes-preserve-unknown-fields: true
329 operationLatency:
330 description: Good service is defined to be the count
331 of operations performed by this service that are
332 fast enough with respect to `operation_latency.threshold`.
333 properties:
334 experience:
335 description: 'A description of the experience
336 associated with failing requests. Possible values:
337 LATENCY_EXPERIENCE_UNSPECIFIED, DELIGHTING,
338 SATISFYING, ANNOYING'
339 type: string
340 threshold:
341 description: Good service is defined to be the
342 count of operations that are completed in no
343 more than `threshold`.
344 type: string
345 type: object
346 version:
347 description: 'OPTIONAL: The set of API versions to
348 which this SLI is relevant. Telemetry from other
349 API versions will not be used to calculate performance
350 for this SLI. If omitted, this SLI applies to all
351 API versions. For service types that don''t support
352 breaking down by version, setting this field will
353 result in an error.'
354 items:
355 type: string
356 type: array
357 type: object
358 performance:
359 description: '`RequestBasedSli` to evaluate to judge window
360 quality.'
361 properties:
362 distributionCut:
363 description: '`distribution_cut` is used when `good_service`
364 is a count of values aggregated in a `Distribution`
365 that fall into a good range. The `total_service`
366 is the total count of all values aggregated in the
367 `Distribution`.'
368 properties:
369 distributionFilter:
370 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
371 specifying a `TimeSeries` aggregating values.
372 Must have `ValueType = DISTRIBUTION` and `MetricKind
373 = DELTA` or `MetricKind = CUMULATIVE`.
374 type: string
375 range:
376 description: Range of values considered "good."
377 For a one-sided range, set one bound to an infinite
378 value.
379 properties:
380 max:
381 description: Range maximum.
382 format: double
383 type: number
384 min:
385 description: Range minimum.
386 format: double
387 type: number
388 type: object
389 type: object
390 goodTotalRatio:
391 description: '`good_total_ratio` is used when the
392 ratio of `good_service` to `total_service` is computed
393 from two `TimeSeries`.'
394 properties:
395 badServiceFilter:
396 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
397 specifying a `TimeSeries` quantifying bad service,
398 either demanded service that was not provided
399 or demanded service that was of inadequate quality.
400 Must have `ValueType = DOUBLE` or `ValueType
401 = INT64` and must have `MetricKind = DELTA`
402 or `MetricKind = CUMULATIVE`.
403 type: string
404 goodServiceFilter:
405 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
406 specifying a `TimeSeries` quantifying good service
407 provided. Must have `ValueType = DOUBLE` or
408 `ValueType = INT64` and must have `MetricKind
409 = DELTA` or `MetricKind = CUMULATIVE`.
410 type: string
411 totalServiceFilter:
412 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
413 specifying a `TimeSeries` quantifying total
414 demanded service. Must have `ValueType = DOUBLE`
415 or `ValueType = INT64` and must have `MetricKind
416 = DELTA` or `MetricKind = CUMULATIVE`.
417 type: string
418 type: object
419 type: object
420 threshold:
421 description: If window `performance >= threshold`, the
422 window is counted as good.
423 format: double
424 type: number
425 type: object
426 metricMeanInRange:
427 description: A window is good if the metric's value is in
428 a good range, averaged across returned streams.
429 properties:
430 range:
431 description: Range of values considered "good." For a
432 one-sided range, set one bound to an infinite value.
433 properties:
434 max:
435 description: Range maximum.
436 format: double
437 type: number
438 min:
439 description: Range minimum.
440 format: double
441 type: number
442 type: object
443 timeSeries:
444 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
445 specifying the `TimeSeries` to use for evaluating window
446 quality.
447 type: string
448 type: object
449 metricSumInRange:
450 description: A window is good if the metric's value is in
451 a good range, summed across returned streams.
452 properties:
453 range:
454 description: Range of values considered "good." For a
455 one-sided range, set one bound to an infinite value.
456 properties:
457 max:
458 description: Range maximum.
459 format: double
460 type: number
461 min:
462 description: Range minimum.
463 format: double
464 type: number
465 type: object
466 timeSeries:
467 description: A [monitoring filter](https://cloud.google.com/monitoring/api/v3/filters)
468 specifying the `TimeSeries` to use for evaluating window
469 quality.
470 type: string
471 type: object
472 windowPeriod:
473 description: Duration over which window quality is evaluated.
474 Must be an integer fraction of a day and at least `60s`.
475 type: string
476 type: object
477 type: object
478 serviceRef:
479 description: Immutable.
480 oneOf:
481 - not:
482 required:
483 - external
484 required:
485 - name
486 - not:
487 anyOf:
488 - required:
489 - name
490 - required:
491 - namespace
492 required:
493 - external
494 properties:
495 external:
496 description: |-
497 The service for the resource
498
499 Allowed value: The Google Cloud resource name of a `MonitoringService` resource (format: `projects/{{project}}/services/{{name}}`).
500 type: string
501 name:
502 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
503 type: string
504 namespace:
505 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
506 type: string
507 type: object
508 required:
509 - goal
510 - projectRef
511 - serviceRef
512 type: object
513 status:
514 properties:
515 conditions:
516 description: Conditions represent the latest available observation
517 of the resource's current state.
518 items:
519 properties:
520 lastTransitionTime:
521 description: Last time the condition transitioned from one status
522 to another.
523 type: string
524 message:
525 description: Human-readable message indicating details about
526 last transition.
527 type: string
528 reason:
529 description: Unique, one-word, CamelCase reason for the condition's
530 last transition.
531 type: string
532 status:
533 description: Status is the status of the condition. Can be True,
534 False, Unknown.
535 type: string
536 type:
537 description: Type is the type of the condition.
538 type: string
539 type: object
540 type: array
541 createTime:
542 description: Time stamp of the `Create` or most recent `Update` command
543 on this `Slo`.
544 format: date-time
545 type: string
546 deleteTime:
547 description: Time stamp of the `Update` or `Delete` command that made
548 this no longer a current `Slo`. This field is not populated in `ServiceLevelObjective`s
549 returned from calls to `GetServiceLevelObjective` and `ListServiceLevelObjectives`,
550 because it is always empty in the current version. It is populated
551 in `ServiceLevelObjective`s representing previous versions in the
552 output of `ListServiceLevelObjectiveVersions`. Because all old configuration
553 versions are stored, `Update` operations mark the obsoleted version
554 as deleted.
555 format: date-time
556 type: string
557 observedGeneration:
558 description: ObservedGeneration is the generation of the resource
559 that was most recently observed by the Config Connector controller.
560 If this is equal to metadata.generation, then that means that the
561 current reported status reflects the most recent desired state of
562 the resource.
563 type: integer
564 serviceManagementOwned:
565 description: Output only. If set, this SLO is managed at the [Service
566 Management](https://cloud.google.com/service-management/overview)
567 level. Therefore the service yaml file is the source of truth for
568 this SLO, and API `Update` and `Delete` operations are forbidden.
569 type: boolean
570 type: object
571 required:
572 - spec
573 type: object
574 served: true
575 storage: true
576 subresources:
577 status: {}
578status:
579 acceptedNames:
580 kind: ""
581 plural: ""
582 conditions: []
583 storedVersions: []
View as plain text