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/managed-by-kcc: "true"
23 cnrm.cloud.google.com/stability-level: alpha
24 cnrm.cloud.google.com/system: "true"
25 cnrm.cloud.google.com/tf2crd: "true"
26 name: computeregionautoscalers.compute.cnrm.cloud.google.com
27spec:
28 group: compute.cnrm.cloud.google.com
29 names:
30 categories:
31 - gcp
32 kind: ComputeRegionAutoscaler
33 plural: computeregionautoscalers
34 shortNames:
35 - gcpcomputeregionautoscaler
36 - gcpcomputeregionautoscalers
37 singular: computeregionautoscaler
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: v1alpha1
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 autoscalingPolicy:
75 description: |-
76 The configuration parameters for the autoscaling algorithm. You can
77 define one or more of the policies for an autoscaler: cpuUtilization,
78 customMetricUtilizations, and loadBalancingUtilization.
79
80 If none of these are specified, the default will be to autoscale based
81 on cpuUtilization to 0.6 or 60%.
82 properties:
83 cooldownPeriod:
84 description: |-
85 The number of seconds that the autoscaler should wait before it
86 starts collecting information from a new instance. This prevents
87 the autoscaler from collecting information when the instance is
88 initializing, during which the collected usage would not be
89 reliable. The default time autoscaler waits is 60 seconds.
90
91 Virtual machine initialization times might vary because of
92 numerous factors. We recommend that you test how long an
93 instance may take to initialize. To do this, create an instance
94 and time the startup process.
95 type: integer
96 cpuUtilization:
97 description: |-
98 Defines the CPU utilization policy that allows the autoscaler to
99 scale based on the average CPU utilization of a managed instance
100 group.
101 properties:
102 predictiveMethod:
103 description: |-
104 Indicates whether predictive autoscaling based on CPU metric is enabled. Valid values are:
105
106 - NONE (default). No predictive method is used. The autoscaler scales the group to meet current demand based on real-time metrics.
107
108 - OPTIMIZE_AVAILABILITY. Predictive autoscaling improves availability by monitoring daily and weekly load patterns and scaling out ahead of anticipated demand.
109 type: string
110 target:
111 description: |-
112 The target CPU utilization that the autoscaler should maintain.
113 Must be a float value in the range (0, 1]. If not specified, the
114 default is 0.6.
115
116 If the CPU level is below the target utilization, the autoscaler
117 scales down the number of instances until it reaches the minimum
118 number of instances you specified or until the average CPU of
119 your instances reaches the target utilization.
120
121 If the average CPU is above the target utilization, the autoscaler
122 scales up until it reaches the maximum number of instances you
123 specified or until the average utilization reaches the target
124 utilization.
125 type: number
126 required:
127 - target
128 type: object
129 loadBalancingUtilization:
130 description: Configuration parameters of autoscaling based on
131 a load balancer.
132 properties:
133 target:
134 description: |-
135 Fraction of backend capacity utilization (set in HTTP(s) load
136 balancing configuration) that autoscaler should maintain. Must
137 be a positive float value. If not defined, the default is 0.8.
138 type: number
139 required:
140 - target
141 type: object
142 maxReplicas:
143 description: |-
144 The maximum number of instances that the autoscaler can scale up
145 to. This is required when creating or updating an autoscaler. The
146 maximum number of replicas should not be lower than minimal number
147 of replicas.
148 type: integer
149 metric:
150 description: Configuration parameters of autoscaling based on
151 a custom metric.
152 items:
153 properties:
154 filter:
155 description: |-
156 A filter string to be used as the filter string for
157 a Stackdriver Monitoring TimeSeries.list API call.
158 This filter is used to select a specific TimeSeries for
159 the purpose of autoscaling and to determine whether the metric
160 is exporting per-instance or per-group data.
161
162 You can only use the AND operator for joining selectors.
163 You can only use direct equality comparison operator (=) without
164 any functions for each selector.
165 You can specify the metric in both the filter string and in the
166 metric field. However, if specified in both places, the metric must
167 be identical.
168
169 The monitored resource type determines what kind of values are
170 expected for the metric. If it is a gce_instance, the autoscaler
171 expects the metric to include a separate TimeSeries for each
172 instance in a group. In such a case, you cannot filter on resource
173 labels.
174
175 If the resource type is any other value, the autoscaler expects
176 this metric to contain values that apply to the entire autoscaled
177 instance group and resource label filtering can be performed to
178 point autoscaler at the correct TimeSeries to scale upon.
179 This is called a per-group metric for the purpose of autoscaling.
180
181 If not specified, the type defaults to gce_instance.
182
183 You should provide a filter that is selective enough to pick just
184 one TimeSeries for the autoscaled group or for each of the instances
185 (if you are using gce_instance resource type). If multiple
186 TimeSeries are returned upon the query execution, the autoscaler
187 will sum their respective values to obtain its scaling value.
188 type: string
189 name:
190 description: |-
191 The identifier (type) of the Stackdriver Monitoring metric.
192 The metric cannot have negative values.
193
194 The metric must have a value type of INT64 or DOUBLE.
195 type: string
196 singleInstanceAssignment:
197 description: |-
198 If scaling is based on a per-group metric value that represents the
199 total amount of work to be done or resource usage, set this value to
200 an amount assigned for a single instance of the scaled group.
201 The autoscaler will keep the number of instances proportional to the
202 value of this metric, the metric itself should not change value due
203 to group resizing.
204
205 For example, a good metric to use with the target is
206 'pubsub.googleapis.com/subscription/num_undelivered_messages'
207 or a custom metric exporting the total number of requests coming to
208 your instances.
209
210 A bad example would be a metric exporting an average or median
211 latency, since this value can't include a chunk assignable to a
212 single instance, it could be better used with utilization_target
213 instead.
214 type: number
215 target:
216 description: |-
217 The target value of the metric that autoscaler should
218 maintain. This must be a positive value. A utilization
219 metric scales number of virtual machines handling requests
220 to increase or decrease proportionally to the metric.
221
222 For example, a good metric to use as a utilizationTarget is
223 www.googleapis.com/compute/instance/network/received_bytes_count.
224 The autoscaler will work to keep this value constant for each
225 of the instances.
226 type: number
227 type:
228 description: |-
229 Defines how target utilization value is expressed for a
230 Stackdriver Monitoring metric. Possible values: ["GAUGE", "DELTA_PER_SECOND", "DELTA_PER_MINUTE"].
231 type: string
232 required:
233 - name
234 type: object
235 type: array
236 minReplicas:
237 description: |-
238 The minimum number of replicas that the autoscaler can scale down
239 to. This cannot be less than 0. If not provided, autoscaler will
240 choose a default value depending on maximum number of instances
241 allowed.
242 type: integer
243 mode:
244 description: 'Defines operating mode for this policy. Default
245 value: "ON" Possible values: ["OFF", "ONLY_UP", "ON"].'
246 type: string
247 scaleDownControl:
248 description: |-
249 Defines scale down controls to reduce the risk of response latency
250 and outages due to abrupt scale-in events.
251 properties:
252 maxScaledDownReplicas:
253 description: A nested object resource.
254 properties:
255 fixed:
256 description: |-
257 Specifies a fixed number of VM instances. This must be a positive
258 integer.
259 type: integer
260 percent:
261 description: |-
262 Specifies a percentage of instances between 0 to 100%, inclusive.
263 For example, specify 80 for 80%.
264 type: integer
265 type: object
266 timeWindowSec:
267 description: |-
268 How long back autoscaling should look when computing recommendations
269 to include directives regarding slower scale down, as described above.
270 type: integer
271 type: object
272 scaleInControl:
273 description: |-
274 Defines scale in controls to reduce the risk of response latency
275 and outages due to abrupt scale-in events.
276 properties:
277 maxScaledInReplicas:
278 description: A nested object resource.
279 properties:
280 fixed:
281 description: |-
282 Specifies a fixed number of VM instances. This must be a positive
283 integer.
284 type: integer
285 percent:
286 description: |-
287 Specifies a percentage of instances between 0 to 100%, inclusive.
288 For example, specify 80 for 80%.
289 type: integer
290 type: object
291 timeWindowSec:
292 description: |-
293 How long back autoscaling should look when computing recommendations
294 to include directives regarding slower scale down, as described above.
295 type: integer
296 type: object
297 scalingSchedules:
298 description: Scaling schedules defined for an autoscaler. Multiple
299 schedules can be set on an autoscaler and they can overlap.
300 items:
301 properties:
302 description:
303 description: A description of a scaling schedule.
304 type: string
305 disabled:
306 description: A boolean value that specifies if a scaling
307 schedule can influence autoscaler recommendations. If
308 set to true, then a scaling schedule has no effect.
309 type: boolean
310 durationSec:
311 description: The duration of time intervals (in seconds)
312 for which this scaling schedule will be running. The minimum
313 allowed value is 300.
314 type: integer
315 minRequiredReplicas:
316 description: Minimum number of VM instances that autoscaler
317 will recommend in time intervals starting according to
318 schedule.
319 type: integer
320 name:
321 type: string
322 schedule:
323 description: The start timestamps of time intervals when
324 this scaling schedule should provide a scaling signal.
325 This field uses the extended cron format (with an optional
326 year field).
327 type: string
328 timeZone:
329 description: 'The time zone to be used when interpreting
330 the schedule. The value of this field must be a time zone
331 name from the tz database: http://en.wikipedia.org/wiki/Tz_database.'
332 type: string
333 required:
334 - durationSec
335 - minRequiredReplicas
336 - name
337 - schedule
338 type: object
339 type: array
340 required:
341 - maxReplicas
342 - minReplicas
343 type: object
344 description:
345 description: An optional description of this resource.
346 type: string
347 projectRef:
348 description: The project that this resource belongs to.
349 oneOf:
350 - not:
351 required:
352 - external
353 required:
354 - name
355 - not:
356 anyOf:
357 - required:
358 - name
359 - required:
360 - namespace
361 required:
362 - external
363 properties:
364 external:
365 description: 'Allowed value: The `name` field of a `Project` resource.'
366 type: string
367 name:
368 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
369 type: string
370 namespace:
371 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
372 type: string
373 type: object
374 region:
375 description: Immutable. URL of the region where the instance group
376 resides.
377 type: string
378 resourceID:
379 description: Immutable. Optional. The name of the resource. Used for
380 creation and acquisition. When unset, the value of `metadata.name`
381 is used as the default.
382 type: string
383 target:
384 description: URL of the managed instance group that this autoscaler
385 will scale.
386 type: string
387 required:
388 - autoscalingPolicy
389 - projectRef
390 - region
391 - target
392 type: object
393 status:
394 properties:
395 conditions:
396 description: Conditions represent the latest available observation
397 of the resource's current state.
398 items:
399 properties:
400 lastTransitionTime:
401 description: Last time the condition transitioned from one status
402 to another.
403 type: string
404 message:
405 description: Human-readable message indicating details about
406 last transition.
407 type: string
408 reason:
409 description: Unique, one-word, CamelCase reason for the condition's
410 last transition.
411 type: string
412 status:
413 description: Status is the status of the condition. Can be True,
414 False, Unknown.
415 type: string
416 type:
417 description: Type is the type of the condition.
418 type: string
419 type: object
420 type: array
421 creationTimestamp:
422 description: Creation timestamp in RFC3339 text format.
423 type: string
424 observedGeneration:
425 description: ObservedGeneration is the generation of the resource
426 that was most recently observed by the Config Connector controller.
427 If this is equal to metadata.generation, then that means that the
428 current reported status reflects the most recent desired state of
429 the resource.
430 type: integer
431 selfLink:
432 type: string
433 type: object
434 required:
435 - spec
436 type: object
437 served: true
438 storage: true
439 subresources:
440 status: {}
441status:
442 acceptedNames:
443 kind: ""
444 plural: ""
445 conditions: []
446 storedVersions: []
View as plain text