pulumi-eks 4.3.0a1768463252__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pulumi_eks/_inputs.py ADDED
@@ -0,0 +1,3445 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by pulumi-gen-eks. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins as _builtins
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from . import _utilities
16
+ from ._enums import *
17
+ from .vpc_cni_addon import VpcCniAddon
18
+ import pulumi_aws
19
+ import pulumi_kubernetes
20
+
21
+ __all__ = [
22
+ 'AccessEntryArgs',
23
+ 'AccessEntryArgsDict',
24
+ 'AccessPolicyAssociationArgs',
25
+ 'AccessPolicyAssociationArgsDict',
26
+ 'AutoModeOptionsArgs',
27
+ 'AutoModeOptionsArgsDict',
28
+ 'ClusterComputeConfigArgs',
29
+ 'ClusterComputeConfigArgsDict',
30
+ 'ClusterNodeGroupOptionsArgs',
31
+ 'ClusterNodeGroupOptionsArgsDict',
32
+ 'CoreDataArgs',
33
+ 'CoreDataArgsDict',
34
+ 'CoreDnsAddonOptionsArgs',
35
+ 'CoreDnsAddonOptionsArgsDict',
36
+ 'CreationRoleProviderArgs',
37
+ 'CreationRoleProviderArgsDict',
38
+ 'FargateProfileArgs',
39
+ 'FargateProfileArgsDict',
40
+ 'KubeProxyAddonOptionsArgs',
41
+ 'KubeProxyAddonOptionsArgsDict',
42
+ 'KubeconfigOptionsArgs',
43
+ 'KubeconfigOptionsArgsDict',
44
+ 'NodeadmOptionsArgs',
45
+ 'NodeadmOptionsArgsDict',
46
+ 'RoleMappingArgs',
47
+ 'RoleMappingArgsDict',
48
+ 'StorageClassArgs',
49
+ 'StorageClassArgsDict',
50
+ 'TaintArgs',
51
+ 'TaintArgsDict',
52
+ 'UserMappingArgs',
53
+ 'UserMappingArgsDict',
54
+ 'VpcCniOptionsArgs',
55
+ 'VpcCniOptionsArgsDict',
56
+ ]
57
+
58
+ MYPY = False
59
+
60
+ if not MYPY:
61
+ class AccessEntryArgsDict(TypedDict):
62
+ """
63
+ Access entries allow an IAM principal to access your cluster.
64
+
65
+ You have the following options for authorizing an IAM principal to access Kubernetes objects on your cluster: Kubernetes role-based access control (RBAC), Amazon EKS, or both.
66
+ Kubernetes RBAC authorization requires you to create and manage Kubernetes Role , ClusterRole , RoleBinding , and ClusterRoleBinding objects, in addition to managing access entries. If you use Amazon EKS authorization exclusively, you don't need to create and manage Kubernetes Role , ClusterRole , RoleBinding , and ClusterRoleBinding objects.
67
+ """
68
+ principal_arn: pulumi.Input[_builtins.str]
69
+ """
70
+ The IAM Principal ARN which requires Authentication access to the EKS cluster.
71
+ """
72
+ access_policies: NotRequired[Mapping[str, pulumi.Input['AccessPolicyAssociationArgsDict']]]
73
+ """
74
+ The access policies to associate to the access entry.
75
+ """
76
+ kubernetes_groups: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
77
+ """
78
+ A list of groups within Kubernetes to which the IAM principal is mapped to.
79
+ """
80
+ tags: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
81
+ """
82
+ The tags to apply to the AccessEntry.
83
+ """
84
+ type: NotRequired[pulumi.Input['AccessEntryType']]
85
+ """
86
+ The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS.
87
+ Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
88
+ """
89
+ username: NotRequired[pulumi.Input[_builtins.str]]
90
+ """
91
+ Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
92
+ """
93
+ elif False:
94
+ AccessEntryArgsDict: TypeAlias = Mapping[str, Any]
95
+
96
+ @pulumi.input_type
97
+ class AccessEntryArgs:
98
+ def __init__(__self__, *,
99
+ principal_arn: pulumi.Input[_builtins.str],
100
+ access_policies: Optional[Mapping[str, pulumi.Input['AccessPolicyAssociationArgs']]] = None,
101
+ kubernetes_groups: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
102
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
103
+ type: Optional[pulumi.Input['AccessEntryType']] = None,
104
+ username: Optional[pulumi.Input[_builtins.str]] = None):
105
+ """
106
+ Access entries allow an IAM principal to access your cluster.
107
+
108
+ You have the following options for authorizing an IAM principal to access Kubernetes objects on your cluster: Kubernetes role-based access control (RBAC), Amazon EKS, or both.
109
+ Kubernetes RBAC authorization requires you to create and manage Kubernetes Role , ClusterRole , RoleBinding , and ClusterRoleBinding objects, in addition to managing access entries. If you use Amazon EKS authorization exclusively, you don't need to create and manage Kubernetes Role , ClusterRole , RoleBinding , and ClusterRoleBinding objects.
110
+ :param pulumi.Input[_builtins.str] principal_arn: The IAM Principal ARN which requires Authentication access to the EKS cluster.
111
+ :param Mapping[str, pulumi.Input['AccessPolicyAssociationArgs']] access_policies: The access policies to associate to the access entry.
112
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] kubernetes_groups: A list of groups within Kubernetes to which the IAM principal is mapped to.
113
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] tags: The tags to apply to the AccessEntry.
114
+ :param pulumi.Input['AccessEntryType'] type: The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS.
115
+ Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
116
+ :param pulumi.Input[_builtins.str] username: Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
117
+ """
118
+ pulumi.set(__self__, "principal_arn", principal_arn)
119
+ if access_policies is not None:
120
+ pulumi.set(__self__, "access_policies", access_policies)
121
+ if kubernetes_groups is not None:
122
+ pulumi.set(__self__, "kubernetes_groups", kubernetes_groups)
123
+ if tags is not None:
124
+ pulumi.set(__self__, "tags", tags)
125
+ if type is not None:
126
+ pulumi.set(__self__, "type", type)
127
+ if username is not None:
128
+ pulumi.set(__self__, "username", username)
129
+
130
+ @_builtins.property
131
+ @pulumi.getter(name="principalArn")
132
+ def principal_arn(self) -> pulumi.Input[_builtins.str]:
133
+ """
134
+ The IAM Principal ARN which requires Authentication access to the EKS cluster.
135
+ """
136
+ return pulumi.get(self, "principal_arn")
137
+
138
+ @principal_arn.setter
139
+ def principal_arn(self, value: pulumi.Input[_builtins.str]):
140
+ pulumi.set(self, "principal_arn", value)
141
+
142
+ @_builtins.property
143
+ @pulumi.getter(name="accessPolicies")
144
+ def access_policies(self) -> Optional[Mapping[str, pulumi.Input['AccessPolicyAssociationArgs']]]:
145
+ """
146
+ The access policies to associate to the access entry.
147
+ """
148
+ return pulumi.get(self, "access_policies")
149
+
150
+ @access_policies.setter
151
+ def access_policies(self, value: Optional[Mapping[str, pulumi.Input['AccessPolicyAssociationArgs']]]):
152
+ pulumi.set(self, "access_policies", value)
153
+
154
+ @_builtins.property
155
+ @pulumi.getter(name="kubernetesGroups")
156
+ def kubernetes_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
157
+ """
158
+ A list of groups within Kubernetes to which the IAM principal is mapped to.
159
+ """
160
+ return pulumi.get(self, "kubernetes_groups")
161
+
162
+ @kubernetes_groups.setter
163
+ def kubernetes_groups(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
164
+ pulumi.set(self, "kubernetes_groups", value)
165
+
166
+ @_builtins.property
167
+ @pulumi.getter
168
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
169
+ """
170
+ The tags to apply to the AccessEntry.
171
+ """
172
+ return pulumi.get(self, "tags")
173
+
174
+ @tags.setter
175
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
176
+ pulumi.set(self, "tags", value)
177
+
178
+ @_builtins.property
179
+ @pulumi.getter
180
+ def type(self) -> Optional[pulumi.Input['AccessEntryType']]:
181
+ """
182
+ The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS.
183
+ Defaults to STANDARD which provides the standard workflow. EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX types disallow users to input a username or kubernetesGroup, and prevent associating access policies.
184
+ """
185
+ return pulumi.get(self, "type")
186
+
187
+ @type.setter
188
+ def type(self, value: Optional[pulumi.Input['AccessEntryType']]):
189
+ pulumi.set(self, "type", value)
190
+
191
+ @_builtins.property
192
+ @pulumi.getter
193
+ def username(self) -> Optional[pulumi.Input[_builtins.str]]:
194
+ """
195
+ Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
196
+ """
197
+ return pulumi.get(self, "username")
198
+
199
+ @username.setter
200
+ def username(self, value: Optional[pulumi.Input[_builtins.str]]):
201
+ pulumi.set(self, "username", value)
202
+
203
+
204
+ if not MYPY:
205
+ class AccessPolicyAssociationArgsDict(TypedDict):
206
+ """
207
+ Associates an access policy and its scope to an IAM principal.
208
+
209
+ See for more details:
210
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
211
+ """
212
+ access_scope: pulumi.Input['pulumi_aws.eks.AccessPolicyAssociationAccessScopeArgsDict']
213
+ """
214
+ The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace.
215
+ """
216
+ policy_arn: pulumi.Input[_builtins.str]
217
+ """
218
+ The ARN of the access policy to associate with the principal
219
+ """
220
+ elif False:
221
+ AccessPolicyAssociationArgsDict: TypeAlias = Mapping[str, Any]
222
+
223
+ @pulumi.input_type
224
+ class AccessPolicyAssociationArgs:
225
+ def __init__(__self__, *,
226
+ access_scope: pulumi.Input['pulumi_aws.eks.AccessPolicyAssociationAccessScopeArgs'],
227
+ policy_arn: pulumi.Input[_builtins.str]):
228
+ """
229
+ Associates an access policy and its scope to an IAM principal.
230
+
231
+ See for more details:
232
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
233
+ :param pulumi.Input['pulumi_aws.eks.AccessPolicyAssociationAccessScopeArgs'] access_scope: The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace.
234
+ :param pulumi.Input[_builtins.str] policy_arn: The ARN of the access policy to associate with the principal
235
+ """
236
+ pulumi.set(__self__, "access_scope", access_scope)
237
+ pulumi.set(__self__, "policy_arn", policy_arn)
238
+
239
+ @_builtins.property
240
+ @pulumi.getter(name="accessScope")
241
+ def access_scope(self) -> pulumi.Input['pulumi_aws.eks.AccessPolicyAssociationAccessScopeArgs']:
242
+ """
243
+ The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace.
244
+ """
245
+ return pulumi.get(self, "access_scope")
246
+
247
+ @access_scope.setter
248
+ def access_scope(self, value: pulumi.Input['pulumi_aws.eks.AccessPolicyAssociationAccessScopeArgs']):
249
+ pulumi.set(self, "access_scope", value)
250
+
251
+ @_builtins.property
252
+ @pulumi.getter(name="policyArn")
253
+ def policy_arn(self) -> pulumi.Input[_builtins.str]:
254
+ """
255
+ The ARN of the access policy to associate with the principal
256
+ """
257
+ return pulumi.get(self, "policy_arn")
258
+
259
+ @policy_arn.setter
260
+ def policy_arn(self, value: pulumi.Input[_builtins.str]):
261
+ pulumi.set(self, "policy_arn", value)
262
+
263
+
264
+ if not MYPY:
265
+ class AutoModeOptionsArgsDict(TypedDict):
266
+ """
267
+ Configuration Options for EKS Auto Mode. If EKS Auto Mode is enabled, AWS will manage cluster infrastructure on your behalf.
268
+
269
+ For more information, see: https://docs.aws.amazon.com/eks/latest/userguide/automode.html
270
+ """
271
+ enabled: _builtins.bool
272
+ """
273
+ Whether to enable EKS Auto Mode. If enabled, EKS will manage node pools, EBS volumes and Load Balancers for you.
274
+ When enabled, the vpc-cni and kube-proxy will not be enabled by default because EKS Auto Mode includes pod networking capabilities.
275
+ """
276
+ compute_config: NotRequired[pulumi.Input['ClusterComputeConfigArgsDict']]
277
+ """
278
+ Compute configuration for EKS Auto Mode.
279
+ """
280
+ create_node_role: NotRequired[_builtins.bool]
281
+ """
282
+ Whether to create an IAM role for the EKS Auto Mode node group if none is provided in `computeConfig`.
283
+ """
284
+ elif False:
285
+ AutoModeOptionsArgsDict: TypeAlias = Mapping[str, Any]
286
+
287
+ @pulumi.input_type
288
+ class AutoModeOptionsArgs:
289
+ def __init__(__self__, *,
290
+ enabled: _builtins.bool,
291
+ compute_config: Optional[pulumi.Input['ClusterComputeConfigArgs']] = None,
292
+ create_node_role: Optional[_builtins.bool] = None):
293
+ """
294
+ Configuration Options for EKS Auto Mode. If EKS Auto Mode is enabled, AWS will manage cluster infrastructure on your behalf.
295
+
296
+ For more information, see: https://docs.aws.amazon.com/eks/latest/userguide/automode.html
297
+ :param _builtins.bool enabled: Whether to enable EKS Auto Mode. If enabled, EKS will manage node pools, EBS volumes and Load Balancers for you.
298
+ When enabled, the vpc-cni and kube-proxy will not be enabled by default because EKS Auto Mode includes pod networking capabilities.
299
+ :param pulumi.Input['ClusterComputeConfigArgs'] compute_config: Compute configuration for EKS Auto Mode.
300
+ :param _builtins.bool create_node_role: Whether to create an IAM role for the EKS Auto Mode node group if none is provided in `computeConfig`.
301
+ """
302
+ pulumi.set(__self__, "enabled", enabled)
303
+ if compute_config is not None:
304
+ pulumi.set(__self__, "compute_config", compute_config)
305
+ if create_node_role is None:
306
+ create_node_role = True
307
+ if create_node_role is not None:
308
+ pulumi.set(__self__, "create_node_role", create_node_role)
309
+
310
+ @_builtins.property
311
+ @pulumi.getter
312
+ def enabled(self) -> _builtins.bool:
313
+ """
314
+ Whether to enable EKS Auto Mode. If enabled, EKS will manage node pools, EBS volumes and Load Balancers for you.
315
+ When enabled, the vpc-cni and kube-proxy will not be enabled by default because EKS Auto Mode includes pod networking capabilities.
316
+ """
317
+ return pulumi.get(self, "enabled")
318
+
319
+ @enabled.setter
320
+ def enabled(self, value: _builtins.bool):
321
+ pulumi.set(self, "enabled", value)
322
+
323
+ @_builtins.property
324
+ @pulumi.getter(name="computeConfig")
325
+ def compute_config(self) -> Optional[pulumi.Input['ClusterComputeConfigArgs']]:
326
+ """
327
+ Compute configuration for EKS Auto Mode.
328
+ """
329
+ return pulumi.get(self, "compute_config")
330
+
331
+ @compute_config.setter
332
+ def compute_config(self, value: Optional[pulumi.Input['ClusterComputeConfigArgs']]):
333
+ pulumi.set(self, "compute_config", value)
334
+
335
+ @_builtins.property
336
+ @pulumi.getter(name="createNodeRole")
337
+ def create_node_role(self) -> Optional[_builtins.bool]:
338
+ """
339
+ Whether to create an IAM role for the EKS Auto Mode node group if none is provided in `computeConfig`.
340
+ """
341
+ return pulumi.get(self, "create_node_role")
342
+
343
+ @create_node_role.setter
344
+ def create_node_role(self, value: Optional[_builtins.bool]):
345
+ pulumi.set(self, "create_node_role", value)
346
+
347
+
348
+ if not MYPY:
349
+ class ClusterComputeConfigArgsDict(TypedDict):
350
+ """
351
+ Configuration for the compute capability of your EKS Auto Mode cluster.
352
+ """
353
+ node_pools: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
354
+ """
355
+ Configuration for node pools that defines the compute resources for your EKS Auto Mode cluster. Valid options are `general-purpose` and `system`.
356
+
357
+ By default, the built-in `system` and `general-purpose` nodepools are enabled.
358
+ """
359
+ node_role_arn: NotRequired[pulumi.Input[_builtins.str]]
360
+ """
361
+ The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled.
362
+ """
363
+ elif False:
364
+ ClusterComputeConfigArgsDict: TypeAlias = Mapping[str, Any]
365
+
366
+ @pulumi.input_type
367
+ class ClusterComputeConfigArgs:
368
+ def __init__(__self__, *,
369
+ node_pools: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
370
+ node_role_arn: Optional[pulumi.Input[_builtins.str]] = None):
371
+ """
372
+ Configuration for the compute capability of your EKS Auto Mode cluster.
373
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] node_pools: Configuration for node pools that defines the compute resources for your EKS Auto Mode cluster. Valid options are `general-purpose` and `system`.
374
+
375
+ By default, the built-in `system` and `general-purpose` nodepools are enabled.
376
+ :param pulumi.Input[_builtins.str] node_role_arn: The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled.
377
+ """
378
+ if node_pools is not None:
379
+ pulumi.set(__self__, "node_pools", node_pools)
380
+ if node_role_arn is not None:
381
+ pulumi.set(__self__, "node_role_arn", node_role_arn)
382
+
383
+ @_builtins.property
384
+ @pulumi.getter(name="nodePools")
385
+ def node_pools(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
386
+ """
387
+ Configuration for node pools that defines the compute resources for your EKS Auto Mode cluster. Valid options are `general-purpose` and `system`.
388
+
389
+ By default, the built-in `system` and `general-purpose` nodepools are enabled.
390
+ """
391
+ return pulumi.get(self, "node_pools")
392
+
393
+ @node_pools.setter
394
+ def node_pools(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
395
+ pulumi.set(self, "node_pools", value)
396
+
397
+ @_builtins.property
398
+ @pulumi.getter(name="nodeRoleArn")
399
+ def node_role_arn(self) -> Optional[pulumi.Input[_builtins.str]]:
400
+ """
401
+ The ARN of the IAM Role EKS will assign to EC2 Managed Instances in your EKS Auto Mode cluster. This value cannot be changed after the compute capability of EKS Auto Mode is enabled.
402
+ """
403
+ return pulumi.get(self, "node_role_arn")
404
+
405
+ @node_role_arn.setter
406
+ def node_role_arn(self, value: Optional[pulumi.Input[_builtins.str]]):
407
+ pulumi.set(self, "node_role_arn", value)
408
+
409
+
410
+ if not MYPY:
411
+ class ClusterNodeGroupOptionsArgsDict(TypedDict):
412
+ """
413
+ Describes the configuration options accepted by a cluster to create its own node groups.
414
+ """
415
+ ami_id: NotRequired[pulumi.Input[_builtins.str]]
416
+ """
417
+ The AMI ID to use for the worker nodes.
418
+
419
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
420
+
421
+ Note: `amiId` and `gpu` are mutually exclusive.
422
+
423
+ See for more details:
424
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
425
+ """
426
+ ami_type: NotRequired[pulumi.Input[_builtins.str]]
427
+ """
428
+ The AMI Type to use for the worker nodes.
429
+
430
+ Only applicable when setting an AMI ID that is of type `arm64`.
431
+
432
+ Note: `amiType` and `gpu` are mutually exclusive.
433
+ """
434
+ auto_scaling_group_tags: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
435
+ """
436
+ The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack.
437
+
438
+ Per AWS, all stack-level tags, including automatically created tags, and the `cloudFormationTags` option are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
439
+
440
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
441
+ """
442
+ bootstrap_extra_args: NotRequired[pulumi.Input[_builtins.str]]
443
+ """
444
+ Additional args to pass directly to `/etc/eks/bootstrap.sh`. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the `--apiserver-endpoint`, `--b64-cluster-ca` and `--kubelet-extra-args` flags are included automatically based on other configuration parameters.
445
+ """
446
+ bottlerocket_settings: NotRequired[pulumi.Input[Mapping[str, Any]]]
447
+ """
448
+ The configuration settings for Bottlerocket OS.
449
+ The settings will get merged with the base settings the provider uses to configure Bottlerocket.
450
+
451
+ This includes:
452
+ - settings.kubernetes.api-server
453
+ - settings.kubernetes.cluster-certificate
454
+ - settings.kubernetes.cluster-name
455
+ - settings.kubernetes.cluster-dns-ip
456
+
457
+ For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/.
458
+ """
459
+ cloud_formation_tags: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
460
+ """
461
+ The tags to apply to the CloudFormation Stack of the Worker NodeGroup.
462
+
463
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
464
+ """
465
+ cluster_ingress_rule: NotRequired[pulumi.Input['pulumi_aws.ec2.SecurityGroupRule']]
466
+ """
467
+ The ingress rule that gives node group access.
468
+ """
469
+ cluster_ingress_rule_id: NotRequired[pulumi.Input[_builtins.str]]
470
+ """
471
+ The ID of the ingress rule that gives node group access.
472
+ """
473
+ desired_capacity: NotRequired[pulumi.Input[_builtins.int]]
474
+ """
475
+ The number of worker nodes that should be running in the cluster. Defaults to 2.
476
+ """
477
+ enable_detailed_monitoring: NotRequired[pulumi.Input[_builtins.bool]]
478
+ """
479
+ Enables/disables detailed monitoring of the EC2 instances.
480
+
481
+ With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals.
482
+ When enabled, you can also get aggregated data across groups of similar instances.
483
+
484
+ Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage.
485
+ For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/.
486
+ """
487
+ encrypt_root_block_device: NotRequired[pulumi.Input[_builtins.bool]]
488
+ """
489
+ Encrypt the root block device of the nodes in the node group.
490
+ """
491
+ extra_node_security_groups: NotRequired[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]]]
492
+ """
493
+ Extra security groups to attach on all nodes in this worker node group.
494
+
495
+ This additional set of security groups captures any user application rules that will be needed for the nodes.
496
+ """
497
+ gpu: NotRequired[pulumi.Input[_builtins.bool]]
498
+ """
499
+ Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store.
500
+
501
+ Defaults to false.
502
+
503
+ Note: `gpu` and `amiId` are mutually exclusive.
504
+
505
+ See for more details:
506
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
507
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
508
+ """
509
+ ignore_scaling_changes: NotRequired[_builtins.bool]
510
+ """
511
+ Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler.
512
+
513
+ See [EKS best practices](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) for more details.
514
+ """
515
+ instance_profile: NotRequired['pulumi_aws.iam.InstanceProfile']
516
+ """
517
+ The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
518
+ """
519
+ instance_profile_name: NotRequired[pulumi.Input[_builtins.str]]
520
+ """
521
+ The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
522
+ """
523
+ instance_type: NotRequired[pulumi.Input[_builtins.str]]
524
+ """
525
+ The instance type to use for the cluster's nodes. Defaults to "t3.medium".
526
+ """
527
+ key_name: NotRequired[pulumi.Input[_builtins.str]]
528
+ """
529
+ Name of the key pair to use for SSH access to worker nodes.
530
+ """
531
+ kubelet_extra_args: NotRequired[pulumi.Input[_builtins.str]]
532
+ """
533
+ Extra args to pass to the Kubelet. Corresponds to the options passed in the `--kubeletExtraArgs` flag to `/etc/eks/bootstrap.sh`. For example, '--port=10251 --address=0.0.0.0'. Note that the `labels` and `taints` properties will be applied to this list (using `--node-labels` and `--register-with-taints` respectively) after to the explicit `kubeletExtraArgs`.
534
+ """
535
+ labels: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
536
+ """
537
+ Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the `--node-labels` kubelet argument.
538
+ """
539
+ launch_template_tag_specifications: NotRequired[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgsDict']]]]
540
+ """
541
+ The tag specifications to apply to the launch template.
542
+ """
543
+ max_size: NotRequired[pulumi.Input[_builtins.int]]
544
+ """
545
+ The maximum number of worker nodes running in the cluster. Defaults to 2.
546
+ """
547
+ min_refresh_percentage: NotRequired[pulumi.Input[_builtins.int]]
548
+ """
549
+ The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
550
+ """
551
+ min_size: NotRequired[pulumi.Input[_builtins.int]]
552
+ """
553
+ The minimum number of worker nodes running in the cluster. Defaults to 1.
554
+ """
555
+ node_associate_public_ip_address: NotRequired[pulumi.Input[_builtins.bool]]
556
+ """
557
+ Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
558
+ """
559
+ node_public_key: NotRequired[pulumi.Input[_builtins.str]]
560
+ """
561
+ Public key material for SSH access to worker nodes. See allowed formats at:
562
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
563
+ If not provided, no SSH access is enabled on VMs.
564
+ """
565
+ node_root_volume_delete_on_termination: NotRequired[pulumi.Input[_builtins.bool]]
566
+ """
567
+ Whether the root block device should be deleted on termination of the instance. Defaults to true.
568
+ """
569
+ node_root_volume_encrypted: NotRequired[pulumi.Input[_builtins.bool]]
570
+ """
571
+ Whether to encrypt a cluster node's root volume. Defaults to false.
572
+ """
573
+ node_root_volume_iops: NotRequired[pulumi.Input[_builtins.int]]
574
+ """
575
+ The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
576
+ """
577
+ node_root_volume_size: NotRequired[pulumi.Input[_builtins.int]]
578
+ """
579
+ The size in GiB of a cluster node's root volume. Defaults to 20.
580
+ """
581
+ node_root_volume_throughput: NotRequired[pulumi.Input[_builtins.int]]
582
+ """
583
+ Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
584
+ """
585
+ node_root_volume_type: NotRequired[pulumi.Input[_builtins.str]]
586
+ """
587
+ Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
588
+ """
589
+ node_security_group: NotRequired[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]
590
+ """
591
+ The security group for the worker node group to communicate with the cluster.
592
+
593
+ This security group requires specific inbound and outbound rules.
594
+
595
+ See for more details:
596
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
597
+
598
+ Note: The `nodeSecurityGroup` option and the cluster option`nodeSecurityGroupTags` are mutually exclusive.
599
+ """
600
+ node_security_group_id: NotRequired[pulumi.Input[_builtins.str]]
601
+ """
602
+ The ID of the security group for the worker node group to communicate with the cluster.
603
+
604
+ This security group requires specific inbound and outbound rules.
605
+
606
+ See for more details:
607
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
608
+
609
+ Note: The `nodeSecurityGroupId` option and the cluster option `nodeSecurityGroupTags` are mutually exclusive.
610
+ """
611
+ node_subnet_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
612
+ """
613
+ The set of subnets to override and use for the worker node group.
614
+
615
+ Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's `subnetIds` is set, or if `publicSubnetIds` and/or `privateSubnetIds` were set.
616
+ """
617
+ node_user_data: NotRequired[pulumi.Input[_builtins.str]]
618
+ """
619
+ Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a `#!`).
620
+ """
621
+ node_user_data_override: NotRequired[pulumi.Input[_builtins.str]]
622
+ """
623
+ User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows).
624
+
625
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html
626
+ """
627
+ nodeadm_extra_options: NotRequired[pulumi.Input[Sequence[pulumi.Input['NodeadmOptionsArgsDict']]]]
628
+ """
629
+ Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way.
630
+ The base settings the provider sets are:
631
+ - cluster.name
632
+ - cluster.apiServerEndpoint
633
+ - cluster.certificateAuthority
634
+ - cluster.cidr
635
+
636
+ Note: This is only applicable when using AL2023.
637
+ See for more details:
638
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/
639
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
640
+ """
641
+ operating_system: NotRequired[pulumi.Input['OperatingSystem']]
642
+ """
643
+ The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration.
644
+ Valid values are `RECOMMENDED`, `AL2`, `AL2023` and `Bottlerocket`.
645
+
646
+ Defaults to the current recommended OS.
647
+ """
648
+ spot_price: NotRequired[pulumi.Input[_builtins.str]]
649
+ """
650
+ Bidding price for spot instance. If set, only spot instances will be added as worker node.
651
+ """
652
+ taints: NotRequired[pulumi.Input[Mapping[str, pulumi.Input['TaintArgsDict']]]]
653
+ """
654
+ Custom k8s node taints to be attached to each worker node. Adds the given taints to the `--register-with-taints` kubelet argument
655
+ """
656
+ version: NotRequired[pulumi.Input[_builtins.str]]
657
+ """
658
+ Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
659
+ """
660
+ elif False:
661
+ ClusterNodeGroupOptionsArgsDict: TypeAlias = Mapping[str, Any]
662
+
663
+ @pulumi.input_type
664
+ class ClusterNodeGroupOptionsArgs:
665
+ def __init__(__self__, *,
666
+ ami_id: Optional[pulumi.Input[_builtins.str]] = None,
667
+ ami_type: Optional[pulumi.Input[_builtins.str]] = None,
668
+ auto_scaling_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
669
+ bootstrap_extra_args: Optional[pulumi.Input[_builtins.str]] = None,
670
+ bottlerocket_settings: Optional[pulumi.Input[Mapping[str, Any]]] = None,
671
+ cloud_formation_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
672
+ cluster_ingress_rule: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroupRule']] = None,
673
+ cluster_ingress_rule_id: Optional[pulumi.Input[_builtins.str]] = None,
674
+ desired_capacity: Optional[pulumi.Input[_builtins.int]] = None,
675
+ enable_detailed_monitoring: Optional[pulumi.Input[_builtins.bool]] = None,
676
+ encrypt_root_block_device: Optional[pulumi.Input[_builtins.bool]] = None,
677
+ extra_node_security_groups: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]]] = None,
678
+ gpu: Optional[pulumi.Input[_builtins.bool]] = None,
679
+ ignore_scaling_changes: Optional[_builtins.bool] = None,
680
+ instance_profile: Optional['pulumi_aws.iam.InstanceProfile'] = None,
681
+ instance_profile_name: Optional[pulumi.Input[_builtins.str]] = None,
682
+ instance_type: Optional[pulumi.Input[_builtins.str]] = None,
683
+ key_name: Optional[pulumi.Input[_builtins.str]] = None,
684
+ kubelet_extra_args: Optional[pulumi.Input[_builtins.str]] = None,
685
+ labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
686
+ launch_template_tag_specifications: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgs']]]] = None,
687
+ max_size: Optional[pulumi.Input[_builtins.int]] = None,
688
+ min_refresh_percentage: Optional[pulumi.Input[_builtins.int]] = None,
689
+ min_size: Optional[pulumi.Input[_builtins.int]] = None,
690
+ node_associate_public_ip_address: Optional[pulumi.Input[_builtins.bool]] = None,
691
+ node_public_key: Optional[pulumi.Input[_builtins.str]] = None,
692
+ node_root_volume_delete_on_termination: Optional[pulumi.Input[_builtins.bool]] = None,
693
+ node_root_volume_encrypted: Optional[pulumi.Input[_builtins.bool]] = None,
694
+ node_root_volume_iops: Optional[pulumi.Input[_builtins.int]] = None,
695
+ node_root_volume_size: Optional[pulumi.Input[_builtins.int]] = None,
696
+ node_root_volume_throughput: Optional[pulumi.Input[_builtins.int]] = None,
697
+ node_root_volume_type: Optional[pulumi.Input[_builtins.str]] = None,
698
+ node_security_group: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']] = None,
699
+ node_security_group_id: Optional[pulumi.Input[_builtins.str]] = None,
700
+ node_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
701
+ node_user_data: Optional[pulumi.Input[_builtins.str]] = None,
702
+ node_user_data_override: Optional[pulumi.Input[_builtins.str]] = None,
703
+ nodeadm_extra_options: Optional[pulumi.Input[Sequence[pulumi.Input['NodeadmOptionsArgs']]]] = None,
704
+ operating_system: Optional[pulumi.Input['OperatingSystem']] = None,
705
+ spot_price: Optional[pulumi.Input[_builtins.str]] = None,
706
+ taints: Optional[pulumi.Input[Mapping[str, pulumi.Input['TaintArgs']]]] = None,
707
+ version: Optional[pulumi.Input[_builtins.str]] = None):
708
+ """
709
+ Describes the configuration options accepted by a cluster to create its own node groups.
710
+ :param pulumi.Input[_builtins.str] ami_id: The AMI ID to use for the worker nodes.
711
+
712
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
713
+
714
+ Note: `amiId` and `gpu` are mutually exclusive.
715
+
716
+ See for more details:
717
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
718
+ :param pulumi.Input[_builtins.str] ami_type: The AMI Type to use for the worker nodes.
719
+
720
+ Only applicable when setting an AMI ID that is of type `arm64`.
721
+
722
+ Note: `amiType` and `gpu` are mutually exclusive.
723
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] auto_scaling_group_tags: The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack.
724
+
725
+ Per AWS, all stack-level tags, including automatically created tags, and the `cloudFormationTags` option are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
726
+
727
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
728
+ :param pulumi.Input[_builtins.str] bootstrap_extra_args: Additional args to pass directly to `/etc/eks/bootstrap.sh`. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the `--apiserver-endpoint`, `--b64-cluster-ca` and `--kubelet-extra-args` flags are included automatically based on other configuration parameters.
729
+ :param pulumi.Input[Mapping[str, Any]] bottlerocket_settings: The configuration settings for Bottlerocket OS.
730
+ The settings will get merged with the base settings the provider uses to configure Bottlerocket.
731
+
732
+ This includes:
733
+ - settings.kubernetes.api-server
734
+ - settings.kubernetes.cluster-certificate
735
+ - settings.kubernetes.cluster-name
736
+ - settings.kubernetes.cluster-dns-ip
737
+
738
+ For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/.
739
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] cloud_formation_tags: The tags to apply to the CloudFormation Stack of the Worker NodeGroup.
740
+
741
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
742
+ :param pulumi.Input['pulumi_aws.ec2.SecurityGroupRule'] cluster_ingress_rule: The ingress rule that gives node group access.
743
+ :param pulumi.Input[_builtins.str] cluster_ingress_rule_id: The ID of the ingress rule that gives node group access.
744
+ :param pulumi.Input[_builtins.int] desired_capacity: The number of worker nodes that should be running in the cluster. Defaults to 2.
745
+ :param pulumi.Input[_builtins.bool] enable_detailed_monitoring: Enables/disables detailed monitoring of the EC2 instances.
746
+
747
+ With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals.
748
+ When enabled, you can also get aggregated data across groups of similar instances.
749
+
750
+ Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage.
751
+ For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/.
752
+ :param pulumi.Input[_builtins.bool] encrypt_root_block_device: Encrypt the root block device of the nodes in the node group.
753
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]] extra_node_security_groups: Extra security groups to attach on all nodes in this worker node group.
754
+
755
+ This additional set of security groups captures any user application rules that will be needed for the nodes.
756
+ :param pulumi.Input[_builtins.bool] gpu: Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store.
757
+
758
+ Defaults to false.
759
+
760
+ Note: `gpu` and `amiId` are mutually exclusive.
761
+
762
+ See for more details:
763
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
764
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
765
+ :param _builtins.bool ignore_scaling_changes: Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler.
766
+
767
+ See [EKS best practices](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) for more details.
768
+ :param 'pulumi_aws.iam.InstanceProfile' instance_profile: The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
769
+ :param pulumi.Input[_builtins.str] instance_profile_name: The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
770
+ :param pulumi.Input[_builtins.str] instance_type: The instance type to use for the cluster's nodes. Defaults to "t3.medium".
771
+ :param pulumi.Input[_builtins.str] key_name: Name of the key pair to use for SSH access to worker nodes.
772
+ :param pulumi.Input[_builtins.str] kubelet_extra_args: Extra args to pass to the Kubelet. Corresponds to the options passed in the `--kubeletExtraArgs` flag to `/etc/eks/bootstrap.sh`. For example, '--port=10251 --address=0.0.0.0'. Note that the `labels` and `taints` properties will be applied to this list (using `--node-labels` and `--register-with-taints` respectively) after to the explicit `kubeletExtraArgs`.
773
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the `--node-labels` kubelet argument.
774
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgs']]] launch_template_tag_specifications: The tag specifications to apply to the launch template.
775
+ :param pulumi.Input[_builtins.int] max_size: The maximum number of worker nodes running in the cluster. Defaults to 2.
776
+ :param pulumi.Input[_builtins.int] min_refresh_percentage: The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
777
+ :param pulumi.Input[_builtins.int] min_size: The minimum number of worker nodes running in the cluster. Defaults to 1.
778
+ :param pulumi.Input[_builtins.bool] node_associate_public_ip_address: Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
779
+ :param pulumi.Input[_builtins.str] node_public_key: Public key material for SSH access to worker nodes. See allowed formats at:
780
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
781
+ If not provided, no SSH access is enabled on VMs.
782
+ :param pulumi.Input[_builtins.bool] node_root_volume_delete_on_termination: Whether the root block device should be deleted on termination of the instance. Defaults to true.
783
+ :param pulumi.Input[_builtins.bool] node_root_volume_encrypted: Whether to encrypt a cluster node's root volume. Defaults to false.
784
+ :param pulumi.Input[_builtins.int] node_root_volume_iops: The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
785
+ :param pulumi.Input[_builtins.int] node_root_volume_size: The size in GiB of a cluster node's root volume. Defaults to 20.
786
+ :param pulumi.Input[_builtins.int] node_root_volume_throughput: Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
787
+ :param pulumi.Input[_builtins.str] node_root_volume_type: Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
788
+ :param pulumi.Input['pulumi_aws.ec2.SecurityGroup'] node_security_group: The security group for the worker node group to communicate with the cluster.
789
+
790
+ This security group requires specific inbound and outbound rules.
791
+
792
+ See for more details:
793
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
794
+
795
+ Note: The `nodeSecurityGroup` option and the cluster option`nodeSecurityGroupTags` are mutually exclusive.
796
+ :param pulumi.Input[_builtins.str] node_security_group_id: The ID of the security group for the worker node group to communicate with the cluster.
797
+
798
+ This security group requires specific inbound and outbound rules.
799
+
800
+ See for more details:
801
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
802
+
803
+ Note: The `nodeSecurityGroupId` option and the cluster option `nodeSecurityGroupTags` are mutually exclusive.
804
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] node_subnet_ids: The set of subnets to override and use for the worker node group.
805
+
806
+ Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's `subnetIds` is set, or if `publicSubnetIds` and/or `privateSubnetIds` were set.
807
+ :param pulumi.Input[_builtins.str] node_user_data: Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a `#!`).
808
+ :param pulumi.Input[_builtins.str] node_user_data_override: User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows).
809
+
810
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html
811
+ :param pulumi.Input[Sequence[pulumi.Input['NodeadmOptionsArgs']]] nodeadm_extra_options: Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way.
812
+ The base settings the provider sets are:
813
+ - cluster.name
814
+ - cluster.apiServerEndpoint
815
+ - cluster.certificateAuthority
816
+ - cluster.cidr
817
+
818
+ Note: This is only applicable when using AL2023.
819
+ See for more details:
820
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/
821
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
822
+ :param pulumi.Input['OperatingSystem'] operating_system: The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration.
823
+ Valid values are `RECOMMENDED`, `AL2`, `AL2023` and `Bottlerocket`.
824
+
825
+ Defaults to the current recommended OS.
826
+ :param pulumi.Input[_builtins.str] spot_price: Bidding price for spot instance. If set, only spot instances will be added as worker node.
827
+ :param pulumi.Input[Mapping[str, pulumi.Input['TaintArgs']]] taints: Custom k8s node taints to be attached to each worker node. Adds the given taints to the `--register-with-taints` kubelet argument
828
+ :param pulumi.Input[_builtins.str] version: Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
829
+ """
830
+ if ami_id is not None:
831
+ pulumi.set(__self__, "ami_id", ami_id)
832
+ if ami_type is not None:
833
+ pulumi.set(__self__, "ami_type", ami_type)
834
+ if auto_scaling_group_tags is not None:
835
+ pulumi.set(__self__, "auto_scaling_group_tags", auto_scaling_group_tags)
836
+ if bootstrap_extra_args is not None:
837
+ pulumi.set(__self__, "bootstrap_extra_args", bootstrap_extra_args)
838
+ if bottlerocket_settings is not None:
839
+ pulumi.set(__self__, "bottlerocket_settings", bottlerocket_settings)
840
+ if cloud_formation_tags is not None:
841
+ pulumi.set(__self__, "cloud_formation_tags", cloud_formation_tags)
842
+ if cluster_ingress_rule is not None:
843
+ pulumi.set(__self__, "cluster_ingress_rule", cluster_ingress_rule)
844
+ if cluster_ingress_rule_id is not None:
845
+ pulumi.set(__self__, "cluster_ingress_rule_id", cluster_ingress_rule_id)
846
+ if desired_capacity is not None:
847
+ pulumi.set(__self__, "desired_capacity", desired_capacity)
848
+ if enable_detailed_monitoring is not None:
849
+ pulumi.set(__self__, "enable_detailed_monitoring", enable_detailed_monitoring)
850
+ if encrypt_root_block_device is not None:
851
+ pulumi.set(__self__, "encrypt_root_block_device", encrypt_root_block_device)
852
+ if extra_node_security_groups is not None:
853
+ pulumi.set(__self__, "extra_node_security_groups", extra_node_security_groups)
854
+ if gpu is not None:
855
+ pulumi.set(__self__, "gpu", gpu)
856
+ if ignore_scaling_changes is not None:
857
+ pulumi.set(__self__, "ignore_scaling_changes", ignore_scaling_changes)
858
+ if instance_profile is not None:
859
+ pulumi.set(__self__, "instance_profile", instance_profile)
860
+ if instance_profile_name is not None:
861
+ pulumi.set(__self__, "instance_profile_name", instance_profile_name)
862
+ if instance_type is not None:
863
+ pulumi.set(__self__, "instance_type", instance_type)
864
+ if key_name is not None:
865
+ pulumi.set(__self__, "key_name", key_name)
866
+ if kubelet_extra_args is not None:
867
+ pulumi.set(__self__, "kubelet_extra_args", kubelet_extra_args)
868
+ if labels is not None:
869
+ pulumi.set(__self__, "labels", labels)
870
+ if launch_template_tag_specifications is not None:
871
+ pulumi.set(__self__, "launch_template_tag_specifications", launch_template_tag_specifications)
872
+ if max_size is not None:
873
+ pulumi.set(__self__, "max_size", max_size)
874
+ if min_refresh_percentage is not None:
875
+ pulumi.set(__self__, "min_refresh_percentage", min_refresh_percentage)
876
+ if min_size is not None:
877
+ pulumi.set(__self__, "min_size", min_size)
878
+ if node_associate_public_ip_address is not None:
879
+ pulumi.set(__self__, "node_associate_public_ip_address", node_associate_public_ip_address)
880
+ if node_public_key is not None:
881
+ pulumi.set(__self__, "node_public_key", node_public_key)
882
+ if node_root_volume_delete_on_termination is not None:
883
+ pulumi.set(__self__, "node_root_volume_delete_on_termination", node_root_volume_delete_on_termination)
884
+ if node_root_volume_encrypted is not None:
885
+ pulumi.set(__self__, "node_root_volume_encrypted", node_root_volume_encrypted)
886
+ if node_root_volume_iops is not None:
887
+ pulumi.set(__self__, "node_root_volume_iops", node_root_volume_iops)
888
+ if node_root_volume_size is not None:
889
+ pulumi.set(__self__, "node_root_volume_size", node_root_volume_size)
890
+ if node_root_volume_throughput is not None:
891
+ pulumi.set(__self__, "node_root_volume_throughput", node_root_volume_throughput)
892
+ if node_root_volume_type is not None:
893
+ pulumi.set(__self__, "node_root_volume_type", node_root_volume_type)
894
+ if node_security_group is not None:
895
+ pulumi.set(__self__, "node_security_group", node_security_group)
896
+ if node_security_group_id is not None:
897
+ pulumi.set(__self__, "node_security_group_id", node_security_group_id)
898
+ if node_subnet_ids is not None:
899
+ pulumi.set(__self__, "node_subnet_ids", node_subnet_ids)
900
+ if node_user_data is not None:
901
+ pulumi.set(__self__, "node_user_data", node_user_data)
902
+ if node_user_data_override is not None:
903
+ pulumi.set(__self__, "node_user_data_override", node_user_data_override)
904
+ if nodeadm_extra_options is not None:
905
+ pulumi.set(__self__, "nodeadm_extra_options", nodeadm_extra_options)
906
+ if operating_system is not None:
907
+ pulumi.set(__self__, "operating_system", operating_system)
908
+ if spot_price is not None:
909
+ pulumi.set(__self__, "spot_price", spot_price)
910
+ if taints is not None:
911
+ pulumi.set(__self__, "taints", taints)
912
+ if version is not None:
913
+ pulumi.set(__self__, "version", version)
914
+
915
+ @_builtins.property
916
+ @pulumi.getter(name="amiId")
917
+ def ami_id(self) -> Optional[pulumi.Input[_builtins.str]]:
918
+ """
919
+ The AMI ID to use for the worker nodes.
920
+
921
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
922
+
923
+ Note: `amiId` and `gpu` are mutually exclusive.
924
+
925
+ See for more details:
926
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
927
+ """
928
+ return pulumi.get(self, "ami_id")
929
+
930
+ @ami_id.setter
931
+ def ami_id(self, value: Optional[pulumi.Input[_builtins.str]]):
932
+ pulumi.set(self, "ami_id", value)
933
+
934
+ @_builtins.property
935
+ @pulumi.getter(name="amiType")
936
+ def ami_type(self) -> Optional[pulumi.Input[_builtins.str]]:
937
+ """
938
+ The AMI Type to use for the worker nodes.
939
+
940
+ Only applicable when setting an AMI ID that is of type `arm64`.
941
+
942
+ Note: `amiType` and `gpu` are mutually exclusive.
943
+ """
944
+ return pulumi.get(self, "ami_type")
945
+
946
+ @ami_type.setter
947
+ def ami_type(self, value: Optional[pulumi.Input[_builtins.str]]):
948
+ pulumi.set(self, "ami_type", value)
949
+
950
+ @_builtins.property
951
+ @pulumi.getter(name="autoScalingGroupTags")
952
+ def auto_scaling_group_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
953
+ """
954
+ The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack.
955
+
956
+ Per AWS, all stack-level tags, including automatically created tags, and the `cloudFormationTags` option are propagated to resources that AWS CloudFormation supports, including the AutoScalingGroup. See https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html
957
+
958
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
959
+ """
960
+ return pulumi.get(self, "auto_scaling_group_tags")
961
+
962
+ @auto_scaling_group_tags.setter
963
+ def auto_scaling_group_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
964
+ pulumi.set(self, "auto_scaling_group_tags", value)
965
+
966
+ @_builtins.property
967
+ @pulumi.getter(name="bootstrapExtraArgs")
968
+ def bootstrap_extra_args(self) -> Optional[pulumi.Input[_builtins.str]]:
969
+ """
970
+ Additional args to pass directly to `/etc/eks/bootstrap.sh`. For details on available options, see: https://github.com/awslabs/amazon-eks-ami/blob/master/files/bootstrap.sh. Note that the `--apiserver-endpoint`, `--b64-cluster-ca` and `--kubelet-extra-args` flags are included automatically based on other configuration parameters.
971
+ """
972
+ return pulumi.get(self, "bootstrap_extra_args")
973
+
974
+ @bootstrap_extra_args.setter
975
+ def bootstrap_extra_args(self, value: Optional[pulumi.Input[_builtins.str]]):
976
+ pulumi.set(self, "bootstrap_extra_args", value)
977
+
978
+ @_builtins.property
979
+ @pulumi.getter(name="bottlerocketSettings")
980
+ def bottlerocket_settings(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
981
+ """
982
+ The configuration settings for Bottlerocket OS.
983
+ The settings will get merged with the base settings the provider uses to configure Bottlerocket.
984
+
985
+ This includes:
986
+ - settings.kubernetes.api-server
987
+ - settings.kubernetes.cluster-certificate
988
+ - settings.kubernetes.cluster-name
989
+ - settings.kubernetes.cluster-dns-ip
990
+
991
+ For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/.
992
+ """
993
+ return pulumi.get(self, "bottlerocket_settings")
994
+
995
+ @bottlerocket_settings.setter
996
+ def bottlerocket_settings(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
997
+ pulumi.set(self, "bottlerocket_settings", value)
998
+
999
+ @_builtins.property
1000
+ @pulumi.getter(name="cloudFormationTags")
1001
+ def cloud_formation_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
1002
+ """
1003
+ The tags to apply to the CloudFormation Stack of the Worker NodeGroup.
1004
+
1005
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
1006
+ """
1007
+ return pulumi.get(self, "cloud_formation_tags")
1008
+
1009
+ @cloud_formation_tags.setter
1010
+ def cloud_formation_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
1011
+ pulumi.set(self, "cloud_formation_tags", value)
1012
+
1013
+ @_builtins.property
1014
+ @pulumi.getter(name="clusterIngressRule")
1015
+ def cluster_ingress_rule(self) -> Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroupRule']]:
1016
+ """
1017
+ The ingress rule that gives node group access.
1018
+ """
1019
+ return pulumi.get(self, "cluster_ingress_rule")
1020
+
1021
+ @cluster_ingress_rule.setter
1022
+ def cluster_ingress_rule(self, value: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroupRule']]):
1023
+ pulumi.set(self, "cluster_ingress_rule", value)
1024
+
1025
+ @_builtins.property
1026
+ @pulumi.getter(name="clusterIngressRuleId")
1027
+ def cluster_ingress_rule_id(self) -> Optional[pulumi.Input[_builtins.str]]:
1028
+ """
1029
+ The ID of the ingress rule that gives node group access.
1030
+ """
1031
+ return pulumi.get(self, "cluster_ingress_rule_id")
1032
+
1033
+ @cluster_ingress_rule_id.setter
1034
+ def cluster_ingress_rule_id(self, value: Optional[pulumi.Input[_builtins.str]]):
1035
+ pulumi.set(self, "cluster_ingress_rule_id", value)
1036
+
1037
+ @_builtins.property
1038
+ @pulumi.getter(name="desiredCapacity")
1039
+ def desired_capacity(self) -> Optional[pulumi.Input[_builtins.int]]:
1040
+ """
1041
+ The number of worker nodes that should be running in the cluster. Defaults to 2.
1042
+ """
1043
+ return pulumi.get(self, "desired_capacity")
1044
+
1045
+ @desired_capacity.setter
1046
+ def desired_capacity(self, value: Optional[pulumi.Input[_builtins.int]]):
1047
+ pulumi.set(self, "desired_capacity", value)
1048
+
1049
+ @_builtins.property
1050
+ @pulumi.getter(name="enableDetailedMonitoring")
1051
+ def enable_detailed_monitoring(self) -> Optional[pulumi.Input[_builtins.bool]]:
1052
+ """
1053
+ Enables/disables detailed monitoring of the EC2 instances.
1054
+
1055
+ With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals.
1056
+ When enabled, you can also get aggregated data across groups of similar instances.
1057
+
1058
+ Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage.
1059
+ For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/.
1060
+ """
1061
+ return pulumi.get(self, "enable_detailed_monitoring")
1062
+
1063
+ @enable_detailed_monitoring.setter
1064
+ def enable_detailed_monitoring(self, value: Optional[pulumi.Input[_builtins.bool]]):
1065
+ pulumi.set(self, "enable_detailed_monitoring", value)
1066
+
1067
+ @_builtins.property
1068
+ @pulumi.getter(name="encryptRootBlockDevice")
1069
+ def encrypt_root_block_device(self) -> Optional[pulumi.Input[_builtins.bool]]:
1070
+ """
1071
+ Encrypt the root block device of the nodes in the node group.
1072
+ """
1073
+ return pulumi.get(self, "encrypt_root_block_device")
1074
+
1075
+ @encrypt_root_block_device.setter
1076
+ def encrypt_root_block_device(self, value: Optional[pulumi.Input[_builtins.bool]]):
1077
+ pulumi.set(self, "encrypt_root_block_device", value)
1078
+
1079
+ @_builtins.property
1080
+ @pulumi.getter(name="extraNodeSecurityGroups")
1081
+ def extra_node_security_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]]]:
1082
+ """
1083
+ Extra security groups to attach on all nodes in this worker node group.
1084
+
1085
+ This additional set of security groups captures any user application rules that will be needed for the nodes.
1086
+ """
1087
+ return pulumi.get(self, "extra_node_security_groups")
1088
+
1089
+ @extra_node_security_groups.setter
1090
+ def extra_node_security_groups(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]]]):
1091
+ pulumi.set(self, "extra_node_security_groups", value)
1092
+
1093
+ @_builtins.property
1094
+ @pulumi.getter
1095
+ def gpu(self) -> Optional[pulumi.Input[_builtins.bool]]:
1096
+ """
1097
+ Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store.
1098
+
1099
+ Defaults to false.
1100
+
1101
+ Note: `gpu` and `amiId` are mutually exclusive.
1102
+
1103
+ See for more details:
1104
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
1105
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
1106
+ """
1107
+ return pulumi.get(self, "gpu")
1108
+
1109
+ @gpu.setter
1110
+ def gpu(self, value: Optional[pulumi.Input[_builtins.bool]]):
1111
+ pulumi.set(self, "gpu", value)
1112
+
1113
+ @_builtins.property
1114
+ @pulumi.getter(name="ignoreScalingChanges")
1115
+ def ignore_scaling_changes(self) -> Optional[_builtins.bool]:
1116
+ """
1117
+ Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler.
1118
+
1119
+ See [EKS best practices](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) for more details.
1120
+ """
1121
+ return pulumi.get(self, "ignore_scaling_changes")
1122
+
1123
+ @ignore_scaling_changes.setter
1124
+ def ignore_scaling_changes(self, value: Optional[_builtins.bool]):
1125
+ pulumi.set(self, "ignore_scaling_changes", value)
1126
+
1127
+ @_builtins.property
1128
+ @pulumi.getter(name="instanceProfile")
1129
+ def instance_profile(self) -> Optional['pulumi_aws.iam.InstanceProfile']:
1130
+ """
1131
+ The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
1132
+ """
1133
+ return pulumi.get(self, "instance_profile")
1134
+
1135
+ @instance_profile.setter
1136
+ def instance_profile(self, value: Optional['pulumi_aws.iam.InstanceProfile']):
1137
+ pulumi.set(self, "instance_profile", value)
1138
+
1139
+ @_builtins.property
1140
+ @pulumi.getter(name="instanceProfileName")
1141
+ def instance_profile_name(self) -> Optional[pulumi.Input[_builtins.str]]:
1142
+ """
1143
+ The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
1144
+ """
1145
+ return pulumi.get(self, "instance_profile_name")
1146
+
1147
+ @instance_profile_name.setter
1148
+ def instance_profile_name(self, value: Optional[pulumi.Input[_builtins.str]]):
1149
+ pulumi.set(self, "instance_profile_name", value)
1150
+
1151
+ @_builtins.property
1152
+ @pulumi.getter(name="instanceType")
1153
+ def instance_type(self) -> Optional[pulumi.Input[_builtins.str]]:
1154
+ """
1155
+ The instance type to use for the cluster's nodes. Defaults to "t3.medium".
1156
+ """
1157
+ return pulumi.get(self, "instance_type")
1158
+
1159
+ @instance_type.setter
1160
+ def instance_type(self, value: Optional[pulumi.Input[_builtins.str]]):
1161
+ pulumi.set(self, "instance_type", value)
1162
+
1163
+ @_builtins.property
1164
+ @pulumi.getter(name="keyName")
1165
+ def key_name(self) -> Optional[pulumi.Input[_builtins.str]]:
1166
+ """
1167
+ Name of the key pair to use for SSH access to worker nodes.
1168
+ """
1169
+ return pulumi.get(self, "key_name")
1170
+
1171
+ @key_name.setter
1172
+ def key_name(self, value: Optional[pulumi.Input[_builtins.str]]):
1173
+ pulumi.set(self, "key_name", value)
1174
+
1175
+ @_builtins.property
1176
+ @pulumi.getter(name="kubeletExtraArgs")
1177
+ def kubelet_extra_args(self) -> Optional[pulumi.Input[_builtins.str]]:
1178
+ """
1179
+ Extra args to pass to the Kubelet. Corresponds to the options passed in the `--kubeletExtraArgs` flag to `/etc/eks/bootstrap.sh`. For example, '--port=10251 --address=0.0.0.0'. Note that the `labels` and `taints` properties will be applied to this list (using `--node-labels` and `--register-with-taints` respectively) after to the explicit `kubeletExtraArgs`.
1180
+ """
1181
+ return pulumi.get(self, "kubelet_extra_args")
1182
+
1183
+ @kubelet_extra_args.setter
1184
+ def kubelet_extra_args(self, value: Optional[pulumi.Input[_builtins.str]]):
1185
+ pulumi.set(self, "kubelet_extra_args", value)
1186
+
1187
+ @_builtins.property
1188
+ @pulumi.getter
1189
+ def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
1190
+ """
1191
+ Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the `--node-labels` kubelet argument.
1192
+ """
1193
+ return pulumi.get(self, "labels")
1194
+
1195
+ @labels.setter
1196
+ def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
1197
+ pulumi.set(self, "labels", value)
1198
+
1199
+ @_builtins.property
1200
+ @pulumi.getter(name="launchTemplateTagSpecifications")
1201
+ def launch_template_tag_specifications(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgs']]]]:
1202
+ """
1203
+ The tag specifications to apply to the launch template.
1204
+ """
1205
+ return pulumi.get(self, "launch_template_tag_specifications")
1206
+
1207
+ @launch_template_tag_specifications.setter
1208
+ def launch_template_tag_specifications(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgs']]]]):
1209
+ pulumi.set(self, "launch_template_tag_specifications", value)
1210
+
1211
+ @_builtins.property
1212
+ @pulumi.getter(name="maxSize")
1213
+ def max_size(self) -> Optional[pulumi.Input[_builtins.int]]:
1214
+ """
1215
+ The maximum number of worker nodes running in the cluster. Defaults to 2.
1216
+ """
1217
+ return pulumi.get(self, "max_size")
1218
+
1219
+ @max_size.setter
1220
+ def max_size(self, value: Optional[pulumi.Input[_builtins.int]]):
1221
+ pulumi.set(self, "max_size", value)
1222
+
1223
+ @_builtins.property
1224
+ @pulumi.getter(name="minRefreshPercentage")
1225
+ def min_refresh_percentage(self) -> Optional[pulumi.Input[_builtins.int]]:
1226
+ """
1227
+ The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
1228
+ """
1229
+ return pulumi.get(self, "min_refresh_percentage")
1230
+
1231
+ @min_refresh_percentage.setter
1232
+ def min_refresh_percentage(self, value: Optional[pulumi.Input[_builtins.int]]):
1233
+ pulumi.set(self, "min_refresh_percentage", value)
1234
+
1235
+ @_builtins.property
1236
+ @pulumi.getter(name="minSize")
1237
+ def min_size(self) -> Optional[pulumi.Input[_builtins.int]]:
1238
+ """
1239
+ The minimum number of worker nodes running in the cluster. Defaults to 1.
1240
+ """
1241
+ return pulumi.get(self, "min_size")
1242
+
1243
+ @min_size.setter
1244
+ def min_size(self, value: Optional[pulumi.Input[_builtins.int]]):
1245
+ pulumi.set(self, "min_size", value)
1246
+
1247
+ @_builtins.property
1248
+ @pulumi.getter(name="nodeAssociatePublicIpAddress")
1249
+ def node_associate_public_ip_address(self) -> Optional[pulumi.Input[_builtins.bool]]:
1250
+ """
1251
+ Whether or not to auto-assign public IP addresses on the EKS worker nodes. If this toggle is set to true, the EKS workers will be auto-assigned public IPs. If false, they will not be auto-assigned public IPs.
1252
+ """
1253
+ return pulumi.get(self, "node_associate_public_ip_address")
1254
+
1255
+ @node_associate_public_ip_address.setter
1256
+ def node_associate_public_ip_address(self, value: Optional[pulumi.Input[_builtins.bool]]):
1257
+ pulumi.set(self, "node_associate_public_ip_address", value)
1258
+
1259
+ @_builtins.property
1260
+ @pulumi.getter(name="nodePublicKey")
1261
+ def node_public_key(self) -> Optional[pulumi.Input[_builtins.str]]:
1262
+ """
1263
+ Public key material for SSH access to worker nodes. See allowed formats at:
1264
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
1265
+ If not provided, no SSH access is enabled on VMs.
1266
+ """
1267
+ return pulumi.get(self, "node_public_key")
1268
+
1269
+ @node_public_key.setter
1270
+ def node_public_key(self, value: Optional[pulumi.Input[_builtins.str]]):
1271
+ pulumi.set(self, "node_public_key", value)
1272
+
1273
+ @_builtins.property
1274
+ @pulumi.getter(name="nodeRootVolumeDeleteOnTermination")
1275
+ def node_root_volume_delete_on_termination(self) -> Optional[pulumi.Input[_builtins.bool]]:
1276
+ """
1277
+ Whether the root block device should be deleted on termination of the instance. Defaults to true.
1278
+ """
1279
+ return pulumi.get(self, "node_root_volume_delete_on_termination")
1280
+
1281
+ @node_root_volume_delete_on_termination.setter
1282
+ def node_root_volume_delete_on_termination(self, value: Optional[pulumi.Input[_builtins.bool]]):
1283
+ pulumi.set(self, "node_root_volume_delete_on_termination", value)
1284
+
1285
+ @_builtins.property
1286
+ @pulumi.getter(name="nodeRootVolumeEncrypted")
1287
+ def node_root_volume_encrypted(self) -> Optional[pulumi.Input[_builtins.bool]]:
1288
+ """
1289
+ Whether to encrypt a cluster node's root volume. Defaults to false.
1290
+ """
1291
+ return pulumi.get(self, "node_root_volume_encrypted")
1292
+
1293
+ @node_root_volume_encrypted.setter
1294
+ def node_root_volume_encrypted(self, value: Optional[pulumi.Input[_builtins.bool]]):
1295
+ pulumi.set(self, "node_root_volume_encrypted", value)
1296
+
1297
+ @_builtins.property
1298
+ @pulumi.getter(name="nodeRootVolumeIops")
1299
+ def node_root_volume_iops(self) -> Optional[pulumi.Input[_builtins.int]]:
1300
+ """
1301
+ The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
1302
+ """
1303
+ return pulumi.get(self, "node_root_volume_iops")
1304
+
1305
+ @node_root_volume_iops.setter
1306
+ def node_root_volume_iops(self, value: Optional[pulumi.Input[_builtins.int]]):
1307
+ pulumi.set(self, "node_root_volume_iops", value)
1308
+
1309
+ @_builtins.property
1310
+ @pulumi.getter(name="nodeRootVolumeSize")
1311
+ def node_root_volume_size(self) -> Optional[pulumi.Input[_builtins.int]]:
1312
+ """
1313
+ The size in GiB of a cluster node's root volume. Defaults to 20.
1314
+ """
1315
+ return pulumi.get(self, "node_root_volume_size")
1316
+
1317
+ @node_root_volume_size.setter
1318
+ def node_root_volume_size(self, value: Optional[pulumi.Input[_builtins.int]]):
1319
+ pulumi.set(self, "node_root_volume_size", value)
1320
+
1321
+ @_builtins.property
1322
+ @pulumi.getter(name="nodeRootVolumeThroughput")
1323
+ def node_root_volume_throughput(self) -> Optional[pulumi.Input[_builtins.int]]:
1324
+ """
1325
+ Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
1326
+ """
1327
+ return pulumi.get(self, "node_root_volume_throughput")
1328
+
1329
+ @node_root_volume_throughput.setter
1330
+ def node_root_volume_throughput(self, value: Optional[pulumi.Input[_builtins.int]]):
1331
+ pulumi.set(self, "node_root_volume_throughput", value)
1332
+
1333
+ @_builtins.property
1334
+ @pulumi.getter(name="nodeRootVolumeType")
1335
+ def node_root_volume_type(self) -> Optional[pulumi.Input[_builtins.str]]:
1336
+ """
1337
+ Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
1338
+ """
1339
+ return pulumi.get(self, "node_root_volume_type")
1340
+
1341
+ @node_root_volume_type.setter
1342
+ def node_root_volume_type(self, value: Optional[pulumi.Input[_builtins.str]]):
1343
+ pulumi.set(self, "node_root_volume_type", value)
1344
+
1345
+ @_builtins.property
1346
+ @pulumi.getter(name="nodeSecurityGroup")
1347
+ def node_security_group(self) -> Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]:
1348
+ """
1349
+ The security group for the worker node group to communicate with the cluster.
1350
+
1351
+ This security group requires specific inbound and outbound rules.
1352
+
1353
+ See for more details:
1354
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
1355
+
1356
+ Note: The `nodeSecurityGroup` option and the cluster option`nodeSecurityGroupTags` are mutually exclusive.
1357
+ """
1358
+ return pulumi.get(self, "node_security_group")
1359
+
1360
+ @node_security_group.setter
1361
+ def node_security_group(self, value: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]):
1362
+ pulumi.set(self, "node_security_group", value)
1363
+
1364
+ @_builtins.property
1365
+ @pulumi.getter(name="nodeSecurityGroupId")
1366
+ def node_security_group_id(self) -> Optional[pulumi.Input[_builtins.str]]:
1367
+ """
1368
+ The ID of the security group for the worker node group to communicate with the cluster.
1369
+
1370
+ This security group requires specific inbound and outbound rules.
1371
+
1372
+ See for more details:
1373
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
1374
+
1375
+ Note: The `nodeSecurityGroupId` option and the cluster option `nodeSecurityGroupTags` are mutually exclusive.
1376
+ """
1377
+ return pulumi.get(self, "node_security_group_id")
1378
+
1379
+ @node_security_group_id.setter
1380
+ def node_security_group_id(self, value: Optional[pulumi.Input[_builtins.str]]):
1381
+ pulumi.set(self, "node_security_group_id", value)
1382
+
1383
+ @_builtins.property
1384
+ @pulumi.getter(name="nodeSubnetIds")
1385
+ def node_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1386
+ """
1387
+ The set of subnets to override and use for the worker node group.
1388
+
1389
+ Setting this option overrides which subnets to use for the worker node group, regardless if the cluster's `subnetIds` is set, or if `publicSubnetIds` and/or `privateSubnetIds` were set.
1390
+ """
1391
+ return pulumi.get(self, "node_subnet_ids")
1392
+
1393
+ @node_subnet_ids.setter
1394
+ def node_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1395
+ pulumi.set(self, "node_subnet_ids", value)
1396
+
1397
+ @_builtins.property
1398
+ @pulumi.getter(name="nodeUserData")
1399
+ def node_user_data(self) -> Optional[pulumi.Input[_builtins.str]]:
1400
+ """
1401
+ Extra code to run on node startup. This code will run after the AWS EKS bootstrapping code and before the node signals its readiness to the managing CloudFormation stack. This code must be a typical user data script: critically it must begin with an interpreter directive (i.e. a `#!`).
1402
+ """
1403
+ return pulumi.get(self, "node_user_data")
1404
+
1405
+ @node_user_data.setter
1406
+ def node_user_data(self, value: Optional[pulumi.Input[_builtins.str]]):
1407
+ pulumi.set(self, "node_user_data", value)
1408
+
1409
+ @_builtins.property
1410
+ @pulumi.getter(name="nodeUserDataOverride")
1411
+ def node_user_data_override(self) -> Optional[pulumi.Input[_builtins.str]]:
1412
+ """
1413
+ User specified code to run on node startup. This code is expected to handle the full AWS EKS bootstrapping code and signal node readiness to the managing CloudFormation stack. This code must be a complete and executable user data script in bash (Linux) or powershell (Windows).
1414
+
1415
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html
1416
+ """
1417
+ return pulumi.get(self, "node_user_data_override")
1418
+
1419
+ @node_user_data_override.setter
1420
+ def node_user_data_override(self, value: Optional[pulumi.Input[_builtins.str]]):
1421
+ pulumi.set(self, "node_user_data_override", value)
1422
+
1423
+ @_builtins.property
1424
+ @pulumi.getter(name="nodeadmExtraOptions")
1425
+ def nodeadm_extra_options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['NodeadmOptionsArgs']]]]:
1426
+ """
1427
+ Extra nodeadm configuration sections to be added to the nodeadm user data. This can be shell scripts, nodeadm NodeConfig or any other user data compatible script. When configuring additional nodeadm NodeConfig sections, they'll be merged with the base settings the provider sets. You can overwrite base settings or provide additional settings this way.
1428
+ The base settings the provider sets are:
1429
+ - cluster.name
1430
+ - cluster.apiServerEndpoint
1431
+ - cluster.certificateAuthority
1432
+ - cluster.cidr
1433
+
1434
+ Note: This is only applicable when using AL2023.
1435
+ See for more details:
1436
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/
1437
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
1438
+ """
1439
+ return pulumi.get(self, "nodeadm_extra_options")
1440
+
1441
+ @nodeadm_extra_options.setter
1442
+ def nodeadm_extra_options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['NodeadmOptionsArgs']]]]):
1443
+ pulumi.set(self, "nodeadm_extra_options", value)
1444
+
1445
+ @_builtins.property
1446
+ @pulumi.getter(name="operatingSystem")
1447
+ def operating_system(self) -> Optional[pulumi.Input['OperatingSystem']]:
1448
+ """
1449
+ The type of OS to use for the node group. Will be used to determine the right EKS optimized AMI to use based on the instance types and gpu configuration.
1450
+ Valid values are `RECOMMENDED`, `AL2`, `AL2023` and `Bottlerocket`.
1451
+
1452
+ Defaults to the current recommended OS.
1453
+ """
1454
+ return pulumi.get(self, "operating_system")
1455
+
1456
+ @operating_system.setter
1457
+ def operating_system(self, value: Optional[pulumi.Input['OperatingSystem']]):
1458
+ pulumi.set(self, "operating_system", value)
1459
+
1460
+ @_builtins.property
1461
+ @pulumi.getter(name="spotPrice")
1462
+ def spot_price(self) -> Optional[pulumi.Input[_builtins.str]]:
1463
+ """
1464
+ Bidding price for spot instance. If set, only spot instances will be added as worker node.
1465
+ """
1466
+ return pulumi.get(self, "spot_price")
1467
+
1468
+ @spot_price.setter
1469
+ def spot_price(self, value: Optional[pulumi.Input[_builtins.str]]):
1470
+ pulumi.set(self, "spot_price", value)
1471
+
1472
+ @_builtins.property
1473
+ @pulumi.getter
1474
+ def taints(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input['TaintArgs']]]]:
1475
+ """
1476
+ Custom k8s node taints to be attached to each worker node. Adds the given taints to the `--register-with-taints` kubelet argument
1477
+ """
1478
+ return pulumi.get(self, "taints")
1479
+
1480
+ @taints.setter
1481
+ def taints(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input['TaintArgs']]]]):
1482
+ pulumi.set(self, "taints", value)
1483
+
1484
+ @_builtins.property
1485
+ @pulumi.getter
1486
+ def version(self) -> Optional[pulumi.Input[_builtins.str]]:
1487
+ """
1488
+ Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
1489
+ """
1490
+ return pulumi.get(self, "version")
1491
+
1492
+ @version.setter
1493
+ def version(self, value: Optional[pulumi.Input[_builtins.str]]):
1494
+ pulumi.set(self, "version", value)
1495
+
1496
+
1497
+ if not MYPY:
1498
+ class CoreDataArgsDict(TypedDict):
1499
+ """
1500
+ Defines the core set of data associated with an EKS cluster, including the network in which it runs.
1501
+ """
1502
+ cluster: pulumi.Input['pulumi_aws.eks.Cluster']
1503
+ cluster_iam_role: pulumi.Input['pulumi_aws.iam.Role']
1504
+ """
1505
+ The IAM Role attached to the EKS Cluster
1506
+ """
1507
+ endpoint: pulumi.Input[_builtins.str]
1508
+ """
1509
+ The EKS cluster's Kubernetes API server endpoint.
1510
+ """
1511
+ instance_roles: pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]
1512
+ """
1513
+ The IAM instance roles for the cluster's nodes.
1514
+ """
1515
+ node_group_options: pulumi.Input['ClusterNodeGroupOptionsArgsDict']
1516
+ """
1517
+ The cluster's node group options.
1518
+ """
1519
+ provider: pulumi.Input['pulumi_kubernetes.Provider']
1520
+ subnet_ids: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
1521
+ """
1522
+ List of subnet IDs for the EKS cluster.
1523
+ """
1524
+ vpc_id: pulumi.Input[_builtins.str]
1525
+ """
1526
+ ID of the cluster's VPC.
1527
+ """
1528
+ access_entries: NotRequired[pulumi.Input[Sequence[pulumi.Input['AccessEntryArgsDict']]]]
1529
+ """
1530
+ The access entries added to the cluster.
1531
+ """
1532
+ aws_provider: NotRequired[pulumi.Input['pulumi_aws.Provider']]
1533
+ cluster_security_group: NotRequired[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]
1534
+ eks_node_access: NotRequired[pulumi.Input['pulumi_kubernetes.core.v1.ConfigMap']]
1535
+ encryption_config: NotRequired[pulumi.Input['pulumi_aws.eks.ClusterEncryptionConfigArgsDict']]
1536
+ fargate_profile: NotRequired[pulumi.Input['pulumi_aws.eks.FargateProfile']]
1537
+ """
1538
+ The Fargate profile used to manage which pods run on Fargate.
1539
+ """
1540
+ kubeconfig: NotRequired[Any]
1541
+ """
1542
+ The kubeconfig file for the cluster.
1543
+ """
1544
+ node_security_group_tags: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
1545
+ """
1546
+ Tags attached to the security groups associated with the cluster's worker nodes.
1547
+ """
1548
+ oidc_provider: NotRequired[pulumi.Input['pulumi_aws.iam.OpenIdConnectProvider']]
1549
+ private_subnet_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
1550
+ """
1551
+ List of subnet IDs for the private subnets.
1552
+ """
1553
+ public_subnet_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
1554
+ """
1555
+ List of subnet IDs for the public subnets.
1556
+ """
1557
+ storage_classes: NotRequired[pulumi.Input[Mapping[str, pulumi.Input['pulumi_kubernetes.storage.v1.StorageClass']]]]
1558
+ """
1559
+ The storage class used for persistent storage by the cluster.
1560
+ """
1561
+ tags: NotRequired[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]
1562
+ """
1563
+ A map of tags assigned to the EKS cluster.
1564
+ """
1565
+ vpc_cni: NotRequired[pulumi.Input['VpcCniAddon']]
1566
+ """
1567
+ The VPC CNI for the cluster.
1568
+ """
1569
+ elif False:
1570
+ CoreDataArgsDict: TypeAlias = Mapping[str, Any]
1571
+
1572
+ @pulumi.input_type
1573
+ class CoreDataArgs:
1574
+ def __init__(__self__, *,
1575
+ cluster: pulumi.Input['pulumi_aws.eks.Cluster'],
1576
+ cluster_iam_role: pulumi.Input['pulumi_aws.iam.Role'],
1577
+ endpoint: pulumi.Input[_builtins.str],
1578
+ instance_roles: pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]],
1579
+ node_group_options: pulumi.Input['ClusterNodeGroupOptionsArgs'],
1580
+ provider: pulumi.Input['pulumi_kubernetes.Provider'],
1581
+ subnet_ids: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
1582
+ vpc_id: pulumi.Input[_builtins.str],
1583
+ access_entries: Optional[pulumi.Input[Sequence[pulumi.Input['AccessEntryArgs']]]] = None,
1584
+ aws_provider: Optional[pulumi.Input['pulumi_aws.Provider']] = None,
1585
+ cluster_security_group: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']] = None,
1586
+ eks_node_access: Optional[pulumi.Input['pulumi_kubernetes.core.v1.ConfigMap']] = None,
1587
+ encryption_config: Optional[pulumi.Input['pulumi_aws.eks.ClusterEncryptionConfigArgs']] = None,
1588
+ fargate_profile: Optional[pulumi.Input['pulumi_aws.eks.FargateProfile']] = None,
1589
+ kubeconfig: Optional[Any] = None,
1590
+ node_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1591
+ oidc_provider: Optional[pulumi.Input['pulumi_aws.iam.OpenIdConnectProvider']] = None,
1592
+ private_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1593
+ public_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1594
+ storage_classes: Optional[pulumi.Input[Mapping[str, pulumi.Input['pulumi_kubernetes.storage.v1.StorageClass']]]] = None,
1595
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1596
+ vpc_cni: Optional[pulumi.Input['VpcCniAddon']] = None):
1597
+ """
1598
+ Defines the core set of data associated with an EKS cluster, including the network in which it runs.
1599
+ :param pulumi.Input['pulumi_aws.iam.Role'] cluster_iam_role: The IAM Role attached to the EKS Cluster
1600
+ :param pulumi.Input[_builtins.str] endpoint: The EKS cluster's Kubernetes API server endpoint.
1601
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]] instance_roles: The IAM instance roles for the cluster's nodes.
1602
+ :param pulumi.Input['ClusterNodeGroupOptionsArgs'] node_group_options: The cluster's node group options.
1603
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] subnet_ids: List of subnet IDs for the EKS cluster.
1604
+ :param pulumi.Input[_builtins.str] vpc_id: ID of the cluster's VPC.
1605
+ :param pulumi.Input[Sequence[pulumi.Input['AccessEntryArgs']]] access_entries: The access entries added to the cluster.
1606
+ :param pulumi.Input['pulumi_aws.eks.FargateProfile'] fargate_profile: The Fargate profile used to manage which pods run on Fargate.
1607
+ :param Any kubeconfig: The kubeconfig file for the cluster.
1608
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] node_security_group_tags: Tags attached to the security groups associated with the cluster's worker nodes.
1609
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] private_subnet_ids: List of subnet IDs for the private subnets.
1610
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] public_subnet_ids: List of subnet IDs for the public subnets.
1611
+ :param pulumi.Input[Mapping[str, pulumi.Input['pulumi_kubernetes.storage.v1.StorageClass']]] storage_classes: The storage class used for persistent storage by the cluster.
1612
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] tags: A map of tags assigned to the EKS cluster.
1613
+ :param pulumi.Input['VpcCniAddon'] vpc_cni: The VPC CNI for the cluster.
1614
+ """
1615
+ pulumi.set(__self__, "cluster", cluster)
1616
+ pulumi.set(__self__, "cluster_iam_role", cluster_iam_role)
1617
+ pulumi.set(__self__, "endpoint", endpoint)
1618
+ pulumi.set(__self__, "instance_roles", instance_roles)
1619
+ pulumi.set(__self__, "node_group_options", node_group_options)
1620
+ pulumi.set(__self__, "provider", provider)
1621
+ pulumi.set(__self__, "subnet_ids", subnet_ids)
1622
+ pulumi.set(__self__, "vpc_id", vpc_id)
1623
+ if access_entries is not None:
1624
+ pulumi.set(__self__, "access_entries", access_entries)
1625
+ if aws_provider is not None:
1626
+ pulumi.set(__self__, "aws_provider", aws_provider)
1627
+ if cluster_security_group is not None:
1628
+ pulumi.set(__self__, "cluster_security_group", cluster_security_group)
1629
+ if eks_node_access is not None:
1630
+ pulumi.set(__self__, "eks_node_access", eks_node_access)
1631
+ if encryption_config is not None:
1632
+ pulumi.set(__self__, "encryption_config", encryption_config)
1633
+ if fargate_profile is not None:
1634
+ pulumi.set(__self__, "fargate_profile", fargate_profile)
1635
+ if kubeconfig is not None:
1636
+ pulumi.set(__self__, "kubeconfig", kubeconfig)
1637
+ if node_security_group_tags is not None:
1638
+ pulumi.set(__self__, "node_security_group_tags", node_security_group_tags)
1639
+ if oidc_provider is not None:
1640
+ pulumi.set(__self__, "oidc_provider", oidc_provider)
1641
+ if private_subnet_ids is not None:
1642
+ pulumi.set(__self__, "private_subnet_ids", private_subnet_ids)
1643
+ if public_subnet_ids is not None:
1644
+ pulumi.set(__self__, "public_subnet_ids", public_subnet_ids)
1645
+ if storage_classes is not None:
1646
+ pulumi.set(__self__, "storage_classes", storage_classes)
1647
+ if tags is not None:
1648
+ pulumi.set(__self__, "tags", tags)
1649
+ if vpc_cni is not None:
1650
+ pulumi.set(__self__, "vpc_cni", vpc_cni)
1651
+
1652
+ @_builtins.property
1653
+ @pulumi.getter
1654
+ def cluster(self) -> pulumi.Input['pulumi_aws.eks.Cluster']:
1655
+ return pulumi.get(self, "cluster")
1656
+
1657
+ @cluster.setter
1658
+ def cluster(self, value: pulumi.Input['pulumi_aws.eks.Cluster']):
1659
+ pulumi.set(self, "cluster", value)
1660
+
1661
+ @_builtins.property
1662
+ @pulumi.getter(name="clusterIamRole")
1663
+ def cluster_iam_role(self) -> pulumi.Input['pulumi_aws.iam.Role']:
1664
+ """
1665
+ The IAM Role attached to the EKS Cluster
1666
+ """
1667
+ return pulumi.get(self, "cluster_iam_role")
1668
+
1669
+ @cluster_iam_role.setter
1670
+ def cluster_iam_role(self, value: pulumi.Input['pulumi_aws.iam.Role']):
1671
+ pulumi.set(self, "cluster_iam_role", value)
1672
+
1673
+ @_builtins.property
1674
+ @pulumi.getter
1675
+ def endpoint(self) -> pulumi.Input[_builtins.str]:
1676
+ """
1677
+ The EKS cluster's Kubernetes API server endpoint.
1678
+ """
1679
+ return pulumi.get(self, "endpoint")
1680
+
1681
+ @endpoint.setter
1682
+ def endpoint(self, value: pulumi.Input[_builtins.str]):
1683
+ pulumi.set(self, "endpoint", value)
1684
+
1685
+ @_builtins.property
1686
+ @pulumi.getter(name="instanceRoles")
1687
+ def instance_roles(self) -> pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]:
1688
+ """
1689
+ The IAM instance roles for the cluster's nodes.
1690
+ """
1691
+ return pulumi.get(self, "instance_roles")
1692
+
1693
+ @instance_roles.setter
1694
+ def instance_roles(self, value: pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]):
1695
+ pulumi.set(self, "instance_roles", value)
1696
+
1697
+ @_builtins.property
1698
+ @pulumi.getter(name="nodeGroupOptions")
1699
+ def node_group_options(self) -> pulumi.Input['ClusterNodeGroupOptionsArgs']:
1700
+ """
1701
+ The cluster's node group options.
1702
+ """
1703
+ return pulumi.get(self, "node_group_options")
1704
+
1705
+ @node_group_options.setter
1706
+ def node_group_options(self, value: pulumi.Input['ClusterNodeGroupOptionsArgs']):
1707
+ pulumi.set(self, "node_group_options", value)
1708
+
1709
+ @_builtins.property
1710
+ @pulumi.getter
1711
+ def provider(self) -> pulumi.Input['pulumi_kubernetes.Provider']:
1712
+ return pulumi.get(self, "provider")
1713
+
1714
+ @provider.setter
1715
+ def provider(self, value: pulumi.Input['pulumi_kubernetes.Provider']):
1716
+ pulumi.set(self, "provider", value)
1717
+
1718
+ @_builtins.property
1719
+ @pulumi.getter(name="subnetIds")
1720
+ def subnet_ids(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
1721
+ """
1722
+ List of subnet IDs for the EKS cluster.
1723
+ """
1724
+ return pulumi.get(self, "subnet_ids")
1725
+
1726
+ @subnet_ids.setter
1727
+ def subnet_ids(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
1728
+ pulumi.set(self, "subnet_ids", value)
1729
+
1730
+ @_builtins.property
1731
+ @pulumi.getter(name="vpcId")
1732
+ def vpc_id(self) -> pulumi.Input[_builtins.str]:
1733
+ """
1734
+ ID of the cluster's VPC.
1735
+ """
1736
+ return pulumi.get(self, "vpc_id")
1737
+
1738
+ @vpc_id.setter
1739
+ def vpc_id(self, value: pulumi.Input[_builtins.str]):
1740
+ pulumi.set(self, "vpc_id", value)
1741
+
1742
+ @_builtins.property
1743
+ @pulumi.getter(name="accessEntries")
1744
+ def access_entries(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AccessEntryArgs']]]]:
1745
+ """
1746
+ The access entries added to the cluster.
1747
+ """
1748
+ return pulumi.get(self, "access_entries")
1749
+
1750
+ @access_entries.setter
1751
+ def access_entries(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AccessEntryArgs']]]]):
1752
+ pulumi.set(self, "access_entries", value)
1753
+
1754
+ @_builtins.property
1755
+ @pulumi.getter(name="awsProvider")
1756
+ def aws_provider(self) -> Optional[pulumi.Input['pulumi_aws.Provider']]:
1757
+ return pulumi.get(self, "aws_provider")
1758
+
1759
+ @aws_provider.setter
1760
+ def aws_provider(self, value: Optional[pulumi.Input['pulumi_aws.Provider']]):
1761
+ pulumi.set(self, "aws_provider", value)
1762
+
1763
+ @_builtins.property
1764
+ @pulumi.getter(name="clusterSecurityGroup")
1765
+ def cluster_security_group(self) -> Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]:
1766
+ return pulumi.get(self, "cluster_security_group")
1767
+
1768
+ @cluster_security_group.setter
1769
+ def cluster_security_group(self, value: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]):
1770
+ pulumi.set(self, "cluster_security_group", value)
1771
+
1772
+ @_builtins.property
1773
+ @pulumi.getter(name="eksNodeAccess")
1774
+ def eks_node_access(self) -> Optional[pulumi.Input['pulumi_kubernetes.core.v1.ConfigMap']]:
1775
+ return pulumi.get(self, "eks_node_access")
1776
+
1777
+ @eks_node_access.setter
1778
+ def eks_node_access(self, value: Optional[pulumi.Input['pulumi_kubernetes.core.v1.ConfigMap']]):
1779
+ pulumi.set(self, "eks_node_access", value)
1780
+
1781
+ @_builtins.property
1782
+ @pulumi.getter(name="encryptionConfig")
1783
+ def encryption_config(self) -> Optional[pulumi.Input['pulumi_aws.eks.ClusterEncryptionConfigArgs']]:
1784
+ return pulumi.get(self, "encryption_config")
1785
+
1786
+ @encryption_config.setter
1787
+ def encryption_config(self, value: Optional[pulumi.Input['pulumi_aws.eks.ClusterEncryptionConfigArgs']]):
1788
+ pulumi.set(self, "encryption_config", value)
1789
+
1790
+ @_builtins.property
1791
+ @pulumi.getter(name="fargateProfile")
1792
+ def fargate_profile(self) -> Optional[pulumi.Input['pulumi_aws.eks.FargateProfile']]:
1793
+ """
1794
+ The Fargate profile used to manage which pods run on Fargate.
1795
+ """
1796
+ return pulumi.get(self, "fargate_profile")
1797
+
1798
+ @fargate_profile.setter
1799
+ def fargate_profile(self, value: Optional[pulumi.Input['pulumi_aws.eks.FargateProfile']]):
1800
+ pulumi.set(self, "fargate_profile", value)
1801
+
1802
+ @_builtins.property
1803
+ @pulumi.getter
1804
+ def kubeconfig(self) -> Optional[Any]:
1805
+ """
1806
+ The kubeconfig file for the cluster.
1807
+ """
1808
+ return pulumi.get(self, "kubeconfig")
1809
+
1810
+ @kubeconfig.setter
1811
+ def kubeconfig(self, value: Optional[Any]):
1812
+ pulumi.set(self, "kubeconfig", value)
1813
+
1814
+ @_builtins.property
1815
+ @pulumi.getter(name="nodeSecurityGroupTags")
1816
+ def node_security_group_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
1817
+ """
1818
+ Tags attached to the security groups associated with the cluster's worker nodes.
1819
+ """
1820
+ return pulumi.get(self, "node_security_group_tags")
1821
+
1822
+ @node_security_group_tags.setter
1823
+ def node_security_group_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
1824
+ pulumi.set(self, "node_security_group_tags", value)
1825
+
1826
+ @_builtins.property
1827
+ @pulumi.getter(name="oidcProvider")
1828
+ def oidc_provider(self) -> Optional[pulumi.Input['pulumi_aws.iam.OpenIdConnectProvider']]:
1829
+ return pulumi.get(self, "oidc_provider")
1830
+
1831
+ @oidc_provider.setter
1832
+ def oidc_provider(self, value: Optional[pulumi.Input['pulumi_aws.iam.OpenIdConnectProvider']]):
1833
+ pulumi.set(self, "oidc_provider", value)
1834
+
1835
+ @_builtins.property
1836
+ @pulumi.getter(name="privateSubnetIds")
1837
+ def private_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1838
+ """
1839
+ List of subnet IDs for the private subnets.
1840
+ """
1841
+ return pulumi.get(self, "private_subnet_ids")
1842
+
1843
+ @private_subnet_ids.setter
1844
+ def private_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1845
+ pulumi.set(self, "private_subnet_ids", value)
1846
+
1847
+ @_builtins.property
1848
+ @pulumi.getter(name="publicSubnetIds")
1849
+ def public_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1850
+ """
1851
+ List of subnet IDs for the public subnets.
1852
+ """
1853
+ return pulumi.get(self, "public_subnet_ids")
1854
+
1855
+ @public_subnet_ids.setter
1856
+ def public_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1857
+ pulumi.set(self, "public_subnet_ids", value)
1858
+
1859
+ @_builtins.property
1860
+ @pulumi.getter(name="storageClasses")
1861
+ def storage_classes(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input['pulumi_kubernetes.storage.v1.StorageClass']]]]:
1862
+ """
1863
+ The storage class used for persistent storage by the cluster.
1864
+ """
1865
+ return pulumi.get(self, "storage_classes")
1866
+
1867
+ @storage_classes.setter
1868
+ def storage_classes(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input['pulumi_kubernetes.storage.v1.StorageClass']]]]):
1869
+ pulumi.set(self, "storage_classes", value)
1870
+
1871
+ @_builtins.property
1872
+ @pulumi.getter
1873
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
1874
+ """
1875
+ A map of tags assigned to the EKS cluster.
1876
+ """
1877
+ return pulumi.get(self, "tags")
1878
+
1879
+ @tags.setter
1880
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
1881
+ pulumi.set(self, "tags", value)
1882
+
1883
+ @_builtins.property
1884
+ @pulumi.getter(name="vpcCni")
1885
+ def vpc_cni(self) -> Optional[pulumi.Input['VpcCniAddon']]:
1886
+ """
1887
+ The VPC CNI for the cluster.
1888
+ """
1889
+ return pulumi.get(self, "vpc_cni")
1890
+
1891
+ @vpc_cni.setter
1892
+ def vpc_cni(self, value: Optional[pulumi.Input['VpcCniAddon']]):
1893
+ pulumi.set(self, "vpc_cni", value)
1894
+
1895
+
1896
+ if not MYPY:
1897
+ class CoreDnsAddonOptionsArgsDict(TypedDict):
1898
+ configuration_values: NotRequired[pulumi.Input[Mapping[str, Any]]]
1899
+ """
1900
+ Custom configuration values for the coredns addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
1901
+ """
1902
+ enabled: NotRequired[_builtins.bool]
1903
+ """
1904
+ Whether or not to create the `coredns` Addon in the cluster
1905
+
1906
+ The managed addon can only be enabled if the cluster is a Fargate cluster or if the cluster
1907
+ uses the default node group, otherwise the self-managed addon is used.
1908
+ """
1909
+ resolve_conflicts_on_create: NotRequired['ResolveConflictsOnCreate']
1910
+ """
1911
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
1912
+ """
1913
+ resolve_conflicts_on_update: NotRequired['ResolveConflictsOnUpdate']
1914
+ """
1915
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
1916
+ """
1917
+ version: NotRequired[pulumi.Input[_builtins.str]]
1918
+ """
1919
+ The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
1920
+ """
1921
+ elif False:
1922
+ CoreDnsAddonOptionsArgsDict: TypeAlias = Mapping[str, Any]
1923
+
1924
+ @pulumi.input_type
1925
+ class CoreDnsAddonOptionsArgs:
1926
+ def __init__(__self__, *,
1927
+ configuration_values: Optional[pulumi.Input[Mapping[str, Any]]] = None,
1928
+ enabled: Optional[_builtins.bool] = None,
1929
+ resolve_conflicts_on_create: Optional['ResolveConflictsOnCreate'] = None,
1930
+ resolve_conflicts_on_update: Optional['ResolveConflictsOnUpdate'] = None,
1931
+ version: Optional[pulumi.Input[_builtins.str]] = None):
1932
+ """
1933
+ :param pulumi.Input[Mapping[str, Any]] configuration_values: Custom configuration values for the coredns addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
1934
+ :param _builtins.bool enabled: Whether or not to create the `coredns` Addon in the cluster
1935
+
1936
+ The managed addon can only be enabled if the cluster is a Fargate cluster or if the cluster
1937
+ uses the default node group, otherwise the self-managed addon is used.
1938
+ :param 'ResolveConflictsOnCreate' resolve_conflicts_on_create: How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
1939
+ :param 'ResolveConflictsOnUpdate' resolve_conflicts_on_update: How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
1940
+ :param pulumi.Input[_builtins.str] version: The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
1941
+ """
1942
+ if configuration_values is not None:
1943
+ pulumi.set(__self__, "configuration_values", configuration_values)
1944
+ if enabled is None:
1945
+ enabled = True
1946
+ if enabled is not None:
1947
+ pulumi.set(__self__, "enabled", enabled)
1948
+ if resolve_conflicts_on_create is None:
1949
+ resolve_conflicts_on_create = 'OVERWRITE'
1950
+ if resolve_conflicts_on_create is not None:
1951
+ pulumi.set(__self__, "resolve_conflicts_on_create", resolve_conflicts_on_create)
1952
+ if resolve_conflicts_on_update is None:
1953
+ resolve_conflicts_on_update = 'OVERWRITE'
1954
+ if resolve_conflicts_on_update is not None:
1955
+ pulumi.set(__self__, "resolve_conflicts_on_update", resolve_conflicts_on_update)
1956
+ if version is not None:
1957
+ pulumi.set(__self__, "version", version)
1958
+
1959
+ @_builtins.property
1960
+ @pulumi.getter(name="configurationValues")
1961
+ def configuration_values(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
1962
+ """
1963
+ Custom configuration values for the coredns addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
1964
+ """
1965
+ return pulumi.get(self, "configuration_values")
1966
+
1967
+ @configuration_values.setter
1968
+ def configuration_values(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
1969
+ pulumi.set(self, "configuration_values", value)
1970
+
1971
+ @_builtins.property
1972
+ @pulumi.getter
1973
+ def enabled(self) -> Optional[_builtins.bool]:
1974
+ """
1975
+ Whether or not to create the `coredns` Addon in the cluster
1976
+
1977
+ The managed addon can only be enabled if the cluster is a Fargate cluster or if the cluster
1978
+ uses the default node group, otherwise the self-managed addon is used.
1979
+ """
1980
+ return pulumi.get(self, "enabled")
1981
+
1982
+ @enabled.setter
1983
+ def enabled(self, value: Optional[_builtins.bool]):
1984
+ pulumi.set(self, "enabled", value)
1985
+
1986
+ @_builtins.property
1987
+ @pulumi.getter(name="resolveConflictsOnCreate")
1988
+ def resolve_conflicts_on_create(self) -> Optional['ResolveConflictsOnCreate']:
1989
+ """
1990
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
1991
+ """
1992
+ return pulumi.get(self, "resolve_conflicts_on_create")
1993
+
1994
+ @resolve_conflicts_on_create.setter
1995
+ def resolve_conflicts_on_create(self, value: Optional['ResolveConflictsOnCreate']):
1996
+ pulumi.set(self, "resolve_conflicts_on_create", value)
1997
+
1998
+ @_builtins.property
1999
+ @pulumi.getter(name="resolveConflictsOnUpdate")
2000
+ def resolve_conflicts_on_update(self) -> Optional['ResolveConflictsOnUpdate']:
2001
+ """
2002
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
2003
+ """
2004
+ return pulumi.get(self, "resolve_conflicts_on_update")
2005
+
2006
+ @resolve_conflicts_on_update.setter
2007
+ def resolve_conflicts_on_update(self, value: Optional['ResolveConflictsOnUpdate']):
2008
+ pulumi.set(self, "resolve_conflicts_on_update", value)
2009
+
2010
+ @_builtins.property
2011
+ @pulumi.getter
2012
+ def version(self) -> Optional[pulumi.Input[_builtins.str]]:
2013
+ """
2014
+ The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
2015
+ """
2016
+ return pulumi.get(self, "version")
2017
+
2018
+ @version.setter
2019
+ def version(self, value: Optional[pulumi.Input[_builtins.str]]):
2020
+ pulumi.set(self, "version", value)
2021
+
2022
+
2023
+ if not MYPY:
2024
+ class CreationRoleProviderArgsDict(TypedDict):
2025
+ """
2026
+ Contains the AWS Role and Provider necessary to override the `[system:master]` entity ARN. This is an optional argument used when creating `Cluster`. Read more: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
2027
+
2028
+ Note: This option is only supported with Pulumi nodejs programs. Please use `ProviderCredentialOpts` as an alternative instead.
2029
+ """
2030
+ provider: 'pulumi_aws.Provider'
2031
+ role: 'pulumi_aws.iam.Role'
2032
+ elif False:
2033
+ CreationRoleProviderArgsDict: TypeAlias = Mapping[str, Any]
2034
+
2035
+ @pulumi.input_type
2036
+ class CreationRoleProviderArgs:
2037
+ def __init__(__self__, *,
2038
+ provider: 'pulumi_aws.Provider',
2039
+ role: 'pulumi_aws.iam.Role'):
2040
+ """
2041
+ Contains the AWS Role and Provider necessary to override the `[system:master]` entity ARN. This is an optional argument used when creating `Cluster`. Read more: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
2042
+
2043
+ Note: This option is only supported with Pulumi nodejs programs. Please use `ProviderCredentialOpts` as an alternative instead.
2044
+ """
2045
+ pulumi.set(__self__, "provider", provider)
2046
+ pulumi.set(__self__, "role", role)
2047
+
2048
+ @_builtins.property
2049
+ @pulumi.getter
2050
+ def provider(self) -> 'pulumi_aws.Provider':
2051
+ return pulumi.get(self, "provider")
2052
+
2053
+ @provider.setter
2054
+ def provider(self, value: 'pulumi_aws.Provider'):
2055
+ pulumi.set(self, "provider", value)
2056
+
2057
+ @_builtins.property
2058
+ @pulumi.getter
2059
+ def role(self) -> 'pulumi_aws.iam.Role':
2060
+ return pulumi.get(self, "role")
2061
+
2062
+ @role.setter
2063
+ def role(self, value: 'pulumi_aws.iam.Role'):
2064
+ pulumi.set(self, "role", value)
2065
+
2066
+
2067
+ if not MYPY:
2068
+ class FargateProfileArgsDict(TypedDict):
2069
+ """
2070
+ Defines how Kubernetes pods are executed in Fargate. See aws.eks.FargateProfileArgs for reference.
2071
+ """
2072
+ pod_execution_role_arn: NotRequired[pulumi.Input[_builtins.str]]
2073
+ """
2074
+ Specify a custom role to use for executing pods in Fargate. Defaults to creating a new role with the `arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy` policy attached.
2075
+ """
2076
+ selectors: NotRequired[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.eks.FargateProfileSelectorArgsDict']]]]
2077
+ """
2078
+ Specify the namespace and label selectors to use for launching pods into Fargate.
2079
+ """
2080
+ subnet_ids: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
2081
+ """
2082
+ Specify the subnets in which to execute Fargate tasks for pods. Defaults to the private subnets associated with the cluster.
2083
+ """
2084
+ elif False:
2085
+ FargateProfileArgsDict: TypeAlias = Mapping[str, Any]
2086
+
2087
+ @pulumi.input_type
2088
+ class FargateProfileArgs:
2089
+ def __init__(__self__, *,
2090
+ pod_execution_role_arn: Optional[pulumi.Input[_builtins.str]] = None,
2091
+ selectors: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.eks.FargateProfileSelectorArgs']]]] = None,
2092
+ subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
2093
+ """
2094
+ Defines how Kubernetes pods are executed in Fargate. See aws.eks.FargateProfileArgs for reference.
2095
+ :param pulumi.Input[_builtins.str] pod_execution_role_arn: Specify a custom role to use for executing pods in Fargate. Defaults to creating a new role with the `arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy` policy attached.
2096
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.eks.FargateProfileSelectorArgs']]] selectors: Specify the namespace and label selectors to use for launching pods into Fargate.
2097
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] subnet_ids: Specify the subnets in which to execute Fargate tasks for pods. Defaults to the private subnets associated with the cluster.
2098
+ """
2099
+ if pod_execution_role_arn is not None:
2100
+ pulumi.set(__self__, "pod_execution_role_arn", pod_execution_role_arn)
2101
+ if selectors is not None:
2102
+ pulumi.set(__self__, "selectors", selectors)
2103
+ if subnet_ids is not None:
2104
+ pulumi.set(__self__, "subnet_ids", subnet_ids)
2105
+
2106
+ @_builtins.property
2107
+ @pulumi.getter(name="podExecutionRoleArn")
2108
+ def pod_execution_role_arn(self) -> Optional[pulumi.Input[_builtins.str]]:
2109
+ """
2110
+ Specify a custom role to use for executing pods in Fargate. Defaults to creating a new role with the `arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy` policy attached.
2111
+ """
2112
+ return pulumi.get(self, "pod_execution_role_arn")
2113
+
2114
+ @pod_execution_role_arn.setter
2115
+ def pod_execution_role_arn(self, value: Optional[pulumi.Input[_builtins.str]]):
2116
+ pulumi.set(self, "pod_execution_role_arn", value)
2117
+
2118
+ @_builtins.property
2119
+ @pulumi.getter
2120
+ def selectors(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.eks.FargateProfileSelectorArgs']]]]:
2121
+ """
2122
+ Specify the namespace and label selectors to use for launching pods into Fargate.
2123
+ """
2124
+ return pulumi.get(self, "selectors")
2125
+
2126
+ @selectors.setter
2127
+ def selectors(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.eks.FargateProfileSelectorArgs']]]]):
2128
+ pulumi.set(self, "selectors", value)
2129
+
2130
+ @_builtins.property
2131
+ @pulumi.getter(name="subnetIds")
2132
+ def subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
2133
+ """
2134
+ Specify the subnets in which to execute Fargate tasks for pods. Defaults to the private subnets associated with the cluster.
2135
+ """
2136
+ return pulumi.get(self, "subnet_ids")
2137
+
2138
+ @subnet_ids.setter
2139
+ def subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
2140
+ pulumi.set(self, "subnet_ids", value)
2141
+
2142
+
2143
+ if not MYPY:
2144
+ class KubeProxyAddonOptionsArgsDict(TypedDict):
2145
+ configuration_values: NotRequired[pulumi.Input[Mapping[str, Any]]]
2146
+ """
2147
+ Custom configuration values for the kube-proxy addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
2148
+ """
2149
+ enabled: NotRequired[_builtins.bool]
2150
+ """
2151
+ Whether or not to create the `kube-proxy` Addon in the cluster. Defaults to true, unless `autoMode` is enabled.
2152
+ """
2153
+ resolve_conflicts_on_create: NotRequired['ResolveConflictsOnCreate']
2154
+ """
2155
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
2156
+ """
2157
+ resolve_conflicts_on_update: NotRequired['ResolveConflictsOnUpdate']
2158
+ """
2159
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
2160
+ """
2161
+ version: NotRequired[pulumi.Input[_builtins.str]]
2162
+ """
2163
+ The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
2164
+ """
2165
+ elif False:
2166
+ KubeProxyAddonOptionsArgsDict: TypeAlias = Mapping[str, Any]
2167
+
2168
+ @pulumi.input_type
2169
+ class KubeProxyAddonOptionsArgs:
2170
+ def __init__(__self__, *,
2171
+ configuration_values: Optional[pulumi.Input[Mapping[str, Any]]] = None,
2172
+ enabled: Optional[_builtins.bool] = None,
2173
+ resolve_conflicts_on_create: Optional['ResolveConflictsOnCreate'] = None,
2174
+ resolve_conflicts_on_update: Optional['ResolveConflictsOnUpdate'] = None,
2175
+ version: Optional[pulumi.Input[_builtins.str]] = None):
2176
+ """
2177
+ :param pulumi.Input[Mapping[str, Any]] configuration_values: Custom configuration values for the kube-proxy addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
2178
+ :param _builtins.bool enabled: Whether or not to create the `kube-proxy` Addon in the cluster. Defaults to true, unless `autoMode` is enabled.
2179
+ :param 'ResolveConflictsOnCreate' resolve_conflicts_on_create: How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
2180
+ :param 'ResolveConflictsOnUpdate' resolve_conflicts_on_update: How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
2181
+ :param pulumi.Input[_builtins.str] version: The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
2182
+ """
2183
+ if configuration_values is not None:
2184
+ pulumi.set(__self__, "configuration_values", configuration_values)
2185
+ if enabled is not None:
2186
+ pulumi.set(__self__, "enabled", enabled)
2187
+ if resolve_conflicts_on_create is None:
2188
+ resolve_conflicts_on_create = 'OVERWRITE'
2189
+ if resolve_conflicts_on_create is not None:
2190
+ pulumi.set(__self__, "resolve_conflicts_on_create", resolve_conflicts_on_create)
2191
+ if resolve_conflicts_on_update is None:
2192
+ resolve_conflicts_on_update = 'OVERWRITE'
2193
+ if resolve_conflicts_on_update is not None:
2194
+ pulumi.set(__self__, "resolve_conflicts_on_update", resolve_conflicts_on_update)
2195
+ if version is not None:
2196
+ pulumi.set(__self__, "version", version)
2197
+
2198
+ @_builtins.property
2199
+ @pulumi.getter(name="configurationValues")
2200
+ def configuration_values(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
2201
+ """
2202
+ Custom configuration values for the kube-proxy addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
2203
+ """
2204
+ return pulumi.get(self, "configuration_values")
2205
+
2206
+ @configuration_values.setter
2207
+ def configuration_values(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
2208
+ pulumi.set(self, "configuration_values", value)
2209
+
2210
+ @_builtins.property
2211
+ @pulumi.getter
2212
+ def enabled(self) -> Optional[_builtins.bool]:
2213
+ """
2214
+ Whether or not to create the `kube-proxy` Addon in the cluster. Defaults to true, unless `autoMode` is enabled.
2215
+ """
2216
+ return pulumi.get(self, "enabled")
2217
+
2218
+ @enabled.setter
2219
+ def enabled(self, value: Optional[_builtins.bool]):
2220
+ pulumi.set(self, "enabled", value)
2221
+
2222
+ @_builtins.property
2223
+ @pulumi.getter(name="resolveConflictsOnCreate")
2224
+ def resolve_conflicts_on_create(self) -> Optional['ResolveConflictsOnCreate']:
2225
+ """
2226
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
2227
+ """
2228
+ return pulumi.get(self, "resolve_conflicts_on_create")
2229
+
2230
+ @resolve_conflicts_on_create.setter
2231
+ def resolve_conflicts_on_create(self, value: Optional['ResolveConflictsOnCreate']):
2232
+ pulumi.set(self, "resolve_conflicts_on_create", value)
2233
+
2234
+ @_builtins.property
2235
+ @pulumi.getter(name="resolveConflictsOnUpdate")
2236
+ def resolve_conflicts_on_update(self) -> Optional['ResolveConflictsOnUpdate']:
2237
+ """
2238
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
2239
+ """
2240
+ return pulumi.get(self, "resolve_conflicts_on_update")
2241
+
2242
+ @resolve_conflicts_on_update.setter
2243
+ def resolve_conflicts_on_update(self, value: Optional['ResolveConflictsOnUpdate']):
2244
+ pulumi.set(self, "resolve_conflicts_on_update", value)
2245
+
2246
+ @_builtins.property
2247
+ @pulumi.getter
2248
+ def version(self) -> Optional[pulumi.Input[_builtins.str]]:
2249
+ """
2250
+ The version of the EKS add-on. The version must match one of the versions returned by [describe-addon-versions](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-versions.html).
2251
+ """
2252
+ return pulumi.get(self, "version")
2253
+
2254
+ @version.setter
2255
+ def version(self, value: Optional[pulumi.Input[_builtins.str]]):
2256
+ pulumi.set(self, "version", value)
2257
+
2258
+
2259
+ if not MYPY:
2260
+ class KubeconfigOptionsArgsDict(TypedDict):
2261
+ """
2262
+ Represents the AWS credentials to scope a given kubeconfig when using a non-default credential chain.
2263
+
2264
+ The options can be used independently, or additively.
2265
+
2266
+ A scoped kubeconfig is necessary for certain auth scenarios. For example:
2267
+ 1. Assume a role on the default account caller,
2268
+ 2. Use an AWS creds profile instead of the default account caller,
2269
+ 3. Use an AWS creds creds profile instead of the default account caller,
2270
+ and then assume a given role on the profile. This scenario is also
2271
+ possible by only using a profile, iff the profile includes a role to
2272
+ assume in its settings.
2273
+
2274
+ See for more details:
2275
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
2276
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html
2277
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
2278
+ """
2279
+ profile_name: NotRequired[pulumi.Input[_builtins.str]]
2280
+ """
2281
+ AWS credential profile name to always use instead of the default AWS credential provider chain.
2282
+
2283
+ The profile is passed to kubeconfig as an authentication environment setting.
2284
+ """
2285
+ role_arn: NotRequired[pulumi.Input[_builtins.str]]
2286
+ """
2287
+ Role ARN to assume instead of the default AWS credential provider chain.
2288
+
2289
+ The role is passed to kubeconfig as an authentication exec argument.
2290
+ """
2291
+ elif False:
2292
+ KubeconfigOptionsArgsDict: TypeAlias = Mapping[str, Any]
2293
+
2294
+ @pulumi.input_type
2295
+ class KubeconfigOptionsArgs:
2296
+ def __init__(__self__, *,
2297
+ profile_name: Optional[pulumi.Input[_builtins.str]] = None,
2298
+ role_arn: Optional[pulumi.Input[_builtins.str]] = None):
2299
+ """
2300
+ Represents the AWS credentials to scope a given kubeconfig when using a non-default credential chain.
2301
+
2302
+ The options can be used independently, or additively.
2303
+
2304
+ A scoped kubeconfig is necessary for certain auth scenarios. For example:
2305
+ 1. Assume a role on the default account caller,
2306
+ 2. Use an AWS creds profile instead of the default account caller,
2307
+ 3. Use an AWS creds creds profile instead of the default account caller,
2308
+ and then assume a given role on the profile. This scenario is also
2309
+ possible by only using a profile, iff the profile includes a role to
2310
+ assume in its settings.
2311
+
2312
+ See for more details:
2313
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
2314
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html
2315
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
2316
+ :param pulumi.Input[_builtins.str] profile_name: AWS credential profile name to always use instead of the default AWS credential provider chain.
2317
+
2318
+ The profile is passed to kubeconfig as an authentication environment setting.
2319
+ :param pulumi.Input[_builtins.str] role_arn: Role ARN to assume instead of the default AWS credential provider chain.
2320
+
2321
+ The role is passed to kubeconfig as an authentication exec argument.
2322
+ """
2323
+ if profile_name is not None:
2324
+ pulumi.set(__self__, "profile_name", profile_name)
2325
+ if role_arn is not None:
2326
+ pulumi.set(__self__, "role_arn", role_arn)
2327
+
2328
+ @_builtins.property
2329
+ @pulumi.getter(name="profileName")
2330
+ def profile_name(self) -> Optional[pulumi.Input[_builtins.str]]:
2331
+ """
2332
+ AWS credential profile name to always use instead of the default AWS credential provider chain.
2333
+
2334
+ The profile is passed to kubeconfig as an authentication environment setting.
2335
+ """
2336
+ return pulumi.get(self, "profile_name")
2337
+
2338
+ @profile_name.setter
2339
+ def profile_name(self, value: Optional[pulumi.Input[_builtins.str]]):
2340
+ pulumi.set(self, "profile_name", value)
2341
+
2342
+ @_builtins.property
2343
+ @pulumi.getter(name="roleArn")
2344
+ def role_arn(self) -> Optional[pulumi.Input[_builtins.str]]:
2345
+ """
2346
+ Role ARN to assume instead of the default AWS credential provider chain.
2347
+
2348
+ The role is passed to kubeconfig as an authentication exec argument.
2349
+ """
2350
+ return pulumi.get(self, "role_arn")
2351
+
2352
+ @role_arn.setter
2353
+ def role_arn(self, value: Optional[pulumi.Input[_builtins.str]]):
2354
+ pulumi.set(self, "role_arn", value)
2355
+
2356
+
2357
+ if not MYPY:
2358
+ class NodeadmOptionsArgsDict(TypedDict):
2359
+ """
2360
+ MIME document parts for nodeadm configuration. This can be shell scripts, nodeadm configuration or any other user data compatible script.
2361
+
2362
+ See for more details: https://awslabs.github.io/amazon-eks-ami/nodeadm/.
2363
+ """
2364
+ content: pulumi.Input[_builtins.str]
2365
+ """
2366
+ The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
2367
+ """
2368
+ content_type: pulumi.Input[_builtins.str]
2369
+ """
2370
+ The MIME type of the content. Examples are `text/x-shellscript; charset="us-ascii"` for shell scripts, and `application/node.eks.aws` nodeadm configuration.
2371
+ """
2372
+ elif False:
2373
+ NodeadmOptionsArgsDict: TypeAlias = Mapping[str, Any]
2374
+
2375
+ @pulumi.input_type
2376
+ class NodeadmOptionsArgs:
2377
+ def __init__(__self__, *,
2378
+ content: pulumi.Input[_builtins.str],
2379
+ content_type: pulumi.Input[_builtins.str]):
2380
+ """
2381
+ MIME document parts for nodeadm configuration. This can be shell scripts, nodeadm configuration or any other user data compatible script.
2382
+
2383
+ See for more details: https://awslabs.github.io/amazon-eks-ami/nodeadm/.
2384
+ :param pulumi.Input[_builtins.str] content: The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
2385
+ :param pulumi.Input[_builtins.str] content_type: The MIME type of the content. Examples are `text/x-shellscript; charset="us-ascii"` for shell scripts, and `application/node.eks.aws` nodeadm configuration.
2386
+ """
2387
+ pulumi.set(__self__, "content", content)
2388
+ pulumi.set(__self__, "content_type", content_type)
2389
+
2390
+ @_builtins.property
2391
+ @pulumi.getter
2392
+ def content(self) -> pulumi.Input[_builtins.str]:
2393
+ """
2394
+ The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
2395
+ """
2396
+ return pulumi.get(self, "content")
2397
+
2398
+ @content.setter
2399
+ def content(self, value: pulumi.Input[_builtins.str]):
2400
+ pulumi.set(self, "content", value)
2401
+
2402
+ @_builtins.property
2403
+ @pulumi.getter(name="contentType")
2404
+ def content_type(self) -> pulumi.Input[_builtins.str]:
2405
+ """
2406
+ The MIME type of the content. Examples are `text/x-shellscript; charset="us-ascii"` for shell scripts, and `application/node.eks.aws` nodeadm configuration.
2407
+ """
2408
+ return pulumi.get(self, "content_type")
2409
+
2410
+ @content_type.setter
2411
+ def content_type(self, value: pulumi.Input[_builtins.str]):
2412
+ pulumi.set(self, "content_type", value)
2413
+
2414
+
2415
+ if not MYPY:
2416
+ class RoleMappingArgsDict(TypedDict):
2417
+ """
2418
+ Describes a mapping from an AWS IAM role to a Kubernetes user and groups.
2419
+ """
2420
+ groups: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
2421
+ """
2422
+ A list of groups within Kubernetes to which the role is mapped.
2423
+ """
2424
+ role_arn: pulumi.Input[_builtins.str]
2425
+ """
2426
+ The ARN of the IAM role to add.
2427
+ """
2428
+ username: pulumi.Input[_builtins.str]
2429
+ """
2430
+ The user name within Kubernetes to map to the IAM role. By default, the user name is the ARN of the IAM role.
2431
+ """
2432
+ elif False:
2433
+ RoleMappingArgsDict: TypeAlias = Mapping[str, Any]
2434
+
2435
+ @pulumi.input_type
2436
+ class RoleMappingArgs:
2437
+ def __init__(__self__, *,
2438
+ groups: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
2439
+ role_arn: pulumi.Input[_builtins.str],
2440
+ username: pulumi.Input[_builtins.str]):
2441
+ """
2442
+ Describes a mapping from an AWS IAM role to a Kubernetes user and groups.
2443
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] groups: A list of groups within Kubernetes to which the role is mapped.
2444
+ :param pulumi.Input[_builtins.str] role_arn: The ARN of the IAM role to add.
2445
+ :param pulumi.Input[_builtins.str] username: The user name within Kubernetes to map to the IAM role. By default, the user name is the ARN of the IAM role.
2446
+ """
2447
+ pulumi.set(__self__, "groups", groups)
2448
+ pulumi.set(__self__, "role_arn", role_arn)
2449
+ pulumi.set(__self__, "username", username)
2450
+
2451
+ @_builtins.property
2452
+ @pulumi.getter
2453
+ def groups(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
2454
+ """
2455
+ A list of groups within Kubernetes to which the role is mapped.
2456
+ """
2457
+ return pulumi.get(self, "groups")
2458
+
2459
+ @groups.setter
2460
+ def groups(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
2461
+ pulumi.set(self, "groups", value)
2462
+
2463
+ @_builtins.property
2464
+ @pulumi.getter(name="roleArn")
2465
+ def role_arn(self) -> pulumi.Input[_builtins.str]:
2466
+ """
2467
+ The ARN of the IAM role to add.
2468
+ """
2469
+ return pulumi.get(self, "role_arn")
2470
+
2471
+ @role_arn.setter
2472
+ def role_arn(self, value: pulumi.Input[_builtins.str]):
2473
+ pulumi.set(self, "role_arn", value)
2474
+
2475
+ @_builtins.property
2476
+ @pulumi.getter
2477
+ def username(self) -> pulumi.Input[_builtins.str]:
2478
+ """
2479
+ The user name within Kubernetes to map to the IAM role. By default, the user name is the ARN of the IAM role.
2480
+ """
2481
+ return pulumi.get(self, "username")
2482
+
2483
+ @username.setter
2484
+ def username(self, value: pulumi.Input[_builtins.str]):
2485
+ pulumi.set(self, "username", value)
2486
+
2487
+
2488
+ if not MYPY:
2489
+ class StorageClassArgsDict(TypedDict):
2490
+ """
2491
+ StorageClass describes the inputs to a single Kubernetes StorageClass provisioned by AWS. Any number of storage classes can be added to a cluster at creation time. One of these storage classes may be configured the default storage class for the cluster.
2492
+ """
2493
+ type: pulumi.Input[_builtins.str]
2494
+ """
2495
+ The EBS volume type.
2496
+ """
2497
+ allow_volume_expansion: NotRequired[pulumi.Input[_builtins.bool]]
2498
+ """
2499
+ AllowVolumeExpansion shows whether the storage class allow volume expand.
2500
+ """
2501
+ default: NotRequired[pulumi.Input[_builtins.bool]]
2502
+ """
2503
+ True if this storage class should be a default storage class for the cluster.
2504
+
2505
+ Note: As of Kubernetes v1.11+ on EKS, a default `gp2` storage class will always be created automatically for the cluster by the EKS service. See https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html
2506
+
2507
+ Please note that at most one storage class can be marked as default. If two or more of them are marked as default, a PersistentVolumeClaim without `storageClassName` explicitly specified cannot be created. See: https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/#changing-the-default-storageclass
2508
+ """
2509
+ encrypted: NotRequired[pulumi.Input[_builtins.bool]]
2510
+ """
2511
+ Denotes whether the EBS volume should be encrypted.
2512
+ """
2513
+ iops_per_gb: NotRequired[pulumi.Input[_builtins.int]]
2514
+ """
2515
+ I/O operations per second per GiB for "io1" volumes. The AWS volume plugin multiplies this with the size of a requested volume to compute IOPS of the volume and caps the result at 20,000 IOPS.
2516
+ """
2517
+ kms_key_id: NotRequired[pulumi.Input[_builtins.str]]
2518
+ """
2519
+ The full Amazon Resource Name of the key to use when encrypting the volume. If none is supplied but encrypted is true, a key is generated by AWS.
2520
+ """
2521
+ metadata: NotRequired[pulumi.Input['pulumi_kubernetes.meta.v1.ObjectMetaArgsDict']]
2522
+ """
2523
+ Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2524
+ """
2525
+ mount_options: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
2526
+ """
2527
+ Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.
2528
+ """
2529
+ reclaim_policy: NotRequired[pulumi.Input[_builtins.str]]
2530
+ """
2531
+ Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.
2532
+ """
2533
+ volume_binding_mode: NotRequired[pulumi.Input[_builtins.str]]
2534
+ """
2535
+ VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is alpha-level and is only honored by servers that enable the VolumeScheduling feature.
2536
+ """
2537
+ zones: NotRequired[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]
2538
+ """
2539
+ The AWS zone or zones for the EBS volume. If zones is not specified, volumes are generally round-robin-ed across all active zones where Kubernetes cluster has a node. zone and zones parameters must not be used at the same time.
2540
+ """
2541
+ elif False:
2542
+ StorageClassArgsDict: TypeAlias = Mapping[str, Any]
2543
+
2544
+ @pulumi.input_type
2545
+ class StorageClassArgs:
2546
+ def __init__(__self__, *,
2547
+ type: pulumi.Input[_builtins.str],
2548
+ allow_volume_expansion: Optional[pulumi.Input[_builtins.bool]] = None,
2549
+ default: Optional[pulumi.Input[_builtins.bool]] = None,
2550
+ encrypted: Optional[pulumi.Input[_builtins.bool]] = None,
2551
+ iops_per_gb: Optional[pulumi.Input[_builtins.int]] = None,
2552
+ kms_key_id: Optional[pulumi.Input[_builtins.str]] = None,
2553
+ metadata: Optional[pulumi.Input['pulumi_kubernetes.meta.v1.ObjectMetaArgs']] = None,
2554
+ mount_options: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
2555
+ reclaim_policy: Optional[pulumi.Input[_builtins.str]] = None,
2556
+ volume_binding_mode: Optional[pulumi.Input[_builtins.str]] = None,
2557
+ zones: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None):
2558
+ """
2559
+ StorageClass describes the inputs to a single Kubernetes StorageClass provisioned by AWS. Any number of storage classes can be added to a cluster at creation time. One of these storage classes may be configured the default storage class for the cluster.
2560
+ :param pulumi.Input[_builtins.str] type: The EBS volume type.
2561
+ :param pulumi.Input[_builtins.bool] allow_volume_expansion: AllowVolumeExpansion shows whether the storage class allow volume expand.
2562
+ :param pulumi.Input[_builtins.bool] default: True if this storage class should be a default storage class for the cluster.
2563
+
2564
+ Note: As of Kubernetes v1.11+ on EKS, a default `gp2` storage class will always be created automatically for the cluster by the EKS service. See https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html
2565
+
2566
+ Please note that at most one storage class can be marked as default. If two or more of them are marked as default, a PersistentVolumeClaim without `storageClassName` explicitly specified cannot be created. See: https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/#changing-the-default-storageclass
2567
+ :param pulumi.Input[_builtins.bool] encrypted: Denotes whether the EBS volume should be encrypted.
2568
+ :param pulumi.Input[_builtins.int] iops_per_gb: I/O operations per second per GiB for "io1" volumes. The AWS volume plugin multiplies this with the size of a requested volume to compute IOPS of the volume and caps the result at 20,000 IOPS.
2569
+ :param pulumi.Input[_builtins.str] kms_key_id: The full Amazon Resource Name of the key to use when encrypting the volume. If none is supplied but encrypted is true, a key is generated by AWS.
2570
+ :param pulumi.Input['pulumi_kubernetes.meta.v1.ObjectMetaArgs'] metadata: Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2571
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] mount_options: Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.
2572
+ :param pulumi.Input[_builtins.str] reclaim_policy: Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.
2573
+ :param pulumi.Input[_builtins.str] volume_binding_mode: VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is alpha-level and is only honored by servers that enable the VolumeScheduling feature.
2574
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] zones: The AWS zone or zones for the EBS volume. If zones is not specified, volumes are generally round-robin-ed across all active zones where Kubernetes cluster has a node. zone and zones parameters must not be used at the same time.
2575
+ """
2576
+ pulumi.set(__self__, "type", type)
2577
+ if allow_volume_expansion is not None:
2578
+ pulumi.set(__self__, "allow_volume_expansion", allow_volume_expansion)
2579
+ if default is not None:
2580
+ pulumi.set(__self__, "default", default)
2581
+ if encrypted is not None:
2582
+ pulumi.set(__self__, "encrypted", encrypted)
2583
+ if iops_per_gb is not None:
2584
+ pulumi.set(__self__, "iops_per_gb", iops_per_gb)
2585
+ if kms_key_id is not None:
2586
+ pulumi.set(__self__, "kms_key_id", kms_key_id)
2587
+ if metadata is not None:
2588
+ pulumi.set(__self__, "metadata", metadata)
2589
+ if mount_options is not None:
2590
+ pulumi.set(__self__, "mount_options", mount_options)
2591
+ if reclaim_policy is not None:
2592
+ pulumi.set(__self__, "reclaim_policy", reclaim_policy)
2593
+ if volume_binding_mode is not None:
2594
+ pulumi.set(__self__, "volume_binding_mode", volume_binding_mode)
2595
+ if zones is not None:
2596
+ pulumi.set(__self__, "zones", zones)
2597
+
2598
+ @_builtins.property
2599
+ @pulumi.getter
2600
+ def type(self) -> pulumi.Input[_builtins.str]:
2601
+ """
2602
+ The EBS volume type.
2603
+ """
2604
+ return pulumi.get(self, "type")
2605
+
2606
+ @type.setter
2607
+ def type(self, value: pulumi.Input[_builtins.str]):
2608
+ pulumi.set(self, "type", value)
2609
+
2610
+ @_builtins.property
2611
+ @pulumi.getter(name="allowVolumeExpansion")
2612
+ def allow_volume_expansion(self) -> Optional[pulumi.Input[_builtins.bool]]:
2613
+ """
2614
+ AllowVolumeExpansion shows whether the storage class allow volume expand.
2615
+ """
2616
+ return pulumi.get(self, "allow_volume_expansion")
2617
+
2618
+ @allow_volume_expansion.setter
2619
+ def allow_volume_expansion(self, value: Optional[pulumi.Input[_builtins.bool]]):
2620
+ pulumi.set(self, "allow_volume_expansion", value)
2621
+
2622
+ @_builtins.property
2623
+ @pulumi.getter
2624
+ def default(self) -> Optional[pulumi.Input[_builtins.bool]]:
2625
+ """
2626
+ True if this storage class should be a default storage class for the cluster.
2627
+
2628
+ Note: As of Kubernetes v1.11+ on EKS, a default `gp2` storage class will always be created automatically for the cluster by the EKS service. See https://docs.aws.amazon.com/eks/latest/userguide/storage-classes.html
2629
+
2630
+ Please note that at most one storage class can be marked as default. If two or more of them are marked as default, a PersistentVolumeClaim without `storageClassName` explicitly specified cannot be created. See: https://kubernetes.io/docs/tasks/administer-cluster/change-default-storage-class/#changing-the-default-storageclass
2631
+ """
2632
+ return pulumi.get(self, "default")
2633
+
2634
+ @default.setter
2635
+ def default(self, value: Optional[pulumi.Input[_builtins.bool]]):
2636
+ pulumi.set(self, "default", value)
2637
+
2638
+ @_builtins.property
2639
+ @pulumi.getter
2640
+ def encrypted(self) -> Optional[pulumi.Input[_builtins.bool]]:
2641
+ """
2642
+ Denotes whether the EBS volume should be encrypted.
2643
+ """
2644
+ return pulumi.get(self, "encrypted")
2645
+
2646
+ @encrypted.setter
2647
+ def encrypted(self, value: Optional[pulumi.Input[_builtins.bool]]):
2648
+ pulumi.set(self, "encrypted", value)
2649
+
2650
+ @_builtins.property
2651
+ @pulumi.getter(name="iopsPerGb")
2652
+ def iops_per_gb(self) -> Optional[pulumi.Input[_builtins.int]]:
2653
+ """
2654
+ I/O operations per second per GiB for "io1" volumes. The AWS volume plugin multiplies this with the size of a requested volume to compute IOPS of the volume and caps the result at 20,000 IOPS.
2655
+ """
2656
+ return pulumi.get(self, "iops_per_gb")
2657
+
2658
+ @iops_per_gb.setter
2659
+ def iops_per_gb(self, value: Optional[pulumi.Input[_builtins.int]]):
2660
+ pulumi.set(self, "iops_per_gb", value)
2661
+
2662
+ @_builtins.property
2663
+ @pulumi.getter(name="kmsKeyId")
2664
+ def kms_key_id(self) -> Optional[pulumi.Input[_builtins.str]]:
2665
+ """
2666
+ The full Amazon Resource Name of the key to use when encrypting the volume. If none is supplied but encrypted is true, a key is generated by AWS.
2667
+ """
2668
+ return pulumi.get(self, "kms_key_id")
2669
+
2670
+ @kms_key_id.setter
2671
+ def kms_key_id(self, value: Optional[pulumi.Input[_builtins.str]]):
2672
+ pulumi.set(self, "kms_key_id", value)
2673
+
2674
+ @_builtins.property
2675
+ @pulumi.getter
2676
+ def metadata(self) -> Optional[pulumi.Input['pulumi_kubernetes.meta.v1.ObjectMetaArgs']]:
2677
+ """
2678
+ Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2679
+ """
2680
+ return pulumi.get(self, "metadata")
2681
+
2682
+ @metadata.setter
2683
+ def metadata(self, value: Optional[pulumi.Input['pulumi_kubernetes.meta.v1.ObjectMetaArgs']]):
2684
+ pulumi.set(self, "metadata", value)
2685
+
2686
+ @_builtins.property
2687
+ @pulumi.getter(name="mountOptions")
2688
+ def mount_options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
2689
+ """
2690
+ Dynamically provisioned PersistentVolumes of this storage class are created with these mountOptions, e.g. ["ro", "soft"]. Not validated - mount of the PVs will simply fail if one is invalid.
2691
+ """
2692
+ return pulumi.get(self, "mount_options")
2693
+
2694
+ @mount_options.setter
2695
+ def mount_options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
2696
+ pulumi.set(self, "mount_options", value)
2697
+
2698
+ @_builtins.property
2699
+ @pulumi.getter(name="reclaimPolicy")
2700
+ def reclaim_policy(self) -> Optional[pulumi.Input[_builtins.str]]:
2701
+ """
2702
+ Dynamically provisioned PersistentVolumes of this storage class are created with this reclaimPolicy. Defaults to Delete.
2703
+ """
2704
+ return pulumi.get(self, "reclaim_policy")
2705
+
2706
+ @reclaim_policy.setter
2707
+ def reclaim_policy(self, value: Optional[pulumi.Input[_builtins.str]]):
2708
+ pulumi.set(self, "reclaim_policy", value)
2709
+
2710
+ @_builtins.property
2711
+ @pulumi.getter(name="volumeBindingMode")
2712
+ def volume_binding_mode(self) -> Optional[pulumi.Input[_builtins.str]]:
2713
+ """
2714
+ VolumeBindingMode indicates how PersistentVolumeClaims should be provisioned and bound. When unset, VolumeBindingImmediate is used. This field is alpha-level and is only honored by servers that enable the VolumeScheduling feature.
2715
+ """
2716
+ return pulumi.get(self, "volume_binding_mode")
2717
+
2718
+ @volume_binding_mode.setter
2719
+ def volume_binding_mode(self, value: Optional[pulumi.Input[_builtins.str]]):
2720
+ pulumi.set(self, "volume_binding_mode", value)
2721
+
2722
+ @_builtins.property
2723
+ @pulumi.getter
2724
+ def zones(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
2725
+ """
2726
+ The AWS zone or zones for the EBS volume. If zones is not specified, volumes are generally round-robin-ed across all active zones where Kubernetes cluster has a node. zone and zones parameters must not be used at the same time.
2727
+ """
2728
+ return pulumi.get(self, "zones")
2729
+
2730
+ @zones.setter
2731
+ def zones(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
2732
+ pulumi.set(self, "zones", value)
2733
+
2734
+
2735
+ if not MYPY:
2736
+ class TaintArgsDict(TypedDict):
2737
+ """
2738
+ Represents a Kubernetes `taint` to apply to all Nodes in a NodeGroup. See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/.
2739
+ """
2740
+ effect: pulumi.Input[_builtins.str]
2741
+ """
2742
+ The effect of the taint.
2743
+ """
2744
+ value: pulumi.Input[_builtins.str]
2745
+ """
2746
+ The value of the taint.
2747
+ """
2748
+ elif False:
2749
+ TaintArgsDict: TypeAlias = Mapping[str, Any]
2750
+
2751
+ @pulumi.input_type
2752
+ class TaintArgs:
2753
+ def __init__(__self__, *,
2754
+ effect: pulumi.Input[_builtins.str],
2755
+ value: pulumi.Input[_builtins.str]):
2756
+ """
2757
+ Represents a Kubernetes `taint` to apply to all Nodes in a NodeGroup. See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/.
2758
+ :param pulumi.Input[_builtins.str] effect: The effect of the taint.
2759
+ :param pulumi.Input[_builtins.str] value: The value of the taint.
2760
+ """
2761
+ pulumi.set(__self__, "effect", effect)
2762
+ pulumi.set(__self__, "value", value)
2763
+
2764
+ @_builtins.property
2765
+ @pulumi.getter
2766
+ def effect(self) -> pulumi.Input[_builtins.str]:
2767
+ """
2768
+ The effect of the taint.
2769
+ """
2770
+ return pulumi.get(self, "effect")
2771
+
2772
+ @effect.setter
2773
+ def effect(self, value: pulumi.Input[_builtins.str]):
2774
+ pulumi.set(self, "effect", value)
2775
+
2776
+ @_builtins.property
2777
+ @pulumi.getter
2778
+ def value(self) -> pulumi.Input[_builtins.str]:
2779
+ """
2780
+ The value of the taint.
2781
+ """
2782
+ return pulumi.get(self, "value")
2783
+
2784
+ @value.setter
2785
+ def value(self, value: pulumi.Input[_builtins.str]):
2786
+ pulumi.set(self, "value", value)
2787
+
2788
+
2789
+ if not MYPY:
2790
+ class UserMappingArgsDict(TypedDict):
2791
+ """
2792
+ Describes a mapping from an AWS IAM user to a Kubernetes user and groups.
2793
+ """
2794
+ groups: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]
2795
+ """
2796
+ A list of groups within Kubernetes to which the user is mapped to.
2797
+ """
2798
+ user_arn: pulumi.Input[_builtins.str]
2799
+ """
2800
+ The ARN of the IAM user to add.
2801
+ """
2802
+ username: pulumi.Input[_builtins.str]
2803
+ """
2804
+ The user name within Kubernetes to map to the IAM user. By default, the user name is the ARN of the IAM user.
2805
+ """
2806
+ elif False:
2807
+ UserMappingArgsDict: TypeAlias = Mapping[str, Any]
2808
+
2809
+ @pulumi.input_type
2810
+ class UserMappingArgs:
2811
+ def __init__(__self__, *,
2812
+ groups: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]],
2813
+ user_arn: pulumi.Input[_builtins.str],
2814
+ username: pulumi.Input[_builtins.str]):
2815
+ """
2816
+ Describes a mapping from an AWS IAM user to a Kubernetes user and groups.
2817
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] groups: A list of groups within Kubernetes to which the user is mapped to.
2818
+ :param pulumi.Input[_builtins.str] user_arn: The ARN of the IAM user to add.
2819
+ :param pulumi.Input[_builtins.str] username: The user name within Kubernetes to map to the IAM user. By default, the user name is the ARN of the IAM user.
2820
+ """
2821
+ pulumi.set(__self__, "groups", groups)
2822
+ pulumi.set(__self__, "user_arn", user_arn)
2823
+ pulumi.set(__self__, "username", username)
2824
+
2825
+ @_builtins.property
2826
+ @pulumi.getter
2827
+ def groups(self) -> pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]:
2828
+ """
2829
+ A list of groups within Kubernetes to which the user is mapped to.
2830
+ """
2831
+ return pulumi.get(self, "groups")
2832
+
2833
+ @groups.setter
2834
+ def groups(self, value: pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]):
2835
+ pulumi.set(self, "groups", value)
2836
+
2837
+ @_builtins.property
2838
+ @pulumi.getter(name="userArn")
2839
+ def user_arn(self) -> pulumi.Input[_builtins.str]:
2840
+ """
2841
+ The ARN of the IAM user to add.
2842
+ """
2843
+ return pulumi.get(self, "user_arn")
2844
+
2845
+ @user_arn.setter
2846
+ def user_arn(self, value: pulumi.Input[_builtins.str]):
2847
+ pulumi.set(self, "user_arn", value)
2848
+
2849
+ @_builtins.property
2850
+ @pulumi.getter
2851
+ def username(self) -> pulumi.Input[_builtins.str]:
2852
+ """
2853
+ The user name within Kubernetes to map to the IAM user. By default, the user name is the ARN of the IAM user.
2854
+ """
2855
+ return pulumi.get(self, "username")
2856
+
2857
+ @username.setter
2858
+ def username(self, value: pulumi.Input[_builtins.str]):
2859
+ pulumi.set(self, "username", value)
2860
+
2861
+
2862
+ if not MYPY:
2863
+ class VpcCniOptionsArgsDict(TypedDict):
2864
+ """
2865
+ Describes the configuration options available for the Amazon VPC CNI plugin for Kubernetes.
2866
+ """
2867
+ addon_version: NotRequired[pulumi.Input[_builtins.str]]
2868
+ """
2869
+ The version of the addon to use. If not specified, the latest version of the addon for the cluster's Kubernetes version will be used.
2870
+ """
2871
+ cni_configure_rpfilter: NotRequired[pulumi.Input[_builtins.bool]]
2872
+ """
2873
+ Specifies whether ipamd should configure rp filter for primary interface. Default is `false`.
2874
+ """
2875
+ cni_custom_network_cfg: NotRequired[pulumi.Input[_builtins.bool]]
2876
+ """
2877
+ Specifies that your pods may use subnets and security groups that are independent of your worker node's VPC configuration. By default, pods share the same subnet and security groups as the worker node's primary interface. Setting this variable to true causes ipamd to use the security groups and VPC subnet in a worker node's ENIConfig for elastic network interface allocation. You must create an ENIConfig custom resource for each subnet that your pods will reside in, and then annotate or label each worker node to use a specific ENIConfig (multiple worker nodes can be annotated or labelled with the same ENIConfig). Worker nodes can only be annotated with a single ENIConfig at a time, and the subnet in the ENIConfig must belong to the same Availability Zone that the worker node resides in. For more information, see CNI Custom Networking in the Amazon EKS User Guide. Default is `false`
2878
+ """
2879
+ cni_external_snat: NotRequired[pulumi.Input[_builtins.bool]]
2880
+ """
2881
+ Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied. Disable SNAT if you need to allow inbound communication to your pods from external VPNs, direct connections, and external VPCs, and your pods do not need to access the Internet directly via an Internet Gateway. However, your nodes must be running in a private subnet and connected to the internet through an AWS NAT Gateway or another external NAT device. Default is `false`
2882
+ """
2883
+ configuration_values: NotRequired[pulumi.Input[Mapping[str, Any]]]
2884
+ """
2885
+ Custom configuration values for the vpc-cni addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
2886
+ """
2887
+ custom_network_config: NotRequired[pulumi.Input[_builtins.bool]]
2888
+ """
2889
+ Specifies that your pods may use subnets and security groups (within the same VPC as your control plane resources) that are independent of your cluster's `resourcesVpcConfig`.
2890
+
2891
+ Defaults to false.
2892
+ """
2893
+ disable_tcp_early_demux: NotRequired[pulumi.Input[_builtins.bool]]
2894
+ """
2895
+ Allows the kubelet's liveness and readiness probes to connect via TCP when pod ENI is enabled. This will slightly increase local TCP connection latency.
2896
+ """
2897
+ enable_network_policy: NotRequired[pulumi.Input[_builtins.bool]]
2898
+ """
2899
+ Enables using Kubernetes network policies. In Kubernetes, by default, all pod-to-pod communication is allowed. Communication can be restricted with Kubernetes NetworkPolicy objects.
2900
+
2901
+ See for more information: [Kubernetes Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/).
2902
+ """
2903
+ enable_pod_eni: NotRequired[pulumi.Input[_builtins.bool]]
2904
+ """
2905
+ Specifies whether to allow IPAMD to add the `vpc.amazonaws.com/has-trunk-attached` label to the node if the instance has capacity to attach an additional ENI. Default is `false`. If using liveness and readiness probes, you will also need to disable TCP early demux.
2906
+ """
2907
+ enable_prefix_delegation: NotRequired[pulumi.Input[_builtins.bool]]
2908
+ """
2909
+ IPAMD will start allocating (/28) prefixes to the ENIs with ENABLE_PREFIX_DELEGATION set to true.
2910
+ """
2911
+ eni_config_label_def: NotRequired[pulumi.Input[_builtins.str]]
2912
+ """
2913
+ Specifies the ENI_CONFIG_LABEL_DEF environment variable value for worker nodes. This is used to tell Kubernetes to automatically apply the ENIConfig for each Availability Zone
2914
+ Ref: https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html (step 5(c))
2915
+
2916
+ Defaults to the official AWS CNI image in ECR.
2917
+ """
2918
+ eni_mtu: NotRequired[pulumi.Input[_builtins.int]]
2919
+ """
2920
+ Used to configure the MTU size for attached ENIs. The valid range is from 576 to 9001.
2921
+
2922
+ Defaults to 9001.
2923
+ """
2924
+ external_snat: NotRequired[pulumi.Input[_builtins.bool]]
2925
+ """
2926
+ Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied.
2927
+
2928
+ Defaults to false.
2929
+ """
2930
+ log_file: NotRequired[pulumi.Input[_builtins.str]]
2931
+ """
2932
+ Specifies the file path used for logs.
2933
+
2934
+ Defaults to "stdout" to emit Pod logs for `kubectl logs`.
2935
+ """
2936
+ log_level: NotRequired[pulumi.Input[_builtins.str]]
2937
+ """
2938
+ Specifies the log level used for logs.
2939
+
2940
+ Defaults to "DEBUG"
2941
+ Valid values: "DEBUG", "INFO", "WARN", "ERROR", or "FATAL".
2942
+ """
2943
+ node_port_support: NotRequired[pulumi.Input[_builtins.bool]]
2944
+ """
2945
+ Specifies whether NodePort services are enabled on a worker node's primary network interface. This requires additional iptables rules and that the kernel's reverse path filter on the primary interface is set to loose.
2946
+
2947
+ Defaults to true.
2948
+ """
2949
+ resolve_conflicts_on_create: NotRequired['ResolveConflictsOnCreate']
2950
+ """
2951
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
2952
+ """
2953
+ resolve_conflicts_on_update: NotRequired['ResolveConflictsOnUpdate']
2954
+ """
2955
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
2956
+ """
2957
+ security_context_privileged: NotRequired[pulumi.Input[_builtins.bool]]
2958
+ """
2959
+ Pass privilege to containers securityContext. This is required when SELinux is enabled. This value will not be passed to the CNI config by default
2960
+ """
2961
+ service_account_role_arn: NotRequired[pulumi.Input[_builtins.str]]
2962
+ """
2963
+ The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role.
2964
+
2965
+ For more information, see [Amazon EKS node IAM role](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) in the Amazon EKS User Guide.
2966
+
2967
+ Note: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see [Enabling IAM roles for service accounts on your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) in the Amazon EKS User Guide.
2968
+ """
2969
+ veth_prefix: NotRequired[pulumi.Input[_builtins.str]]
2970
+ """
2971
+ Specifies the veth prefix used to generate the host-side veth device name for the CNI.
2972
+
2973
+ The prefix can be at most 4 characters long.
2974
+
2975
+ Defaults to "eni".
2976
+ """
2977
+ warm_eni_target: NotRequired[pulumi.Input[_builtins.int]]
2978
+ """
2979
+ Specifies the number of free elastic network interfaces (and all of their available IP addresses) that the ipamD daemon should attempt to keep available for pod assignment on the node.
2980
+
2981
+ Defaults to 1.
2982
+ """
2983
+ warm_ip_target: NotRequired[pulumi.Input[_builtins.int]]
2984
+ """
2985
+ Specifies the number of free IP addresses that the ipamD daemon should attempt to keep available for pod assignment on the node.
2986
+ """
2987
+ warm_prefix_target: NotRequired[pulumi.Input[_builtins.int]]
2988
+ """
2989
+ WARM_PREFIX_TARGET will allocate one full (/28) prefix even if a single IP is consumed with the existing prefix. Ref: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/prefix-and-ip-target.md
2990
+ """
2991
+ elif False:
2992
+ VpcCniOptionsArgsDict: TypeAlias = Mapping[str, Any]
2993
+
2994
+ @pulumi.input_type
2995
+ class VpcCniOptionsArgs:
2996
+ def __init__(__self__, *,
2997
+ addon_version: Optional[pulumi.Input[_builtins.str]] = None,
2998
+ cni_configure_rpfilter: Optional[pulumi.Input[_builtins.bool]] = None,
2999
+ cni_custom_network_cfg: Optional[pulumi.Input[_builtins.bool]] = None,
3000
+ cni_external_snat: Optional[pulumi.Input[_builtins.bool]] = None,
3001
+ configuration_values: Optional[pulumi.Input[Mapping[str, Any]]] = None,
3002
+ custom_network_config: Optional[pulumi.Input[_builtins.bool]] = None,
3003
+ disable_tcp_early_demux: Optional[pulumi.Input[_builtins.bool]] = None,
3004
+ enable_network_policy: Optional[pulumi.Input[_builtins.bool]] = None,
3005
+ enable_pod_eni: Optional[pulumi.Input[_builtins.bool]] = None,
3006
+ enable_prefix_delegation: Optional[pulumi.Input[_builtins.bool]] = None,
3007
+ eni_config_label_def: Optional[pulumi.Input[_builtins.str]] = None,
3008
+ eni_mtu: Optional[pulumi.Input[_builtins.int]] = None,
3009
+ external_snat: Optional[pulumi.Input[_builtins.bool]] = None,
3010
+ log_file: Optional[pulumi.Input[_builtins.str]] = None,
3011
+ log_level: Optional[pulumi.Input[_builtins.str]] = None,
3012
+ node_port_support: Optional[pulumi.Input[_builtins.bool]] = None,
3013
+ resolve_conflicts_on_create: Optional['ResolveConflictsOnCreate'] = None,
3014
+ resolve_conflicts_on_update: Optional['ResolveConflictsOnUpdate'] = None,
3015
+ security_context_privileged: Optional[pulumi.Input[_builtins.bool]] = None,
3016
+ service_account_role_arn: Optional[pulumi.Input[_builtins.str]] = None,
3017
+ veth_prefix: Optional[pulumi.Input[_builtins.str]] = None,
3018
+ warm_eni_target: Optional[pulumi.Input[_builtins.int]] = None,
3019
+ warm_ip_target: Optional[pulumi.Input[_builtins.int]] = None,
3020
+ warm_prefix_target: Optional[pulumi.Input[_builtins.int]] = None):
3021
+ """
3022
+ Describes the configuration options available for the Amazon VPC CNI plugin for Kubernetes.
3023
+ :param pulumi.Input[_builtins.str] addon_version: The version of the addon to use. If not specified, the latest version of the addon for the cluster's Kubernetes version will be used.
3024
+ :param pulumi.Input[_builtins.bool] cni_configure_rpfilter: Specifies whether ipamd should configure rp filter for primary interface. Default is `false`.
3025
+ :param pulumi.Input[_builtins.bool] cni_custom_network_cfg: Specifies that your pods may use subnets and security groups that are independent of your worker node's VPC configuration. By default, pods share the same subnet and security groups as the worker node's primary interface. Setting this variable to true causes ipamd to use the security groups and VPC subnet in a worker node's ENIConfig for elastic network interface allocation. You must create an ENIConfig custom resource for each subnet that your pods will reside in, and then annotate or label each worker node to use a specific ENIConfig (multiple worker nodes can be annotated or labelled with the same ENIConfig). Worker nodes can only be annotated with a single ENIConfig at a time, and the subnet in the ENIConfig must belong to the same Availability Zone that the worker node resides in. For more information, see CNI Custom Networking in the Amazon EKS User Guide. Default is `false`
3026
+ :param pulumi.Input[_builtins.bool] cni_external_snat: Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied. Disable SNAT if you need to allow inbound communication to your pods from external VPNs, direct connections, and external VPCs, and your pods do not need to access the Internet directly via an Internet Gateway. However, your nodes must be running in a private subnet and connected to the internet through an AWS NAT Gateway or another external NAT device. Default is `false`
3027
+ :param pulumi.Input[Mapping[str, Any]] configuration_values: Custom configuration values for the vpc-cni addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
3028
+ :param pulumi.Input[_builtins.bool] custom_network_config: Specifies that your pods may use subnets and security groups (within the same VPC as your control plane resources) that are independent of your cluster's `resourcesVpcConfig`.
3029
+
3030
+ Defaults to false.
3031
+ :param pulumi.Input[_builtins.bool] disable_tcp_early_demux: Allows the kubelet's liveness and readiness probes to connect via TCP when pod ENI is enabled. This will slightly increase local TCP connection latency.
3032
+ :param pulumi.Input[_builtins.bool] enable_network_policy: Enables using Kubernetes network policies. In Kubernetes, by default, all pod-to-pod communication is allowed. Communication can be restricted with Kubernetes NetworkPolicy objects.
3033
+
3034
+ See for more information: [Kubernetes Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/).
3035
+ :param pulumi.Input[_builtins.bool] enable_pod_eni: Specifies whether to allow IPAMD to add the `vpc.amazonaws.com/has-trunk-attached` label to the node if the instance has capacity to attach an additional ENI. Default is `false`. If using liveness and readiness probes, you will also need to disable TCP early demux.
3036
+ :param pulumi.Input[_builtins.bool] enable_prefix_delegation: IPAMD will start allocating (/28) prefixes to the ENIs with ENABLE_PREFIX_DELEGATION set to true.
3037
+ :param pulumi.Input[_builtins.str] eni_config_label_def: Specifies the ENI_CONFIG_LABEL_DEF environment variable value for worker nodes. This is used to tell Kubernetes to automatically apply the ENIConfig for each Availability Zone
3038
+ Ref: https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html (step 5(c))
3039
+
3040
+ Defaults to the official AWS CNI image in ECR.
3041
+ :param pulumi.Input[_builtins.int] eni_mtu: Used to configure the MTU size for attached ENIs. The valid range is from 576 to 9001.
3042
+
3043
+ Defaults to 9001.
3044
+ :param pulumi.Input[_builtins.bool] external_snat: Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied.
3045
+
3046
+ Defaults to false.
3047
+ :param pulumi.Input[_builtins.str] log_file: Specifies the file path used for logs.
3048
+
3049
+ Defaults to "stdout" to emit Pod logs for `kubectl logs`.
3050
+ :param pulumi.Input[_builtins.str] log_level: Specifies the log level used for logs.
3051
+
3052
+ Defaults to "DEBUG"
3053
+ Valid values: "DEBUG", "INFO", "WARN", "ERROR", or "FATAL".
3054
+ :param pulumi.Input[_builtins.bool] node_port_support: Specifies whether NodePort services are enabled on a worker node's primary network interface. This requires additional iptables rules and that the kernel's reverse path filter on the primary interface is set to loose.
3055
+
3056
+ Defaults to true.
3057
+ :param 'ResolveConflictsOnCreate' resolve_conflicts_on_create: How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
3058
+ :param 'ResolveConflictsOnUpdate' resolve_conflicts_on_update: How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
3059
+ :param pulumi.Input[_builtins.bool] security_context_privileged: Pass privilege to containers securityContext. This is required when SELinux is enabled. This value will not be passed to the CNI config by default
3060
+ :param pulumi.Input[_builtins.str] service_account_role_arn: The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role.
3061
+
3062
+ For more information, see [Amazon EKS node IAM role](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) in the Amazon EKS User Guide.
3063
+
3064
+ Note: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see [Enabling IAM roles for service accounts on your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) in the Amazon EKS User Guide.
3065
+ :param pulumi.Input[_builtins.str] veth_prefix: Specifies the veth prefix used to generate the host-side veth device name for the CNI.
3066
+
3067
+ The prefix can be at most 4 characters long.
3068
+
3069
+ Defaults to "eni".
3070
+ :param pulumi.Input[_builtins.int] warm_eni_target: Specifies the number of free elastic network interfaces (and all of their available IP addresses) that the ipamD daemon should attempt to keep available for pod assignment on the node.
3071
+
3072
+ Defaults to 1.
3073
+ :param pulumi.Input[_builtins.int] warm_ip_target: Specifies the number of free IP addresses that the ipamD daemon should attempt to keep available for pod assignment on the node.
3074
+ :param pulumi.Input[_builtins.int] warm_prefix_target: WARM_PREFIX_TARGET will allocate one full (/28) prefix even if a single IP is consumed with the existing prefix. Ref: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/prefix-and-ip-target.md
3075
+ """
3076
+ if addon_version is not None:
3077
+ pulumi.set(__self__, "addon_version", addon_version)
3078
+ if cni_configure_rpfilter is not None:
3079
+ pulumi.set(__self__, "cni_configure_rpfilter", cni_configure_rpfilter)
3080
+ if cni_custom_network_cfg is not None:
3081
+ pulumi.set(__self__, "cni_custom_network_cfg", cni_custom_network_cfg)
3082
+ if cni_external_snat is not None:
3083
+ pulumi.set(__self__, "cni_external_snat", cni_external_snat)
3084
+ if configuration_values is not None:
3085
+ pulumi.set(__self__, "configuration_values", configuration_values)
3086
+ if custom_network_config is not None:
3087
+ pulumi.set(__self__, "custom_network_config", custom_network_config)
3088
+ if disable_tcp_early_demux is not None:
3089
+ pulumi.set(__self__, "disable_tcp_early_demux", disable_tcp_early_demux)
3090
+ if enable_network_policy is not None:
3091
+ pulumi.set(__self__, "enable_network_policy", enable_network_policy)
3092
+ if enable_pod_eni is not None:
3093
+ pulumi.set(__self__, "enable_pod_eni", enable_pod_eni)
3094
+ if enable_prefix_delegation is not None:
3095
+ pulumi.set(__self__, "enable_prefix_delegation", enable_prefix_delegation)
3096
+ if eni_config_label_def is not None:
3097
+ pulumi.set(__self__, "eni_config_label_def", eni_config_label_def)
3098
+ if eni_mtu is not None:
3099
+ pulumi.set(__self__, "eni_mtu", eni_mtu)
3100
+ if external_snat is not None:
3101
+ pulumi.set(__self__, "external_snat", external_snat)
3102
+ if log_file is not None:
3103
+ pulumi.set(__self__, "log_file", log_file)
3104
+ if log_level is not None:
3105
+ pulumi.set(__self__, "log_level", log_level)
3106
+ if node_port_support is not None:
3107
+ pulumi.set(__self__, "node_port_support", node_port_support)
3108
+ if resolve_conflicts_on_create is None:
3109
+ resolve_conflicts_on_create = 'OVERWRITE'
3110
+ if resolve_conflicts_on_create is not None:
3111
+ pulumi.set(__self__, "resolve_conflicts_on_create", resolve_conflicts_on_create)
3112
+ if resolve_conflicts_on_update is None:
3113
+ resolve_conflicts_on_update = 'OVERWRITE'
3114
+ if resolve_conflicts_on_update is not None:
3115
+ pulumi.set(__self__, "resolve_conflicts_on_update", resolve_conflicts_on_update)
3116
+ if security_context_privileged is not None:
3117
+ pulumi.set(__self__, "security_context_privileged", security_context_privileged)
3118
+ if service_account_role_arn is not None:
3119
+ pulumi.set(__self__, "service_account_role_arn", service_account_role_arn)
3120
+ if veth_prefix is not None:
3121
+ pulumi.set(__self__, "veth_prefix", veth_prefix)
3122
+ if warm_eni_target is not None:
3123
+ pulumi.set(__self__, "warm_eni_target", warm_eni_target)
3124
+ if warm_ip_target is not None:
3125
+ pulumi.set(__self__, "warm_ip_target", warm_ip_target)
3126
+ if warm_prefix_target is not None:
3127
+ pulumi.set(__self__, "warm_prefix_target", warm_prefix_target)
3128
+
3129
+ @_builtins.property
3130
+ @pulumi.getter(name="addonVersion")
3131
+ def addon_version(self) -> Optional[pulumi.Input[_builtins.str]]:
3132
+ """
3133
+ The version of the addon to use. If not specified, the latest version of the addon for the cluster's Kubernetes version will be used.
3134
+ """
3135
+ return pulumi.get(self, "addon_version")
3136
+
3137
+ @addon_version.setter
3138
+ def addon_version(self, value: Optional[pulumi.Input[_builtins.str]]):
3139
+ pulumi.set(self, "addon_version", value)
3140
+
3141
+ @_builtins.property
3142
+ @pulumi.getter(name="cniConfigureRpfilter")
3143
+ def cni_configure_rpfilter(self) -> Optional[pulumi.Input[_builtins.bool]]:
3144
+ """
3145
+ Specifies whether ipamd should configure rp filter for primary interface. Default is `false`.
3146
+ """
3147
+ return pulumi.get(self, "cni_configure_rpfilter")
3148
+
3149
+ @cni_configure_rpfilter.setter
3150
+ def cni_configure_rpfilter(self, value: Optional[pulumi.Input[_builtins.bool]]):
3151
+ pulumi.set(self, "cni_configure_rpfilter", value)
3152
+
3153
+ @_builtins.property
3154
+ @pulumi.getter(name="cniCustomNetworkCfg")
3155
+ def cni_custom_network_cfg(self) -> Optional[pulumi.Input[_builtins.bool]]:
3156
+ """
3157
+ Specifies that your pods may use subnets and security groups that are independent of your worker node's VPC configuration. By default, pods share the same subnet and security groups as the worker node's primary interface. Setting this variable to true causes ipamd to use the security groups and VPC subnet in a worker node's ENIConfig for elastic network interface allocation. You must create an ENIConfig custom resource for each subnet that your pods will reside in, and then annotate or label each worker node to use a specific ENIConfig (multiple worker nodes can be annotated or labelled with the same ENIConfig). Worker nodes can only be annotated with a single ENIConfig at a time, and the subnet in the ENIConfig must belong to the same Availability Zone that the worker node resides in. For more information, see CNI Custom Networking in the Amazon EKS User Guide. Default is `false`
3158
+ """
3159
+ return pulumi.get(self, "cni_custom_network_cfg")
3160
+
3161
+ @cni_custom_network_cfg.setter
3162
+ def cni_custom_network_cfg(self, value: Optional[pulumi.Input[_builtins.bool]]):
3163
+ pulumi.set(self, "cni_custom_network_cfg", value)
3164
+
3165
+ @_builtins.property
3166
+ @pulumi.getter(name="cniExternalSnat")
3167
+ def cni_external_snat(self) -> Optional[pulumi.Input[_builtins.bool]]:
3168
+ """
3169
+ Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied. Disable SNAT if you need to allow inbound communication to your pods from external VPNs, direct connections, and external VPCs, and your pods do not need to access the Internet directly via an Internet Gateway. However, your nodes must be running in a private subnet and connected to the internet through an AWS NAT Gateway or another external NAT device. Default is `false`
3170
+ """
3171
+ return pulumi.get(self, "cni_external_snat")
3172
+
3173
+ @cni_external_snat.setter
3174
+ def cni_external_snat(self, value: Optional[pulumi.Input[_builtins.bool]]):
3175
+ pulumi.set(self, "cni_external_snat", value)
3176
+
3177
+ @_builtins.property
3178
+ @pulumi.getter(name="configurationValues")
3179
+ def configuration_values(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
3180
+ """
3181
+ Custom configuration values for the vpc-cni addon. This object must match the schema derived from [describe-addon-configuration](https://docs.aws.amazon.com/cli/latest/reference/eks/describe-addon-configuration.html).
3182
+ """
3183
+ return pulumi.get(self, "configuration_values")
3184
+
3185
+ @configuration_values.setter
3186
+ def configuration_values(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
3187
+ pulumi.set(self, "configuration_values", value)
3188
+
3189
+ @_builtins.property
3190
+ @pulumi.getter(name="customNetworkConfig")
3191
+ def custom_network_config(self) -> Optional[pulumi.Input[_builtins.bool]]:
3192
+ """
3193
+ Specifies that your pods may use subnets and security groups (within the same VPC as your control plane resources) that are independent of your cluster's `resourcesVpcConfig`.
3194
+
3195
+ Defaults to false.
3196
+ """
3197
+ return pulumi.get(self, "custom_network_config")
3198
+
3199
+ @custom_network_config.setter
3200
+ def custom_network_config(self, value: Optional[pulumi.Input[_builtins.bool]]):
3201
+ pulumi.set(self, "custom_network_config", value)
3202
+
3203
+ @_builtins.property
3204
+ @pulumi.getter(name="disableTcpEarlyDemux")
3205
+ def disable_tcp_early_demux(self) -> Optional[pulumi.Input[_builtins.bool]]:
3206
+ """
3207
+ Allows the kubelet's liveness and readiness probes to connect via TCP when pod ENI is enabled. This will slightly increase local TCP connection latency.
3208
+ """
3209
+ return pulumi.get(self, "disable_tcp_early_demux")
3210
+
3211
+ @disable_tcp_early_demux.setter
3212
+ def disable_tcp_early_demux(self, value: Optional[pulumi.Input[_builtins.bool]]):
3213
+ pulumi.set(self, "disable_tcp_early_demux", value)
3214
+
3215
+ @_builtins.property
3216
+ @pulumi.getter(name="enableNetworkPolicy")
3217
+ def enable_network_policy(self) -> Optional[pulumi.Input[_builtins.bool]]:
3218
+ """
3219
+ Enables using Kubernetes network policies. In Kubernetes, by default, all pod-to-pod communication is allowed. Communication can be restricted with Kubernetes NetworkPolicy objects.
3220
+
3221
+ See for more information: [Kubernetes Network Policies](https://kubernetes.io/docs/concepts/services-networking/network-policies/).
3222
+ """
3223
+ return pulumi.get(self, "enable_network_policy")
3224
+
3225
+ @enable_network_policy.setter
3226
+ def enable_network_policy(self, value: Optional[pulumi.Input[_builtins.bool]]):
3227
+ pulumi.set(self, "enable_network_policy", value)
3228
+
3229
+ @_builtins.property
3230
+ @pulumi.getter(name="enablePodEni")
3231
+ def enable_pod_eni(self) -> Optional[pulumi.Input[_builtins.bool]]:
3232
+ """
3233
+ Specifies whether to allow IPAMD to add the `vpc.amazonaws.com/has-trunk-attached` label to the node if the instance has capacity to attach an additional ENI. Default is `false`. If using liveness and readiness probes, you will also need to disable TCP early demux.
3234
+ """
3235
+ return pulumi.get(self, "enable_pod_eni")
3236
+
3237
+ @enable_pod_eni.setter
3238
+ def enable_pod_eni(self, value: Optional[pulumi.Input[_builtins.bool]]):
3239
+ pulumi.set(self, "enable_pod_eni", value)
3240
+
3241
+ @_builtins.property
3242
+ @pulumi.getter(name="enablePrefixDelegation")
3243
+ def enable_prefix_delegation(self) -> Optional[pulumi.Input[_builtins.bool]]:
3244
+ """
3245
+ IPAMD will start allocating (/28) prefixes to the ENIs with ENABLE_PREFIX_DELEGATION set to true.
3246
+ """
3247
+ return pulumi.get(self, "enable_prefix_delegation")
3248
+
3249
+ @enable_prefix_delegation.setter
3250
+ def enable_prefix_delegation(self, value: Optional[pulumi.Input[_builtins.bool]]):
3251
+ pulumi.set(self, "enable_prefix_delegation", value)
3252
+
3253
+ @_builtins.property
3254
+ @pulumi.getter(name="eniConfigLabelDef")
3255
+ def eni_config_label_def(self) -> Optional[pulumi.Input[_builtins.str]]:
3256
+ """
3257
+ Specifies the ENI_CONFIG_LABEL_DEF environment variable value for worker nodes. This is used to tell Kubernetes to automatically apply the ENIConfig for each Availability Zone
3258
+ Ref: https://docs.aws.amazon.com/eks/latest/userguide/cni-custom-network.html (step 5(c))
3259
+
3260
+ Defaults to the official AWS CNI image in ECR.
3261
+ """
3262
+ return pulumi.get(self, "eni_config_label_def")
3263
+
3264
+ @eni_config_label_def.setter
3265
+ def eni_config_label_def(self, value: Optional[pulumi.Input[_builtins.str]]):
3266
+ pulumi.set(self, "eni_config_label_def", value)
3267
+
3268
+ @_builtins.property
3269
+ @pulumi.getter(name="eniMtu")
3270
+ def eni_mtu(self) -> Optional[pulumi.Input[_builtins.int]]:
3271
+ """
3272
+ Used to configure the MTU size for attached ENIs. The valid range is from 576 to 9001.
3273
+
3274
+ Defaults to 9001.
3275
+ """
3276
+ return pulumi.get(self, "eni_mtu")
3277
+
3278
+ @eni_mtu.setter
3279
+ def eni_mtu(self, value: Optional[pulumi.Input[_builtins.int]]):
3280
+ pulumi.set(self, "eni_mtu", value)
3281
+
3282
+ @_builtins.property
3283
+ @pulumi.getter(name="externalSnat")
3284
+ def external_snat(self) -> Optional[pulumi.Input[_builtins.bool]]:
3285
+ """
3286
+ Specifies whether an external NAT gateway should be used to provide SNAT of secondary ENI IP addresses. If set to true, the SNAT iptables rule and off-VPC IP rule are not applied, and these rules are removed if they have already been applied.
3287
+
3288
+ Defaults to false.
3289
+ """
3290
+ return pulumi.get(self, "external_snat")
3291
+
3292
+ @external_snat.setter
3293
+ def external_snat(self, value: Optional[pulumi.Input[_builtins.bool]]):
3294
+ pulumi.set(self, "external_snat", value)
3295
+
3296
+ @_builtins.property
3297
+ @pulumi.getter(name="logFile")
3298
+ def log_file(self) -> Optional[pulumi.Input[_builtins.str]]:
3299
+ """
3300
+ Specifies the file path used for logs.
3301
+
3302
+ Defaults to "stdout" to emit Pod logs for `kubectl logs`.
3303
+ """
3304
+ return pulumi.get(self, "log_file")
3305
+
3306
+ @log_file.setter
3307
+ def log_file(self, value: Optional[pulumi.Input[_builtins.str]]):
3308
+ pulumi.set(self, "log_file", value)
3309
+
3310
+ @_builtins.property
3311
+ @pulumi.getter(name="logLevel")
3312
+ def log_level(self) -> Optional[pulumi.Input[_builtins.str]]:
3313
+ """
3314
+ Specifies the log level used for logs.
3315
+
3316
+ Defaults to "DEBUG"
3317
+ Valid values: "DEBUG", "INFO", "WARN", "ERROR", or "FATAL".
3318
+ """
3319
+ return pulumi.get(self, "log_level")
3320
+
3321
+ @log_level.setter
3322
+ def log_level(self, value: Optional[pulumi.Input[_builtins.str]]):
3323
+ pulumi.set(self, "log_level", value)
3324
+
3325
+ @_builtins.property
3326
+ @pulumi.getter(name="nodePortSupport")
3327
+ def node_port_support(self) -> Optional[pulumi.Input[_builtins.bool]]:
3328
+ """
3329
+ Specifies whether NodePort services are enabled on a worker node's primary network interface. This requires additional iptables rules and that the kernel's reverse path filter on the primary interface is set to loose.
3330
+
3331
+ Defaults to true.
3332
+ """
3333
+ return pulumi.get(self, "node_port_support")
3334
+
3335
+ @node_port_support.setter
3336
+ def node_port_support(self, value: Optional[pulumi.Input[_builtins.bool]]):
3337
+ pulumi.set(self, "node_port_support", value)
3338
+
3339
+ @_builtins.property
3340
+ @pulumi.getter(name="resolveConflictsOnCreate")
3341
+ def resolve_conflicts_on_create(self) -> Optional['ResolveConflictsOnCreate']:
3342
+ """
3343
+ How to resolve field value conflicts when migrating a self-managed add-on to an Amazon EKS add-on. Valid values are `NONE` and `OVERWRITE`. For more details see the [CreateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateAddon.html) API Docs.
3344
+ """
3345
+ return pulumi.get(self, "resolve_conflicts_on_create")
3346
+
3347
+ @resolve_conflicts_on_create.setter
3348
+ def resolve_conflicts_on_create(self, value: Optional['ResolveConflictsOnCreate']):
3349
+ pulumi.set(self, "resolve_conflicts_on_create", value)
3350
+
3351
+ @_builtins.property
3352
+ @pulumi.getter(name="resolveConflictsOnUpdate")
3353
+ def resolve_conflicts_on_update(self) -> Optional['ResolveConflictsOnUpdate']:
3354
+ """
3355
+ How to resolve field value conflicts for an Amazon EKS add-on if you've changed a value from the Amazon EKS default value. Valid values are `NONE`, `OVERWRITE`, and `PRESERVE`. For more details see the [UpdateAddon](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateAddon.html) API Docs.
3356
+ """
3357
+ return pulumi.get(self, "resolve_conflicts_on_update")
3358
+
3359
+ @resolve_conflicts_on_update.setter
3360
+ def resolve_conflicts_on_update(self, value: Optional['ResolveConflictsOnUpdate']):
3361
+ pulumi.set(self, "resolve_conflicts_on_update", value)
3362
+
3363
+ @_builtins.property
3364
+ @pulumi.getter(name="securityContextPrivileged")
3365
+ def security_context_privileged(self) -> Optional[pulumi.Input[_builtins.bool]]:
3366
+ """
3367
+ Pass privilege to containers securityContext. This is required when SELinux is enabled. This value will not be passed to the CNI config by default
3368
+ """
3369
+ return pulumi.get(self, "security_context_privileged")
3370
+
3371
+ @security_context_privileged.setter
3372
+ def security_context_privileged(self, value: Optional[pulumi.Input[_builtins.bool]]):
3373
+ pulumi.set(self, "security_context_privileged", value)
3374
+
3375
+ @_builtins.property
3376
+ @pulumi.getter(name="serviceAccountRoleArn")
3377
+ def service_account_role_arn(self) -> Optional[pulumi.Input[_builtins.str]]:
3378
+ """
3379
+ The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's service account. The role must be assigned the IAM permissions required by the add-on. If you don't specify an existing IAM role, then the add-on uses the permissions assigned to the node IAM role.
3380
+
3381
+ For more information, see [Amazon EKS node IAM role](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) in the Amazon EKS User Guide.
3382
+
3383
+ Note: To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) provider created for your cluster. For more information, see [Enabling IAM roles for service accounts on your cluster](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) in the Amazon EKS User Guide.
3384
+ """
3385
+ return pulumi.get(self, "service_account_role_arn")
3386
+
3387
+ @service_account_role_arn.setter
3388
+ def service_account_role_arn(self, value: Optional[pulumi.Input[_builtins.str]]):
3389
+ pulumi.set(self, "service_account_role_arn", value)
3390
+
3391
+ @_builtins.property
3392
+ @pulumi.getter(name="vethPrefix")
3393
+ def veth_prefix(self) -> Optional[pulumi.Input[_builtins.str]]:
3394
+ """
3395
+ Specifies the veth prefix used to generate the host-side veth device name for the CNI.
3396
+
3397
+ The prefix can be at most 4 characters long.
3398
+
3399
+ Defaults to "eni".
3400
+ """
3401
+ return pulumi.get(self, "veth_prefix")
3402
+
3403
+ @veth_prefix.setter
3404
+ def veth_prefix(self, value: Optional[pulumi.Input[_builtins.str]]):
3405
+ pulumi.set(self, "veth_prefix", value)
3406
+
3407
+ @_builtins.property
3408
+ @pulumi.getter(name="warmEniTarget")
3409
+ def warm_eni_target(self) -> Optional[pulumi.Input[_builtins.int]]:
3410
+ """
3411
+ Specifies the number of free elastic network interfaces (and all of their available IP addresses) that the ipamD daemon should attempt to keep available for pod assignment on the node.
3412
+
3413
+ Defaults to 1.
3414
+ """
3415
+ return pulumi.get(self, "warm_eni_target")
3416
+
3417
+ @warm_eni_target.setter
3418
+ def warm_eni_target(self, value: Optional[pulumi.Input[_builtins.int]]):
3419
+ pulumi.set(self, "warm_eni_target", value)
3420
+
3421
+ @_builtins.property
3422
+ @pulumi.getter(name="warmIpTarget")
3423
+ def warm_ip_target(self) -> Optional[pulumi.Input[_builtins.int]]:
3424
+ """
3425
+ Specifies the number of free IP addresses that the ipamD daemon should attempt to keep available for pod assignment on the node.
3426
+ """
3427
+ return pulumi.get(self, "warm_ip_target")
3428
+
3429
+ @warm_ip_target.setter
3430
+ def warm_ip_target(self, value: Optional[pulumi.Input[_builtins.int]]):
3431
+ pulumi.set(self, "warm_ip_target", value)
3432
+
3433
+ @_builtins.property
3434
+ @pulumi.getter(name="warmPrefixTarget")
3435
+ def warm_prefix_target(self) -> Optional[pulumi.Input[_builtins.int]]:
3436
+ """
3437
+ WARM_PREFIX_TARGET will allocate one full (/28) prefix even if a single IP is consumed with the existing prefix. Ref: https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/prefix-and-ip-target.md
3438
+ """
3439
+ return pulumi.get(self, "warm_prefix_target")
3440
+
3441
+ @warm_prefix_target.setter
3442
+ def warm_prefix_target(self, value: Optional[pulumi.Input[_builtins.int]]):
3443
+ pulumi.set(self, "warm_prefix_target", value)
3444
+
3445
+