|
18 | 18 | "expireAfter": {
|
19 | 19 | "default": "720h",
|
20 | 20 | "description": "ExpireAfter is the duration the controller will wait\nbefore terminating a node, measured from when the node is created. This\nis useful to implement features like eventually consistent node upgrade,\nmemory leak protection, and disruption testing.",
|
21 |
| - "pattern": "^(([0-9]+(s|m|h))+)|(Never)$", |
| 21 | + "pattern": "^(([0-9]+(s|m|h))+|Never)$", |
22 | 22 | "type": "string"
|
23 | 23 | },
|
24 | 24 | "nodeClassRef": {
|
|
27 | 27 | "group": {
|
28 | 28 | "description": "API version of the referent",
|
29 | 29 | "pattern": "^[^/]*$",
|
30 |
| - "type": "string" |
| 30 | + "type": "string", |
| 31 | + "x-kubernetes-validations": [ |
| 32 | + { |
| 33 | + "message": "group may not be empty", |
| 34 | + "rule": "self != ''" |
| 35 | + } |
| 36 | + ] |
31 | 37 | },
|
32 | 38 | "kind": {
|
33 | 39 | "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"",
|
34 |
| - "type": "string" |
| 40 | + "type": "string", |
| 41 | + "x-kubernetes-validations": [ |
| 42 | + { |
| 43 | + "message": "kind may not be empty", |
| 44 | + "rule": "self != ''" |
| 45 | + } |
| 46 | + ] |
35 | 47 | },
|
36 | 48 | "name": {
|
37 | 49 | "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
|
38 |
| - "type": "string" |
| 50 | + "type": "string", |
| 51 | + "x-kubernetes-validations": [ |
| 52 | + { |
| 53 | + "message": "name may not be empty", |
| 54 | + "rule": "self != ''" |
| 55 | + } |
| 56 | + ] |
39 | 57 | }
|
40 | 58 | },
|
41 | 59 | "required": [
|
|
75 | 93 | },
|
76 | 94 | {
|
77 | 95 | "message": "label domain \"karpenter.k8s.aws\" is restricted",
|
78 |
| - "rule": "self in [\"karpenter.k8s.aws/instance-encryption-in-transit-supported\", \"karpenter.k8s.aws/instance-category\", \"karpenter.k8s.aws/instance-hypervisor\", \"karpenter.k8s.aws/instance-family\", \"karpenter.k8s.aws/instance-generation\", \"karpenter.k8s.aws/instance-local-nvme\", \"karpenter.k8s.aws/instance-size\", \"karpenter.k8s.aws/instance-cpu\",\"karpenter.k8s.aws/instance-cpu-manufacturer\",\"karpenter.k8s.aws/instance-memory\", \"karpenter.k8s.aws/instance-ebs-bandwidth\", \"karpenter.k8s.aws/instance-network-bandwidth\", \"karpenter.k8s.aws/instance-gpu-name\", \"karpenter.k8s.aws/instance-gpu-manufacturer\", \"karpenter.k8s.aws/instance-gpu-count\", \"karpenter.k8s.aws/instance-gpu-memory\", \"karpenter.k8s.aws/instance-accelerator-name\", \"karpenter.k8s.aws/instance-accelerator-manufacturer\", \"karpenter.k8s.aws/instance-accelerator-count\"] || !self.find(\"^([^/]+)\").endsWith(\"karpenter.k8s.aws\")" |
| 96 | + "rule": "self in [\"karpenter.k8s.aws/capacity-reservation-id\", \"karpenter.k8s.aws/ec2nodeclass\", \"karpenter.k8s.aws/instance-encryption-in-transit-supported\", \"karpenter.k8s.aws/instance-category\", \"karpenter.k8s.aws/instance-hypervisor\", \"karpenter.k8s.aws/instance-family\", \"karpenter.k8s.aws/instance-generation\", \"karpenter.k8s.aws/instance-local-nvme\", \"karpenter.k8s.aws/instance-size\", \"karpenter.k8s.aws/instance-cpu\", \"karpenter.k8s.aws/instance-cpu-manufacturer\", \"karpenter.k8s.aws/instance-cpu-sustained-clock-speed-mhz\", \"karpenter.k8s.aws/instance-memory\", \"karpenter.k8s.aws/instance-ebs-bandwidth\", \"karpenter.k8s.aws/instance-network-bandwidth\", \"karpenter.k8s.aws/instance-gpu-name\", \"karpenter.k8s.aws/instance-gpu-manufacturer\", \"karpenter.k8s.aws/instance-gpu-count\", \"karpenter.k8s.aws/instance-gpu-memory\", \"karpenter.k8s.aws/instance-accelerator-name\", \"karpenter.k8s.aws/instance-accelerator-manufacturer\", \"karpenter.k8s.aws/instance-accelerator-count\"] || !self.find(\"^([^/]+)\").endsWith(\"karpenter.k8s.aws\")" |
79 | 97 | }
|
80 | 98 | ]
|
81 | 99 | },
|
|
236 | 254 | "type": "array"
|
237 | 255 | },
|
238 | 256 | "terminationGracePeriod": {
|
239 |
| - "description": "TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.\n\n\nWarning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.\n\n\nThis field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.\nWhen set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.\n\n\nKarpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.\nIf a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,\nthat pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.\n\n\nThe feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.\nIf left undefined, the controller will wait indefinitely for pods to be drained.", |
| 257 | + "description": "TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.\n\nWarning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.\n\nThis field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.\nWhen set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.\n\nKarpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.\nIf a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,\nthat pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.\n\nThe feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.\nIf left undefined, the controller will wait indefinitely for pods to be drained.", |
240 | 258 | "pattern": "^([0-9]+(s|m|h))+$",
|
241 | 259 | "type": "string"
|
242 | 260 | }
|
|
326 | 344 | "type": "string"
|
327 | 345 | },
|
328 | 346 | "type": {
|
329 |
| - "description": "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", |
| 347 | + "description": "type of condition in CamelCase or in foo.example.com/CamelCase.", |
330 | 348 | "maxLength": 316,
|
331 | 349 | "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
|
332 | 350 | "type": "string"
|
|
0 commit comments