...
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: stable
24 cnrm.cloud.google.com/system: "true"
25 cnrm.cloud.google.com/tf2crd: "true"
26 name: containernodepools.container.cnrm.cloud.google.com
27spec:
28 group: container.cnrm.cloud.google.com
29 names:
30 categories:
31 - gcp
32 kind: ContainerNodePool
33 plural: containernodepools
34 shortNames:
35 - gcpcontainernodepool
36 - gcpcontainernodepools
37 singular: containernodepool
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 autoscaling:
75 description: Configuration required by cluster autoscaler to adjust
76 the size of the node pool to the current cluster usage. To disable
77 autoscaling, set minNodeCount and maxNodeCount to 0.
78 properties:
79 locationPolicy:
80 description: Location policy specifies the algorithm used when
81 scaling-up the node pool. "BALANCED" - Is a best effort policy
82 that aims to balance the sizes of available zones. "ANY" - Instructs
83 the cluster autoscaler to prioritize utilization of unused reservations,
84 and reduces preemption risk for Spot VMs.
85 type: string
86 maxNodeCount:
87 description: Maximum number of nodes per zone in the node pool.
88 Must be >= min_node_count. Cannot be used with total limits.
89 type: integer
90 minNodeCount:
91 description: Minimum number of nodes per zone in the node pool.
92 Must be >=0 and <= max_node_count. Cannot be used with total
93 limits.
94 type: integer
95 totalMaxNodeCount:
96 description: Maximum number of all nodes in the node pool. Must
97 be >= total_min_node_count. Cannot be used with per zone limits.
98 type: integer
99 totalMinNodeCount:
100 description: Minimum number of all nodes in the node pool. Must
101 be >=0 and <= total_max_node_count. Cannot be used with per
102 zone limits.
103 type: integer
104 type: object
105 clusterRef:
106 oneOf:
107 - not:
108 required:
109 - external
110 required:
111 - name
112 - not:
113 anyOf:
114 - required:
115 - name
116 - required:
117 - namespace
118 required:
119 - external
120 properties:
121 external:
122 description: 'Allowed value: The `name` field of a `ContainerCluster`
123 resource.'
124 type: string
125 name:
126 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
127 type: string
128 namespace:
129 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
130 type: string
131 type: object
132 initialNodeCount:
133 description: Immutable. The initial number of nodes for the pool.
134 In regional or multi-zonal clusters, this is the number of nodes
135 per zone. Changing this will force recreation of the resource.
136 type: integer
137 location:
138 description: Immutable. The location (region or zone) of the cluster.
139 type: string
140 management:
141 description: Node management configuration, wherein auto-repair and
142 auto-upgrade is configured.
143 properties:
144 autoRepair:
145 description: Whether the nodes will be automatically repaired.
146 type: boolean
147 autoUpgrade:
148 description: Whether the nodes will be automatically upgraded.
149 type: boolean
150 type: object
151 maxPodsPerNode:
152 description: Immutable. The maximum number of pods per node in this
153 node pool. Note that this does not work on node pools which are
154 "route-based" - that is, node pools belonging to clusters that do
155 not have IP Aliasing enabled.
156 type: integer
157 namePrefix:
158 description: Immutable. Creates a unique name for the node pool beginning
159 with the specified prefix. Conflicts with name.
160 type: string
161 networkConfig:
162 description: Networking configuration for this NodePool. If specified,
163 it overrides the cluster-level defaults.
164 properties:
165 createPodRange:
166 description: Immutable. Whether to create a new range for pod
167 IPs in this node pool. Defaults are provided for pod_range and
168 pod_ipv4_cidr_block if they are not specified.
169 type: boolean
170 enablePrivateNodes:
171 description: Whether nodes have internal IP addresses only.
172 type: boolean
173 podCidrOverprovisionConfig:
174 description: Immutable. Configuration for node-pool level pod
175 cidr overprovision. If not set, the cluster level setting will
176 be inherited.
177 properties:
178 disabled:
179 type: boolean
180 required:
181 - disabled
182 type: object
183 podIpv4CidrBlock:
184 description: Immutable. The IP address range for pod IPs in this
185 node pool. Only applicable if create_pod_range is true. Set
186 to blank to have a range chosen with the default size. Set to
187 /netmask (e.g. /14) to have a range chosen with a specific netmask.
188 Set to a CIDR notation (e.g. 10.96.0.0/14) to pick a specific
189 range to use.
190 type: string
191 podRange:
192 description: Immutable. The ID of the secondary range for pod
193 IPs. If create_pod_range is true, this ID is used for the new
194 range. If create_pod_range is false, uses an existing secondary
195 range with this ID.
196 type: string
197 type: object
198 nodeConfig:
199 description: Immutable. The configuration of the nodepool.
200 properties:
201 advancedMachineFeatures:
202 description: Immutable. Specifies options for controlling advanced
203 machine features.
204 properties:
205 threadsPerCore:
206 description: Immutable. The number of threads per physical
207 core. To disable simultaneous multithreading (SMT) set this
208 to 1. If unset, the maximum number of threads supported
209 per core by the underlying processor is assumed.
210 type: integer
211 required:
212 - threadsPerCore
213 type: object
214 bootDiskKMSCryptoKeyRef:
215 oneOf:
216 - not:
217 required:
218 - external
219 required:
220 - name
221 - not:
222 anyOf:
223 - required:
224 - name
225 - required:
226 - namespace
227 required:
228 - external
229 properties:
230 external:
231 description: 'Allowed value: The `selfLink` field of a `KMSCryptoKey`
232 resource.'
233 type: string
234 name:
235 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
236 type: string
237 namespace:
238 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
239 type: string
240 type: object
241 diskSizeGb:
242 description: Immutable. Size of the disk attached to each node,
243 specified in GB. The smallest allowed disk size is 10GB.
244 type: integer
245 diskType:
246 description: Immutable. Type of the disk attached to each node.
247 Such as pd-standard, pd-balanced or pd-ssd.
248 type: string
249 ephemeralStorageConfig:
250 description: Immutable. Parameters for the ephemeral storage filesystem.
251 If unspecified, ephemeral storage is backed by the boot disk.
252 properties:
253 localSsdCount:
254 description: Immutable. Number of local SSDs to use to back
255 ephemeral storage. Uses NVMe interfaces. Each local SSD
256 must be 375 or 3000 GB in size, and all local SSDs must
257 share the same size.
258 type: integer
259 required:
260 - localSsdCount
261 type: object
262 ephemeralStorageLocalSsdConfig:
263 description: Immutable. Parameters for the ephemeral storage filesystem.
264 If unspecified, ephemeral storage is backed by the boot disk.
265 properties:
266 localSsdCount:
267 description: Immutable. Number of local SSDs to use to back
268 ephemeral storage. Uses NVMe interfaces. Each local SSD
269 must be 375 or 3000 GB in size, and all local SSDs must
270 share the same size.
271 type: integer
272 required:
273 - localSsdCount
274 type: object
275 gcfsConfig:
276 description: Immutable. GCFS configuration for this node.
277 properties:
278 enabled:
279 description: Immutable. Whether or not GCFS is enabled.
280 type: boolean
281 required:
282 - enabled
283 type: object
284 guestAccelerator:
285 description: Immutable. List of the type and count of accelerator
286 cards attached to the instance.
287 items:
288 properties:
289 count:
290 description: Immutable. The number of the accelerator cards
291 exposed to an instance.
292 type: integer
293 gpuPartitionSize:
294 description: Immutable. Size of partitions to create on
295 the GPU. Valid values are described in the NVIDIA mig
296 user guide (https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
297 type: string
298 gpuSharingConfig:
299 description: Immutable. Configuration for GPU sharing.
300 properties:
301 gpuSharingStrategy:
302 description: Immutable. The type of GPU sharing strategy
303 to enable on the GPU node. Possible values are described
304 in the API package (https://pkg.go.dev/google.golang.org/api/container/v1#GPUSharingConfig).
305 type: string
306 maxSharedClientsPerGpu:
307 description: Immutable. The maximum number of containers
308 that can share a GPU.
309 type: integer
310 required:
311 - gpuSharingStrategy
312 - maxSharedClientsPerGpu
313 type: object
314 type:
315 description: Immutable. The accelerator type resource name.
316 type: string
317 required:
318 - count
319 - type
320 type: object
321 type: array
322 gvnic:
323 description: Immutable. Enable or disable gvnic in the node pool.
324 properties:
325 enabled:
326 description: Immutable. Whether or not gvnic is enabled.
327 type: boolean
328 required:
329 - enabled
330 type: object
331 imageType:
332 description: The image type to use for this node. Note that for
333 a given image type, the latest version of it will be used.
334 type: string
335 kubeletConfig:
336 description: Node kubelet configs.
337 properties:
338 cpuCfsQuota:
339 description: Enable CPU CFS quota enforcement for containers
340 that specify CPU limits.
341 type: boolean
342 cpuCfsQuotaPeriod:
343 description: Set the CPU CFS quota period value 'cpu.cfs_period_us'.
344 type: string
345 cpuManagerPolicy:
346 description: Control the CPU management policy on the node.
347 type: string
348 podPidsLimit:
349 description: Controls the maximum number of processes allowed
350 to run in a pod.
351 type: integer
352 required:
353 - cpuManagerPolicy
354 type: object
355 labels:
356 additionalProperties:
357 type: string
358 description: The map of Kubernetes labels (key/value pairs) to
359 be applied to each node. These will added in addition to any
360 default label(s) that Kubernetes may apply to the node.
361 type: object
362 linuxNodeConfig:
363 description: Parameters that can be configured on Linux nodes.
364 properties:
365 sysctls:
366 additionalProperties:
367 type: string
368 description: The Linux kernel parameters to be applied to
369 the nodes and all pods running on the nodes.
370 type: object
371 required:
372 - sysctls
373 type: object
374 localNvmeSsdBlockConfig:
375 description: Immutable. Parameters for raw-block local NVMe SSDs.
376 properties:
377 localSsdCount:
378 description: Immutable. Number of raw-block local NVMe SSD
379 disks to be attached to the node. Each local SSD is 375
380 GB in size.
381 type: integer
382 required:
383 - localSsdCount
384 type: object
385 localSsdCount:
386 description: Immutable. The number of local SSD disks to be attached
387 to the node.
388 type: integer
389 loggingVariant:
390 description: Type of logging agent that is used as the default
391 value for node pools in the cluster. Valid values include DEFAULT
392 and MAX_THROUGHPUT.
393 type: string
394 machineType:
395 description: Immutable. The name of a Google Compute Engine machine
396 type.
397 type: string
398 metadata:
399 additionalProperties:
400 type: string
401 description: Immutable. The metadata key/value pairs assigned
402 to instances in the cluster.
403 type: object
404 minCpuPlatform:
405 description: Immutable. Minimum CPU platform to be used by this
406 instance. The instance may be scheduled on the specified or
407 newer CPU platform.
408 type: string
409 nodeGroupRef:
410 description: |-
411 Immutable. Setting this field will assign instances
412 of this pool to run on the specified node group. This is useful
413 for running workloads on sole tenant nodes.
414 oneOf:
415 - not:
416 required:
417 - external
418 required:
419 - name
420 - not:
421 anyOf:
422 - required:
423 - name
424 - required:
425 - namespace
426 required:
427 - external
428 properties:
429 external:
430 description: 'Allowed value: The `name` field of a `ComputeNodeGroup`
431 resource.'
432 type: string
433 name:
434 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
435 type: string
436 namespace:
437 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
438 type: string
439 type: object
440 oauthScopes:
441 description: Immutable. The set of Google API scopes to be made
442 available on all of the node VMs.
443 items:
444 type: string
445 type: array
446 preemptible:
447 description: Immutable. Whether the nodes are created as preemptible
448 VM instances.
449 type: boolean
450 reservationAffinity:
451 description: Immutable. The reservation affinity configuration
452 for the node pool.
453 properties:
454 consumeReservationType:
455 description: Immutable. Corresponds to the type of reservation
456 consumption.
457 type: string
458 key:
459 description: Immutable. The label key of a reservation resource.
460 type: string
461 values:
462 description: Immutable. The label values of the reservation
463 resource.
464 items:
465 type: string
466 type: array
467 required:
468 - consumeReservationType
469 type: object
470 resourceLabels:
471 additionalProperties:
472 type: string
473 description: The GCE resource labels (a map of key/value pairs)
474 to be applied to the node pool.
475 type: object
476 sandboxConfig:
477 description: Immutable. Sandbox configuration for this node.
478 properties:
479 sandboxType:
480 description: Type of the sandbox to use for the node (e.g.
481 'gvisor').
482 type: string
483 required:
484 - sandboxType
485 type: object
486 serviceAccountRef:
487 oneOf:
488 - not:
489 required:
490 - external
491 required:
492 - name
493 - not:
494 anyOf:
495 - required:
496 - name
497 - required:
498 - namespace
499 required:
500 - external
501 properties:
502 external:
503 description: 'Allowed value: The `email` field of an `IAMServiceAccount`
504 resource.'
505 type: string
506 name:
507 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
508 type: string
509 namespace:
510 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
511 type: string
512 type: object
513 shieldedInstanceConfig:
514 description: Immutable. Shielded Instance options.
515 properties:
516 enableIntegrityMonitoring:
517 description: Immutable. Defines whether the instance has integrity
518 monitoring enabled.
519 type: boolean
520 enableSecureBoot:
521 description: Immutable. Defines whether the instance has Secure
522 Boot enabled.
523 type: boolean
524 type: object
525 spot:
526 description: Immutable. Whether the nodes are created as spot
527 VM instances.
528 type: boolean
529 tags:
530 description: The list of instance tags applied to all nodes.
531 items:
532 type: string
533 type: array
534 taint:
535 description: Immutable. List of Kubernetes taints to be applied
536 to each node.
537 items:
538 properties:
539 effect:
540 description: Immutable. Effect for taint.
541 type: string
542 key:
543 description: Immutable. Key for taint.
544 type: string
545 value:
546 description: Immutable. Value for taint.
547 type: string
548 required:
549 - effect
550 - key
551 - value
552 type: object
553 type: array
554 workloadMetadataConfig:
555 description: The workload metadata configuration for this node.
556 properties:
557 mode:
558 description: Mode is the configuration for how to expose metadata
559 to workloads running on the node.
560 type: string
561 nodeMetadata:
562 description: DEPRECATED. Deprecated in favor of mode. NodeMetadata
563 is the configuration for how to expose metadata to the workloads
564 running on the node.
565 type: string
566 type: object
567 type: object
568 nodeCount:
569 description: The number of nodes per instance group. This field can
570 be used to update the number of nodes per instance group but should
571 not be used alongside autoscaling.
572 type: integer
573 nodeLocations:
574 description: The list of zones in which the node pool's nodes should
575 be located. Nodes must be in the region of their regional cluster
576 or in the same region as their cluster's zone for zonal clusters.
577 If unspecified, the cluster-level node_locations will be used.
578 items:
579 type: string
580 type: array
581 placementPolicy:
582 description: Immutable. Specifies the node placement policy.
583 properties:
584 type:
585 description: Type defines the type of placement policy.
586 type: string
587 required:
588 - type
589 type: object
590 resourceID:
591 description: Immutable. Optional. The name of the resource. Used for
592 creation and acquisition. When unset, the value of `metadata.name`
593 is used as the default.
594 type: string
595 upgradeSettings:
596 description: Specify node upgrade settings to change how many nodes
597 GKE attempts to upgrade at once. The number of nodes upgraded simultaneously
598 is the sum of max_surge and max_unavailable. The maximum number
599 of nodes upgraded simultaneously is limited to 20.
600 properties:
601 blueGreenSettings:
602 description: Settings for BlueGreen node pool upgrade.
603 properties:
604 nodePoolSoakDuration:
605 description: Time needed after draining entire blue pool.
606 After this period, blue pool will be cleaned up.
607 type: string
608 standardRolloutPolicy:
609 description: Standard rollout policy is the default policy
610 for blue-green.
611 properties:
612 batchNodeCount:
613 description: Number of blue nodes to drain in a batch.
614 type: integer
615 batchPercentage:
616 description: Percentage of the blue pool nodes to drain
617 in a batch.
618 type: number
619 batchSoakDuration:
620 description: Soak time after each batch gets drained.
621 type: string
622 type: object
623 required:
624 - standardRolloutPolicy
625 type: object
626 maxSurge:
627 description: The number of additional nodes that can be added
628 to the node pool during an upgrade. Increasing max_surge raises
629 the number of nodes that can be upgraded simultaneously. Can
630 be set to 0 or greater.
631 type: integer
632 maxUnavailable:
633 description: The number of nodes that can be simultaneously unavailable
634 during an upgrade. Increasing max_unavailable raises the number
635 of nodes that can be upgraded in parallel. Can be set to 0 or
636 greater.
637 type: integer
638 strategy:
639 description: Update strategy for the given nodepool.
640 type: string
641 type: object
642 version:
643 type: string
644 required:
645 - clusterRef
646 - location
647 type: object
648 status:
649 properties:
650 conditions:
651 description: Conditions represent the latest available observation
652 of the resource's current state.
653 items:
654 properties:
655 lastTransitionTime:
656 description: Last time the condition transitioned from one status
657 to another.
658 type: string
659 message:
660 description: Human-readable message indicating details about
661 last transition.
662 type: string
663 reason:
664 description: Unique, one-word, CamelCase reason for the condition's
665 last transition.
666 type: string
667 status:
668 description: Status is the status of the condition. Can be True,
669 False, Unknown.
670 type: string
671 type:
672 description: Type is the type of the condition.
673 type: string
674 type: object
675 type: array
676 instanceGroupUrls:
677 description: The resource URLs of the managed instance groups associated
678 with this node pool.
679 items:
680 type: string
681 type: array
682 managedInstanceGroupUrls:
683 description: List of instance group URLs which have been assigned
684 to this node pool.
685 items:
686 type: string
687 type: array
688 observedGeneration:
689 description: ObservedGeneration is the generation of the resource
690 that was most recently observed by the Config Connector controller.
691 If this is equal to metadata.generation, then that means that the
692 current reported status reflects the most recent desired state of
693 the resource.
694 type: integer
695 operation:
696 type: string
697 type: object
698 required:
699 - spec
700 type: object
701 served: true
702 storage: true
703 subresources:
704 status: {}
705status:
706 acceptedNames:
707 kind: ""
708 plural: ""
709 conditions: []
710 storedVersions: []
View as plain text