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/outputs.py ADDED
@@ -0,0 +1,1400 @@
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 . import outputs
17
+ from ._enums import *
18
+ from .vpc_cni_addon import VpcCniAddon
19
+ import pulumi_aws
20
+ import pulumi_kubernetes
21
+
22
+ __all__ = [
23
+ 'AccessEntry',
24
+ 'AccessPolicyAssociation',
25
+ 'ClusterNodeGroupOptions',
26
+ 'CoreData',
27
+ 'NodeGroupData',
28
+ 'NodeadmOptions',
29
+ 'Taint',
30
+ ]
31
+
32
+ @pulumi.output_type
33
+ class AccessEntry(dict):
34
+ """
35
+ Access entries allow an IAM principal to access your cluster.
36
+
37
+ 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.
38
+ 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.
39
+ """
40
+ @staticmethod
41
+ def __key_warning(key: str):
42
+ suggest = None
43
+ if key == "principalArn":
44
+ suggest = "principal_arn"
45
+ elif key == "accessPolicies":
46
+ suggest = "access_policies"
47
+ elif key == "kubernetesGroups":
48
+ suggest = "kubernetes_groups"
49
+
50
+ if suggest:
51
+ pulumi.log.warn(f"Key '{key}' not found in AccessEntry. Access the value via the '{suggest}' property getter instead.")
52
+
53
+ def __getitem__(self, key: str) -> Any:
54
+ AccessEntry.__key_warning(key)
55
+ return super().__getitem__(key)
56
+
57
+ def get(self, key: str, default = None) -> Any:
58
+ AccessEntry.__key_warning(key)
59
+ return super().get(key, default)
60
+
61
+ def __init__(__self__, *,
62
+ principal_arn: _builtins.str,
63
+ access_policies: Optional[Mapping[str, 'outputs.AccessPolicyAssociation']] = None,
64
+ kubernetes_groups: Optional[Sequence[_builtins.str]] = None,
65
+ tags: Optional[Mapping[str, _builtins.str]] = None,
66
+ type: Optional['AccessEntryType'] = None,
67
+ username: Optional[_builtins.str] = None):
68
+ """
69
+ Access entries allow an IAM principal to access your cluster.
70
+
71
+ 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.
72
+ 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.
73
+ :param _builtins.str principal_arn: The IAM Principal ARN which requires Authentication access to the EKS cluster.
74
+ :param Mapping[str, 'AccessPolicyAssociation'] access_policies: The access policies to associate to the access entry.
75
+ :param Sequence[_builtins.str] kubernetes_groups: A list of groups within Kubernetes to which the IAM principal is mapped to.
76
+ :param Mapping[str, _builtins.str] tags: The tags to apply to the AccessEntry.
77
+ :param 'AccessEntryType' type: The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS.
78
+ 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.
79
+ :param _builtins.str username: Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
80
+ """
81
+ pulumi.set(__self__, "principal_arn", principal_arn)
82
+ if access_policies is not None:
83
+ pulumi.set(__self__, "access_policies", access_policies)
84
+ if kubernetes_groups is not None:
85
+ pulumi.set(__self__, "kubernetes_groups", kubernetes_groups)
86
+ if tags is not None:
87
+ pulumi.set(__self__, "tags", tags)
88
+ if type is not None:
89
+ pulumi.set(__self__, "type", type)
90
+ if username is not None:
91
+ pulumi.set(__self__, "username", username)
92
+
93
+ @_builtins.property
94
+ @pulumi.getter(name="principalArn")
95
+ def principal_arn(self) -> _builtins.str:
96
+ """
97
+ The IAM Principal ARN which requires Authentication access to the EKS cluster.
98
+ """
99
+ return pulumi.get(self, "principal_arn")
100
+
101
+ @_builtins.property
102
+ @pulumi.getter(name="accessPolicies")
103
+ def access_policies(self) -> Optional[Mapping[str, 'outputs.AccessPolicyAssociation']]:
104
+ """
105
+ The access policies to associate to the access entry.
106
+ """
107
+ return pulumi.get(self, "access_policies")
108
+
109
+ @_builtins.property
110
+ @pulumi.getter(name="kubernetesGroups")
111
+ def kubernetes_groups(self) -> Optional[Sequence[_builtins.str]]:
112
+ """
113
+ A list of groups within Kubernetes to which the IAM principal is mapped to.
114
+ """
115
+ return pulumi.get(self, "kubernetes_groups")
116
+
117
+ @_builtins.property
118
+ @pulumi.getter
119
+ def tags(self) -> Optional[Mapping[str, _builtins.str]]:
120
+ """
121
+ The tags to apply to the AccessEntry.
122
+ """
123
+ return pulumi.get(self, "tags")
124
+
125
+ @_builtins.property
126
+ @pulumi.getter
127
+ def type(self) -> Optional['AccessEntryType']:
128
+ """
129
+ The type of the new access entry. Valid values are STANDARD, FARGATE_LINUX, EC2_LINUX, and EC2_WINDOWS.
130
+ 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.
131
+ """
132
+ return pulumi.get(self, "type")
133
+
134
+ @_builtins.property
135
+ @pulumi.getter
136
+ def username(self) -> Optional[_builtins.str]:
137
+ """
138
+ Defaults to the principalArn if the principal is a user, else defaults to assume-role/session-name.
139
+ """
140
+ return pulumi.get(self, "username")
141
+
142
+
143
+ @pulumi.output_type
144
+ class AccessPolicyAssociation(dict):
145
+ """
146
+ Associates an access policy and its scope to an IAM principal.
147
+
148
+ See for more details:
149
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
150
+ """
151
+ @staticmethod
152
+ def __key_warning(key: str):
153
+ suggest = None
154
+ if key == "accessScope":
155
+ suggest = "access_scope"
156
+ elif key == "policyArn":
157
+ suggest = "policy_arn"
158
+
159
+ if suggest:
160
+ pulumi.log.warn(f"Key '{key}' not found in AccessPolicyAssociation. Access the value via the '{suggest}' property getter instead.")
161
+
162
+ def __getitem__(self, key: str) -> Any:
163
+ AccessPolicyAssociation.__key_warning(key)
164
+ return super().__getitem__(key)
165
+
166
+ def get(self, key: str, default = None) -> Any:
167
+ AccessPolicyAssociation.__key_warning(key)
168
+ return super().get(key, default)
169
+
170
+ def __init__(__self__, *,
171
+ access_scope: 'pulumi_aws.eks.outputs.AccessPolicyAssociationAccessScope',
172
+ policy_arn: _builtins.str):
173
+ """
174
+ Associates an access policy and its scope to an IAM principal.
175
+
176
+ See for more details:
177
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
178
+ :param '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.
179
+ :param _builtins.str policy_arn: The ARN of the access policy to associate with the principal
180
+ """
181
+ pulumi.set(__self__, "access_scope", access_scope)
182
+ pulumi.set(__self__, "policy_arn", policy_arn)
183
+
184
+ @_builtins.property
185
+ @pulumi.getter(name="accessScope")
186
+ def access_scope(self) -> 'pulumi_aws.eks.outputs.AccessPolicyAssociationAccessScope':
187
+ """
188
+ The scope of the access policy association. This controls whether the access policy is scoped to the cluster or to a particular namespace.
189
+ """
190
+ return pulumi.get(self, "access_scope")
191
+
192
+ @_builtins.property
193
+ @pulumi.getter(name="policyArn")
194
+ def policy_arn(self) -> _builtins.str:
195
+ """
196
+ The ARN of the access policy to associate with the principal
197
+ """
198
+ return pulumi.get(self, "policy_arn")
199
+
200
+
201
+ @pulumi.output_type
202
+ class ClusterNodeGroupOptions(dict):
203
+ """
204
+ Describes the configuration options accepted by a cluster to create its own node groups.
205
+ """
206
+ @staticmethod
207
+ def __key_warning(key: str):
208
+ suggest = None
209
+ if key == "amiId":
210
+ suggest = "ami_id"
211
+ elif key == "amiType":
212
+ suggest = "ami_type"
213
+ elif key == "autoScalingGroupTags":
214
+ suggest = "auto_scaling_group_tags"
215
+ elif key == "bootstrapExtraArgs":
216
+ suggest = "bootstrap_extra_args"
217
+ elif key == "bottlerocketSettings":
218
+ suggest = "bottlerocket_settings"
219
+ elif key == "cloudFormationTags":
220
+ suggest = "cloud_formation_tags"
221
+ elif key == "clusterIngressRule":
222
+ suggest = "cluster_ingress_rule"
223
+ elif key == "clusterIngressRuleId":
224
+ suggest = "cluster_ingress_rule_id"
225
+ elif key == "desiredCapacity":
226
+ suggest = "desired_capacity"
227
+ elif key == "enableDetailedMonitoring":
228
+ suggest = "enable_detailed_monitoring"
229
+ elif key == "encryptRootBlockDevice":
230
+ suggest = "encrypt_root_block_device"
231
+ elif key == "extraNodeSecurityGroups":
232
+ suggest = "extra_node_security_groups"
233
+ elif key == "ignoreScalingChanges":
234
+ suggest = "ignore_scaling_changes"
235
+ elif key == "instanceProfile":
236
+ suggest = "instance_profile"
237
+ elif key == "instanceProfileName":
238
+ suggest = "instance_profile_name"
239
+ elif key == "instanceType":
240
+ suggest = "instance_type"
241
+ elif key == "keyName":
242
+ suggest = "key_name"
243
+ elif key == "kubeletExtraArgs":
244
+ suggest = "kubelet_extra_args"
245
+ elif key == "launchTemplateTagSpecifications":
246
+ suggest = "launch_template_tag_specifications"
247
+ elif key == "maxSize":
248
+ suggest = "max_size"
249
+ elif key == "minRefreshPercentage":
250
+ suggest = "min_refresh_percentage"
251
+ elif key == "minSize":
252
+ suggest = "min_size"
253
+ elif key == "nodeAssociatePublicIpAddress":
254
+ suggest = "node_associate_public_ip_address"
255
+ elif key == "nodePublicKey":
256
+ suggest = "node_public_key"
257
+ elif key == "nodeRootVolumeDeleteOnTermination":
258
+ suggest = "node_root_volume_delete_on_termination"
259
+ elif key == "nodeRootVolumeEncrypted":
260
+ suggest = "node_root_volume_encrypted"
261
+ elif key == "nodeRootVolumeIops":
262
+ suggest = "node_root_volume_iops"
263
+ elif key == "nodeRootVolumeSize":
264
+ suggest = "node_root_volume_size"
265
+ elif key == "nodeRootVolumeThroughput":
266
+ suggest = "node_root_volume_throughput"
267
+ elif key == "nodeRootVolumeType":
268
+ suggest = "node_root_volume_type"
269
+ elif key == "nodeSecurityGroup":
270
+ suggest = "node_security_group"
271
+ elif key == "nodeSecurityGroupId":
272
+ suggest = "node_security_group_id"
273
+ elif key == "nodeSubnetIds":
274
+ suggest = "node_subnet_ids"
275
+ elif key == "nodeUserData":
276
+ suggest = "node_user_data"
277
+ elif key == "nodeUserDataOverride":
278
+ suggest = "node_user_data_override"
279
+ elif key == "nodeadmExtraOptions":
280
+ suggest = "nodeadm_extra_options"
281
+ elif key == "operatingSystem":
282
+ suggest = "operating_system"
283
+ elif key == "spotPrice":
284
+ suggest = "spot_price"
285
+
286
+ if suggest:
287
+ pulumi.log.warn(f"Key '{key}' not found in ClusterNodeGroupOptions. Access the value via the '{suggest}' property getter instead.")
288
+
289
+ def __getitem__(self, key: str) -> Any:
290
+ ClusterNodeGroupOptions.__key_warning(key)
291
+ return super().__getitem__(key)
292
+
293
+ def get(self, key: str, default = None) -> Any:
294
+ ClusterNodeGroupOptions.__key_warning(key)
295
+ return super().get(key, default)
296
+
297
+ def __init__(__self__, *,
298
+ ami_id: Optional[_builtins.str] = None,
299
+ ami_type: Optional[_builtins.str] = None,
300
+ auto_scaling_group_tags: Optional[Mapping[str, _builtins.str]] = None,
301
+ bootstrap_extra_args: Optional[_builtins.str] = None,
302
+ bottlerocket_settings: Optional[Mapping[str, Any]] = None,
303
+ cloud_formation_tags: Optional[Mapping[str, _builtins.str]] = None,
304
+ cluster_ingress_rule: Optional['pulumi_aws.ec2.SecurityGroupRule'] = None,
305
+ cluster_ingress_rule_id: Optional[_builtins.str] = None,
306
+ desired_capacity: Optional[_builtins.int] = None,
307
+ enable_detailed_monitoring: Optional[_builtins.bool] = None,
308
+ encrypt_root_block_device: Optional[_builtins.bool] = None,
309
+ extra_node_security_groups: Optional[Sequence['pulumi_aws.ec2.SecurityGroup']] = None,
310
+ gpu: Optional[_builtins.bool] = None,
311
+ ignore_scaling_changes: Optional[_builtins.bool] = None,
312
+ instance_profile: Optional['pulumi_aws.iam.InstanceProfile'] = None,
313
+ instance_profile_name: Optional[_builtins.str] = None,
314
+ instance_type: Optional[_builtins.str] = None,
315
+ key_name: Optional[_builtins.str] = None,
316
+ kubelet_extra_args: Optional[_builtins.str] = None,
317
+ labels: Optional[Mapping[str, _builtins.str]] = None,
318
+ launch_template_tag_specifications: Optional[Sequence['pulumi_aws.ec2.outputs.LaunchTemplateTagSpecification']] = None,
319
+ max_size: Optional[_builtins.int] = None,
320
+ min_refresh_percentage: Optional[_builtins.int] = None,
321
+ min_size: Optional[_builtins.int] = None,
322
+ node_associate_public_ip_address: Optional[_builtins.bool] = None,
323
+ node_public_key: Optional[_builtins.str] = None,
324
+ node_root_volume_delete_on_termination: Optional[_builtins.bool] = None,
325
+ node_root_volume_encrypted: Optional[_builtins.bool] = None,
326
+ node_root_volume_iops: Optional[_builtins.int] = None,
327
+ node_root_volume_size: Optional[_builtins.int] = None,
328
+ node_root_volume_throughput: Optional[_builtins.int] = None,
329
+ node_root_volume_type: Optional[_builtins.str] = None,
330
+ node_security_group: Optional['pulumi_aws.ec2.SecurityGroup'] = None,
331
+ node_security_group_id: Optional[_builtins.str] = None,
332
+ node_subnet_ids: Optional[Sequence[_builtins.str]] = None,
333
+ node_user_data: Optional[_builtins.str] = None,
334
+ node_user_data_override: Optional[_builtins.str] = None,
335
+ nodeadm_extra_options: Optional[Sequence['outputs.NodeadmOptions']] = None,
336
+ operating_system: Optional['OperatingSystem'] = None,
337
+ spot_price: Optional[_builtins.str] = None,
338
+ taints: Optional[Mapping[str, 'outputs.Taint']] = None,
339
+ version: Optional[_builtins.str] = None):
340
+ """
341
+ Describes the configuration options accepted by a cluster to create its own node groups.
342
+ :param _builtins.str ami_id: The AMI ID to use for the worker nodes.
343
+
344
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
345
+
346
+ Note: `amiId` and `gpu` are mutually exclusive.
347
+
348
+ See for more details:
349
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
350
+ :param _builtins.str ami_type: The AMI Type to use for the worker nodes.
351
+
352
+ Only applicable when setting an AMI ID that is of type `arm64`.
353
+
354
+ Note: `amiType` and `gpu` are mutually exclusive.
355
+ :param Mapping[str, _builtins.str] auto_scaling_group_tags: The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack.
356
+
357
+ 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
358
+
359
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
360
+ :param _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.
361
+ :param Mapping[str, Any] bottlerocket_settings: The configuration settings for Bottlerocket OS.
362
+ The settings will get merged with the base settings the provider uses to configure Bottlerocket.
363
+
364
+ This includes:
365
+ - settings.kubernetes.api-server
366
+ - settings.kubernetes.cluster-certificate
367
+ - settings.kubernetes.cluster-name
368
+ - settings.kubernetes.cluster-dns-ip
369
+
370
+ For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/.
371
+ :param Mapping[str, _builtins.str] cloud_formation_tags: The tags to apply to the CloudFormation Stack of the Worker NodeGroup.
372
+
373
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
374
+ :param 'pulumi_aws.ec2.SecurityGroupRule' cluster_ingress_rule: The ingress rule that gives node group access.
375
+ :param _builtins.str cluster_ingress_rule_id: The ID of the ingress rule that gives node group access.
376
+ :param _builtins.int desired_capacity: The number of worker nodes that should be running in the cluster. Defaults to 2.
377
+ :param _builtins.bool enable_detailed_monitoring: Enables/disables detailed monitoring of the EC2 instances.
378
+
379
+ With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals.
380
+ When enabled, you can also get aggregated data across groups of similar instances.
381
+
382
+ Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage.
383
+ For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/.
384
+ :param _builtins.bool encrypt_root_block_device: Encrypt the root block device of the nodes in the node group.
385
+ :param Sequence['pulumi_aws.ec2.SecurityGroup'] extra_node_security_groups: Extra security groups to attach on all nodes in this worker node group.
386
+
387
+ This additional set of security groups captures any user application rules that will be needed for the nodes.
388
+ :param _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.
389
+
390
+ Defaults to false.
391
+
392
+ Note: `gpu` and `amiId` are mutually exclusive.
393
+
394
+ See for more details:
395
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
396
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
397
+ :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.
398
+
399
+ See [EKS best practices](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) for more details.
400
+ :param 'pulumi_aws.iam.InstanceProfile' instance_profile: The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
401
+ :param _builtins.str instance_profile_name: The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
402
+ :param _builtins.str instance_type: The instance type to use for the cluster's nodes. Defaults to "t3.medium".
403
+ :param _builtins.str key_name: Name of the key pair to use for SSH access to worker nodes.
404
+ :param _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`.
405
+ :param Mapping[str, _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.
406
+ :param Sequence['pulumi_aws.ec2.LaunchTemplateTagSpecificationArgs'] launch_template_tag_specifications: The tag specifications to apply to the launch template.
407
+ :param _builtins.int max_size: The maximum number of worker nodes running in the cluster. Defaults to 2.
408
+ :param _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.
409
+ :param _builtins.int min_size: The minimum number of worker nodes running in the cluster. Defaults to 1.
410
+ :param _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.
411
+ :param _builtins.str node_public_key: Public key material for SSH access to worker nodes. See allowed formats at:
412
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
413
+ If not provided, no SSH access is enabled on VMs.
414
+ :param _builtins.bool node_root_volume_delete_on_termination: Whether the root block device should be deleted on termination of the instance. Defaults to true.
415
+ :param _builtins.bool node_root_volume_encrypted: Whether to encrypt a cluster node's root volume. Defaults to false.
416
+ :param _builtins.int node_root_volume_iops: The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
417
+ :param _builtins.int node_root_volume_size: The size in GiB of a cluster node's root volume. Defaults to 20.
418
+ :param _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'.
419
+ :param _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'.
420
+ :param 'pulumi_aws.ec2.SecurityGroup' node_security_group: The security group for the worker node group to communicate with the cluster.
421
+
422
+ This security group requires specific inbound and outbound rules.
423
+
424
+ See for more details:
425
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
426
+
427
+ Note: The `nodeSecurityGroup` option and the cluster option`nodeSecurityGroupTags` are mutually exclusive.
428
+ :param _builtins.str node_security_group_id: The ID of the security group for the worker node group to communicate with the cluster.
429
+
430
+ This security group requires specific inbound and outbound rules.
431
+
432
+ See for more details:
433
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
434
+
435
+ Note: The `nodeSecurityGroupId` option and the cluster option `nodeSecurityGroupTags` are mutually exclusive.
436
+ :param Sequence[_builtins.str] node_subnet_ids: The set of subnets to override and use for the worker node group.
437
+
438
+ 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.
439
+ :param _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 `#!`).
440
+ :param _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).
441
+
442
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html
443
+ :param Sequence['NodeadmOptions'] 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.
444
+ The base settings the provider sets are:
445
+ - cluster.name
446
+ - cluster.apiServerEndpoint
447
+ - cluster.certificateAuthority
448
+ - cluster.cidr
449
+
450
+ Note: This is only applicable when using AL2023.
451
+ See for more details:
452
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/
453
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
454
+ :param '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.
455
+ Valid values are `RECOMMENDED`, `AL2`, `AL2023` and `Bottlerocket`.
456
+
457
+ Defaults to the current recommended OS.
458
+ :param _builtins.str spot_price: Bidding price for spot instance. If set, only spot instances will be added as worker node.
459
+ :param Mapping[str, 'Taint'] taints: Custom k8s node taints to be attached to each worker node. Adds the given taints to the `--register-with-taints` kubelet argument
460
+ :param _builtins.str version: Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
461
+ """
462
+ if ami_id is not None:
463
+ pulumi.set(__self__, "ami_id", ami_id)
464
+ if ami_type is not None:
465
+ pulumi.set(__self__, "ami_type", ami_type)
466
+ if auto_scaling_group_tags is not None:
467
+ pulumi.set(__self__, "auto_scaling_group_tags", auto_scaling_group_tags)
468
+ if bootstrap_extra_args is not None:
469
+ pulumi.set(__self__, "bootstrap_extra_args", bootstrap_extra_args)
470
+ if bottlerocket_settings is not None:
471
+ pulumi.set(__self__, "bottlerocket_settings", bottlerocket_settings)
472
+ if cloud_formation_tags is not None:
473
+ pulumi.set(__self__, "cloud_formation_tags", cloud_formation_tags)
474
+ if cluster_ingress_rule is not None:
475
+ pulumi.set(__self__, "cluster_ingress_rule", cluster_ingress_rule)
476
+ if cluster_ingress_rule_id is not None:
477
+ pulumi.set(__self__, "cluster_ingress_rule_id", cluster_ingress_rule_id)
478
+ if desired_capacity is not None:
479
+ pulumi.set(__self__, "desired_capacity", desired_capacity)
480
+ if enable_detailed_monitoring is not None:
481
+ pulumi.set(__self__, "enable_detailed_monitoring", enable_detailed_monitoring)
482
+ if encrypt_root_block_device is not None:
483
+ pulumi.set(__self__, "encrypt_root_block_device", encrypt_root_block_device)
484
+ if extra_node_security_groups is not None:
485
+ pulumi.set(__self__, "extra_node_security_groups", extra_node_security_groups)
486
+ if gpu is not None:
487
+ pulumi.set(__self__, "gpu", gpu)
488
+ if ignore_scaling_changes is not None:
489
+ pulumi.set(__self__, "ignore_scaling_changes", ignore_scaling_changes)
490
+ if instance_profile is not None:
491
+ pulumi.set(__self__, "instance_profile", instance_profile)
492
+ if instance_profile_name is not None:
493
+ pulumi.set(__self__, "instance_profile_name", instance_profile_name)
494
+ if instance_type is not None:
495
+ pulumi.set(__self__, "instance_type", instance_type)
496
+ if key_name is not None:
497
+ pulumi.set(__self__, "key_name", key_name)
498
+ if kubelet_extra_args is not None:
499
+ pulumi.set(__self__, "kubelet_extra_args", kubelet_extra_args)
500
+ if labels is not None:
501
+ pulumi.set(__self__, "labels", labels)
502
+ if launch_template_tag_specifications is not None:
503
+ pulumi.set(__self__, "launch_template_tag_specifications", launch_template_tag_specifications)
504
+ if max_size is not None:
505
+ pulumi.set(__self__, "max_size", max_size)
506
+ if min_refresh_percentage is not None:
507
+ pulumi.set(__self__, "min_refresh_percentage", min_refresh_percentage)
508
+ if min_size is not None:
509
+ pulumi.set(__self__, "min_size", min_size)
510
+ if node_associate_public_ip_address is not None:
511
+ pulumi.set(__self__, "node_associate_public_ip_address", node_associate_public_ip_address)
512
+ if node_public_key is not None:
513
+ pulumi.set(__self__, "node_public_key", node_public_key)
514
+ if node_root_volume_delete_on_termination is not None:
515
+ pulumi.set(__self__, "node_root_volume_delete_on_termination", node_root_volume_delete_on_termination)
516
+ if node_root_volume_encrypted is not None:
517
+ pulumi.set(__self__, "node_root_volume_encrypted", node_root_volume_encrypted)
518
+ if node_root_volume_iops is not None:
519
+ pulumi.set(__self__, "node_root_volume_iops", node_root_volume_iops)
520
+ if node_root_volume_size is not None:
521
+ pulumi.set(__self__, "node_root_volume_size", node_root_volume_size)
522
+ if node_root_volume_throughput is not None:
523
+ pulumi.set(__self__, "node_root_volume_throughput", node_root_volume_throughput)
524
+ if node_root_volume_type is not None:
525
+ pulumi.set(__self__, "node_root_volume_type", node_root_volume_type)
526
+ if node_security_group is not None:
527
+ pulumi.set(__self__, "node_security_group", node_security_group)
528
+ if node_security_group_id is not None:
529
+ pulumi.set(__self__, "node_security_group_id", node_security_group_id)
530
+ if node_subnet_ids is not None:
531
+ pulumi.set(__self__, "node_subnet_ids", node_subnet_ids)
532
+ if node_user_data is not None:
533
+ pulumi.set(__self__, "node_user_data", node_user_data)
534
+ if node_user_data_override is not None:
535
+ pulumi.set(__self__, "node_user_data_override", node_user_data_override)
536
+ if nodeadm_extra_options is not None:
537
+ pulumi.set(__self__, "nodeadm_extra_options", nodeadm_extra_options)
538
+ if operating_system is not None:
539
+ pulumi.set(__self__, "operating_system", operating_system)
540
+ if spot_price is not None:
541
+ pulumi.set(__self__, "spot_price", spot_price)
542
+ if taints is not None:
543
+ pulumi.set(__self__, "taints", taints)
544
+ if version is not None:
545
+ pulumi.set(__self__, "version", version)
546
+
547
+ @_builtins.property
548
+ @pulumi.getter(name="amiId")
549
+ def ami_id(self) -> Optional[_builtins.str]:
550
+ """
551
+ The AMI ID to use for the worker nodes.
552
+
553
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
554
+
555
+ Note: `amiId` and `gpu` are mutually exclusive.
556
+
557
+ See for more details:
558
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
559
+ """
560
+ return pulumi.get(self, "ami_id")
561
+
562
+ @_builtins.property
563
+ @pulumi.getter(name="amiType")
564
+ def ami_type(self) -> Optional[_builtins.str]:
565
+ """
566
+ The AMI Type to use for the worker nodes.
567
+
568
+ Only applicable when setting an AMI ID that is of type `arm64`.
569
+
570
+ Note: `amiType` and `gpu` are mutually exclusive.
571
+ """
572
+ return pulumi.get(self, "ami_type")
573
+
574
+ @_builtins.property
575
+ @pulumi.getter(name="autoScalingGroupTags")
576
+ def auto_scaling_group_tags(self) -> Optional[Mapping[str, _builtins.str]]:
577
+ """
578
+ The tags to apply to the NodeGroup's AutoScalingGroup in the CloudFormation Stack.
579
+
580
+ 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
581
+
582
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
583
+ """
584
+ return pulumi.get(self, "auto_scaling_group_tags")
585
+
586
+ @_builtins.property
587
+ @pulumi.getter(name="bootstrapExtraArgs")
588
+ def bootstrap_extra_args(self) -> Optional[_builtins.str]:
589
+ """
590
+ 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.
591
+ """
592
+ return pulumi.get(self, "bootstrap_extra_args")
593
+
594
+ @_builtins.property
595
+ @pulumi.getter(name="bottlerocketSettings")
596
+ def bottlerocket_settings(self) -> Optional[Mapping[str, Any]]:
597
+ """
598
+ The configuration settings for Bottlerocket OS.
599
+ The settings will get merged with the base settings the provider uses to configure Bottlerocket.
600
+
601
+ This includes:
602
+ - settings.kubernetes.api-server
603
+ - settings.kubernetes.cluster-certificate
604
+ - settings.kubernetes.cluster-name
605
+ - settings.kubernetes.cluster-dns-ip
606
+
607
+ For an overview of the available settings, see https://bottlerocket.dev/en/os/1.20.x/api/settings/.
608
+ """
609
+ return pulumi.get(self, "bottlerocket_settings")
610
+
611
+ @_builtins.property
612
+ @pulumi.getter(name="cloudFormationTags")
613
+ def cloud_formation_tags(self) -> Optional[Mapping[str, _builtins.str]]:
614
+ """
615
+ The tags to apply to the CloudFormation Stack of the Worker NodeGroup.
616
+
617
+ Note: Given the inheritance of auto-generated CF tags and `cloudFormationTags`, you should either supply the tag in `autoScalingGroupTags` or `cloudFormationTags`, but not both.
618
+ """
619
+ return pulumi.get(self, "cloud_formation_tags")
620
+
621
+ @_builtins.property
622
+ @pulumi.getter(name="clusterIngressRule")
623
+ def cluster_ingress_rule(self) -> Optional['pulumi_aws.ec2.SecurityGroupRule']:
624
+ """
625
+ The ingress rule that gives node group access.
626
+ """
627
+ return pulumi.get(self, "cluster_ingress_rule")
628
+
629
+ @_builtins.property
630
+ @pulumi.getter(name="clusterIngressRuleId")
631
+ def cluster_ingress_rule_id(self) -> Optional[_builtins.str]:
632
+ """
633
+ The ID of the ingress rule that gives node group access.
634
+ """
635
+ return pulumi.get(self, "cluster_ingress_rule_id")
636
+
637
+ @_builtins.property
638
+ @pulumi.getter(name="desiredCapacity")
639
+ def desired_capacity(self) -> Optional[_builtins.int]:
640
+ """
641
+ The number of worker nodes that should be running in the cluster. Defaults to 2.
642
+ """
643
+ return pulumi.get(self, "desired_capacity")
644
+
645
+ @_builtins.property
646
+ @pulumi.getter(name="enableDetailedMonitoring")
647
+ def enable_detailed_monitoring(self) -> Optional[_builtins.bool]:
648
+ """
649
+ Enables/disables detailed monitoring of the EC2 instances.
650
+
651
+ With detailed monitoring, all metrics, including status check metrics, are available in 1-minute intervals.
652
+ When enabled, you can also get aggregated data across groups of similar instances.
653
+
654
+ Note: You are charged per metric that is sent to CloudWatch. You are not charged for data storage.
655
+ For more information, see "Paid tier" and "Example 1 - EC2 Detailed Monitoring" here https://aws.amazon.com/cloudwatch/pricing/.
656
+ """
657
+ return pulumi.get(self, "enable_detailed_monitoring")
658
+
659
+ @_builtins.property
660
+ @pulumi.getter(name="encryptRootBlockDevice")
661
+ def encrypt_root_block_device(self) -> Optional[_builtins.bool]:
662
+ """
663
+ Encrypt the root block device of the nodes in the node group.
664
+ """
665
+ return pulumi.get(self, "encrypt_root_block_device")
666
+
667
+ @_builtins.property
668
+ @pulumi.getter(name="extraNodeSecurityGroups")
669
+ def extra_node_security_groups(self) -> Optional[Sequence['pulumi_aws.ec2.SecurityGroup']]:
670
+ """
671
+ Extra security groups to attach on all nodes in this worker node group.
672
+
673
+ This additional set of security groups captures any user application rules that will be needed for the nodes.
674
+ """
675
+ return pulumi.get(self, "extra_node_security_groups")
676
+
677
+ @_builtins.property
678
+ @pulumi.getter
679
+ def gpu(self) -> Optional[_builtins.bool]:
680
+ """
681
+ Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store.
682
+
683
+ Defaults to false.
684
+
685
+ Note: `gpu` and `amiId` are mutually exclusive.
686
+
687
+ See for more details:
688
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
689
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
690
+ """
691
+ return pulumi.get(self, "gpu")
692
+
693
+ @_builtins.property
694
+ @pulumi.getter(name="ignoreScalingChanges")
695
+ def ignore_scaling_changes(self) -> Optional[_builtins.bool]:
696
+ """
697
+ Whether to ignore changes to the desired size of the Auto Scaling Group. This is useful when using Cluster Autoscaler.
698
+
699
+ See [EKS best practices](https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/) for more details.
700
+ """
701
+ return pulumi.get(self, "ignore_scaling_changes")
702
+
703
+ @_builtins.property
704
+ @pulumi.getter(name="instanceProfile")
705
+ def instance_profile(self) -> Optional['pulumi_aws.iam.InstanceProfile']:
706
+ """
707
+ The IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
708
+ """
709
+ return pulumi.get(self, "instance_profile")
710
+
711
+ @_builtins.property
712
+ @pulumi.getter(name="instanceProfileName")
713
+ def instance_profile_name(self) -> Optional[_builtins.str]:
714
+ """
715
+ The name of the IAM InstanceProfile to use on the NodeGroup. Properties instanceProfile and instanceProfileName are mutually exclusive.
716
+ """
717
+ return pulumi.get(self, "instance_profile_name")
718
+
719
+ @_builtins.property
720
+ @pulumi.getter(name="instanceType")
721
+ def instance_type(self) -> Optional[_builtins.str]:
722
+ """
723
+ The instance type to use for the cluster's nodes. Defaults to "t3.medium".
724
+ """
725
+ return pulumi.get(self, "instance_type")
726
+
727
+ @_builtins.property
728
+ @pulumi.getter(name="keyName")
729
+ def key_name(self) -> Optional[_builtins.str]:
730
+ """
731
+ Name of the key pair to use for SSH access to worker nodes.
732
+ """
733
+ return pulumi.get(self, "key_name")
734
+
735
+ @_builtins.property
736
+ @pulumi.getter(name="kubeletExtraArgs")
737
+ def kubelet_extra_args(self) -> Optional[_builtins.str]:
738
+ """
739
+ 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`.
740
+ """
741
+ return pulumi.get(self, "kubelet_extra_args")
742
+
743
+ @_builtins.property
744
+ @pulumi.getter
745
+ def labels(self) -> Optional[Mapping[str, _builtins.str]]:
746
+ """
747
+ Custom k8s node labels to be attached to each worker node. Adds the given key/value pairs to the `--node-labels` kubelet argument.
748
+ """
749
+ return pulumi.get(self, "labels")
750
+
751
+ @_builtins.property
752
+ @pulumi.getter(name="launchTemplateTagSpecifications")
753
+ def launch_template_tag_specifications(self) -> Optional[Sequence['pulumi_aws.ec2.outputs.LaunchTemplateTagSpecification']]:
754
+ """
755
+ The tag specifications to apply to the launch template.
756
+ """
757
+ return pulumi.get(self, "launch_template_tag_specifications")
758
+
759
+ @_builtins.property
760
+ @pulumi.getter(name="maxSize")
761
+ def max_size(self) -> Optional[_builtins.int]:
762
+ """
763
+ The maximum number of worker nodes running in the cluster. Defaults to 2.
764
+ """
765
+ return pulumi.get(self, "max_size")
766
+
767
+ @_builtins.property
768
+ @pulumi.getter(name="minRefreshPercentage")
769
+ def min_refresh_percentage(self) -> Optional[_builtins.int]:
770
+ """
771
+ The minimum amount of instances that should remain available during an instance refresh, expressed as a percentage. Defaults to 50.
772
+ """
773
+ return pulumi.get(self, "min_refresh_percentage")
774
+
775
+ @_builtins.property
776
+ @pulumi.getter(name="minSize")
777
+ def min_size(self) -> Optional[_builtins.int]:
778
+ """
779
+ The minimum number of worker nodes running in the cluster. Defaults to 1.
780
+ """
781
+ return pulumi.get(self, "min_size")
782
+
783
+ @_builtins.property
784
+ @pulumi.getter(name="nodeAssociatePublicIpAddress")
785
+ def node_associate_public_ip_address(self) -> Optional[_builtins.bool]:
786
+ """
787
+ 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.
788
+ """
789
+ return pulumi.get(self, "node_associate_public_ip_address")
790
+
791
+ @_builtins.property
792
+ @pulumi.getter(name="nodePublicKey")
793
+ def node_public_key(self) -> Optional[_builtins.str]:
794
+ """
795
+ Public key material for SSH access to worker nodes. See allowed formats at:
796
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
797
+ If not provided, no SSH access is enabled on VMs.
798
+ """
799
+ return pulumi.get(self, "node_public_key")
800
+
801
+ @_builtins.property
802
+ @pulumi.getter(name="nodeRootVolumeDeleteOnTermination")
803
+ def node_root_volume_delete_on_termination(self) -> Optional[_builtins.bool]:
804
+ """
805
+ Whether the root block device should be deleted on termination of the instance. Defaults to true.
806
+ """
807
+ return pulumi.get(self, "node_root_volume_delete_on_termination")
808
+
809
+ @_builtins.property
810
+ @pulumi.getter(name="nodeRootVolumeEncrypted")
811
+ def node_root_volume_encrypted(self) -> Optional[_builtins.bool]:
812
+ """
813
+ Whether to encrypt a cluster node's root volume. Defaults to false.
814
+ """
815
+ return pulumi.get(self, "node_root_volume_encrypted")
816
+
817
+ @_builtins.property
818
+ @pulumi.getter(name="nodeRootVolumeIops")
819
+ def node_root_volume_iops(self) -> Optional[_builtins.int]:
820
+ """
821
+ The amount of provisioned IOPS. This is only valid with a volumeType of 'io1'.
822
+ """
823
+ return pulumi.get(self, "node_root_volume_iops")
824
+
825
+ @_builtins.property
826
+ @pulumi.getter(name="nodeRootVolumeSize")
827
+ def node_root_volume_size(self) -> Optional[_builtins.int]:
828
+ """
829
+ The size in GiB of a cluster node's root volume. Defaults to 20.
830
+ """
831
+ return pulumi.get(self, "node_root_volume_size")
832
+
833
+ @_builtins.property
834
+ @pulumi.getter(name="nodeRootVolumeThroughput")
835
+ def node_root_volume_throughput(self) -> Optional[_builtins.int]:
836
+ """
837
+ Provisioned throughput performance in integer MiB/s for a cluster node's root volume. This is only valid with a volumeType of 'gp3'.
838
+ """
839
+ return pulumi.get(self, "node_root_volume_throughput")
840
+
841
+ @_builtins.property
842
+ @pulumi.getter(name="nodeRootVolumeType")
843
+ def node_root_volume_type(self) -> Optional[_builtins.str]:
844
+ """
845
+ Configured EBS type for a cluster node's root volume. Default is 'gp2'. Supported values are 'standard', 'gp2', 'gp3', 'st1', 'sc1', 'io1'.
846
+ """
847
+ return pulumi.get(self, "node_root_volume_type")
848
+
849
+ @_builtins.property
850
+ @pulumi.getter(name="nodeSecurityGroup")
851
+ def node_security_group(self) -> Optional['pulumi_aws.ec2.SecurityGroup']:
852
+ """
853
+ The security group for the worker node group to communicate with the cluster.
854
+
855
+ This security group requires specific inbound and outbound rules.
856
+
857
+ See for more details:
858
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
859
+
860
+ Note: The `nodeSecurityGroup` option and the cluster option`nodeSecurityGroupTags` are mutually exclusive.
861
+ """
862
+ return pulumi.get(self, "node_security_group")
863
+
864
+ @_builtins.property
865
+ @pulumi.getter(name="nodeSecurityGroupId")
866
+ def node_security_group_id(self) -> Optional[_builtins.str]:
867
+ """
868
+ The ID of the security group for the worker node group to communicate with the cluster.
869
+
870
+ This security group requires specific inbound and outbound rules.
871
+
872
+ See for more details:
873
+ https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
874
+
875
+ Note: The `nodeSecurityGroupId` option and the cluster option `nodeSecurityGroupTags` are mutually exclusive.
876
+ """
877
+ return pulumi.get(self, "node_security_group_id")
878
+
879
+ @_builtins.property
880
+ @pulumi.getter(name="nodeSubnetIds")
881
+ def node_subnet_ids(self) -> Optional[Sequence[_builtins.str]]:
882
+ """
883
+ The set of subnets to override and use for the worker node group.
884
+
885
+ 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.
886
+ """
887
+ return pulumi.get(self, "node_subnet_ids")
888
+
889
+ @_builtins.property
890
+ @pulumi.getter(name="nodeUserData")
891
+ def node_user_data(self) -> Optional[_builtins.str]:
892
+ """
893
+ 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 `#!`).
894
+ """
895
+ return pulumi.get(self, "node_user_data")
896
+
897
+ @_builtins.property
898
+ @pulumi.getter(name="nodeUserDataOverride")
899
+ def node_user_data_override(self) -> Optional[_builtins.str]:
900
+ """
901
+ 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).
902
+
903
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/worker.html
904
+ """
905
+ return pulumi.get(self, "node_user_data_override")
906
+
907
+ @_builtins.property
908
+ @pulumi.getter(name="nodeadmExtraOptions")
909
+ def nodeadm_extra_options(self) -> Optional[Sequence['outputs.NodeadmOptions']]:
910
+ """
911
+ 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.
912
+ The base settings the provider sets are:
913
+ - cluster.name
914
+ - cluster.apiServerEndpoint
915
+ - cluster.certificateAuthority
916
+ - cluster.cidr
917
+
918
+ Note: This is only applicable when using AL2023.
919
+ See for more details:
920
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/
921
+ - https://awslabs.github.io/amazon-eks-ami/nodeadm/doc/api/
922
+ """
923
+ return pulumi.get(self, "nodeadm_extra_options")
924
+
925
+ @_builtins.property
926
+ @pulumi.getter(name="operatingSystem")
927
+ def operating_system(self) -> Optional['OperatingSystem']:
928
+ """
929
+ 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.
930
+ Valid values are `RECOMMENDED`, `AL2`, `AL2023` and `Bottlerocket`.
931
+
932
+ Defaults to the current recommended OS.
933
+ """
934
+ return pulumi.get(self, "operating_system")
935
+
936
+ @_builtins.property
937
+ @pulumi.getter(name="spotPrice")
938
+ def spot_price(self) -> Optional[_builtins.str]:
939
+ """
940
+ Bidding price for spot instance. If set, only spot instances will be added as worker node.
941
+ """
942
+ return pulumi.get(self, "spot_price")
943
+
944
+ @_builtins.property
945
+ @pulumi.getter
946
+ def taints(self) -> Optional[Mapping[str, 'outputs.Taint']]:
947
+ """
948
+ Custom k8s node taints to be attached to each worker node. Adds the given taints to the `--register-with-taints` kubelet argument
949
+ """
950
+ return pulumi.get(self, "taints")
951
+
952
+ @_builtins.property
953
+ @pulumi.getter
954
+ def version(self) -> Optional[_builtins.str]:
955
+ """
956
+ Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
957
+ """
958
+ return pulumi.get(self, "version")
959
+
960
+
961
+ @pulumi.output_type
962
+ class CoreData(dict):
963
+ """
964
+ Defines the core set of data associated with an EKS cluster, including the network in which it runs.
965
+ """
966
+ @staticmethod
967
+ def __key_warning(key: str):
968
+ suggest = None
969
+ if key == "clusterIamRole":
970
+ suggest = "cluster_iam_role"
971
+ elif key == "instanceRoles":
972
+ suggest = "instance_roles"
973
+ elif key == "nodeGroupOptions":
974
+ suggest = "node_group_options"
975
+ elif key == "subnetIds":
976
+ suggest = "subnet_ids"
977
+ elif key == "vpcId":
978
+ suggest = "vpc_id"
979
+ elif key == "accessEntries":
980
+ suggest = "access_entries"
981
+ elif key == "awsProvider":
982
+ suggest = "aws_provider"
983
+ elif key == "clusterSecurityGroup":
984
+ suggest = "cluster_security_group"
985
+ elif key == "eksNodeAccess":
986
+ suggest = "eks_node_access"
987
+ elif key == "encryptionConfig":
988
+ suggest = "encryption_config"
989
+ elif key == "fargateProfile":
990
+ suggest = "fargate_profile"
991
+ elif key == "nodeSecurityGroupTags":
992
+ suggest = "node_security_group_tags"
993
+ elif key == "oidcProvider":
994
+ suggest = "oidc_provider"
995
+ elif key == "privateSubnetIds":
996
+ suggest = "private_subnet_ids"
997
+ elif key == "publicSubnetIds":
998
+ suggest = "public_subnet_ids"
999
+ elif key == "storageClasses":
1000
+ suggest = "storage_classes"
1001
+ elif key == "vpcCni":
1002
+ suggest = "vpc_cni"
1003
+
1004
+ if suggest:
1005
+ pulumi.log.warn(f"Key '{key}' not found in CoreData. Access the value via the '{suggest}' property getter instead.")
1006
+
1007
+ def __getitem__(self, key: str) -> Any:
1008
+ CoreData.__key_warning(key)
1009
+ return super().__getitem__(key)
1010
+
1011
+ def get(self, key: str, default = None) -> Any:
1012
+ CoreData.__key_warning(key)
1013
+ return super().get(key, default)
1014
+
1015
+ def __init__(__self__, *,
1016
+ cluster: 'pulumi_aws.eks.Cluster',
1017
+ cluster_iam_role: 'pulumi_aws.iam.Role',
1018
+ endpoint: _builtins.str,
1019
+ instance_roles: Sequence['pulumi_aws.iam.Role'],
1020
+ node_group_options: 'outputs.ClusterNodeGroupOptions',
1021
+ provider: 'pulumi_kubernetes.Provider',
1022
+ subnet_ids: Sequence[_builtins.str],
1023
+ vpc_id: _builtins.str,
1024
+ access_entries: Optional[Sequence['outputs.AccessEntry']] = None,
1025
+ aws_provider: Optional['pulumi_aws.Provider'] = None,
1026
+ cluster_security_group: Optional['pulumi_aws.ec2.SecurityGroup'] = None,
1027
+ eks_node_access: Optional['pulumi_kubernetes.core.v1.ConfigMap'] = None,
1028
+ encryption_config: Optional['pulumi_aws.eks.outputs.ClusterEncryptionConfig'] = None,
1029
+ fargate_profile: Optional['pulumi_aws.eks.FargateProfile'] = None,
1030
+ kubeconfig: Optional[Any] = None,
1031
+ node_security_group_tags: Optional[Mapping[str, _builtins.str]] = None,
1032
+ oidc_provider: Optional['pulumi_aws.iam.OpenIdConnectProvider'] = None,
1033
+ private_subnet_ids: Optional[Sequence[_builtins.str]] = None,
1034
+ public_subnet_ids: Optional[Sequence[_builtins.str]] = None,
1035
+ storage_classes: Optional[Mapping[str, 'pulumi_kubernetes.storage.v1.StorageClass']] = None,
1036
+ tags: Optional[Mapping[str, _builtins.str]] = None,
1037
+ vpc_cni: Optional['VpcCniAddon'] = None):
1038
+ """
1039
+ Defines the core set of data associated with an EKS cluster, including the network in which it runs.
1040
+ :param 'pulumi_aws.iam.Role' cluster_iam_role: The IAM Role attached to the EKS Cluster
1041
+ :param _builtins.str endpoint: The EKS cluster's Kubernetes API server endpoint.
1042
+ :param Sequence['pulumi_aws.iam.Role'] instance_roles: The IAM instance roles for the cluster's nodes.
1043
+ :param 'ClusterNodeGroupOptions' node_group_options: The cluster's node group options.
1044
+ :param Sequence[_builtins.str] subnet_ids: List of subnet IDs for the EKS cluster.
1045
+ :param _builtins.str vpc_id: ID of the cluster's VPC.
1046
+ :param Sequence['AccessEntry'] access_entries: The access entries added to the cluster.
1047
+ :param 'pulumi_aws.eks.FargateProfile' fargate_profile: The Fargate profile used to manage which pods run on Fargate.
1048
+ :param Any kubeconfig: The kubeconfig file for the cluster.
1049
+ :param Mapping[str, _builtins.str] node_security_group_tags: Tags attached to the security groups associated with the cluster's worker nodes.
1050
+ :param Sequence[_builtins.str] private_subnet_ids: List of subnet IDs for the private subnets.
1051
+ :param Sequence[_builtins.str] public_subnet_ids: List of subnet IDs for the public subnets.
1052
+ :param Mapping[str, 'pulumi_kubernetes.storage.v1.StorageClass'] storage_classes: The storage class used for persistent storage by the cluster.
1053
+ :param Mapping[str, _builtins.str] tags: A map of tags assigned to the EKS cluster.
1054
+ :param 'VpcCniAddon' vpc_cni: The VPC CNI for the cluster.
1055
+ """
1056
+ pulumi.set(__self__, "cluster", cluster)
1057
+ pulumi.set(__self__, "cluster_iam_role", cluster_iam_role)
1058
+ pulumi.set(__self__, "endpoint", endpoint)
1059
+ pulumi.set(__self__, "instance_roles", instance_roles)
1060
+ pulumi.set(__self__, "node_group_options", node_group_options)
1061
+ pulumi.set(__self__, "provider", provider)
1062
+ pulumi.set(__self__, "subnet_ids", subnet_ids)
1063
+ pulumi.set(__self__, "vpc_id", vpc_id)
1064
+ if access_entries is not None:
1065
+ pulumi.set(__self__, "access_entries", access_entries)
1066
+ if aws_provider is not None:
1067
+ pulumi.set(__self__, "aws_provider", aws_provider)
1068
+ if cluster_security_group is not None:
1069
+ pulumi.set(__self__, "cluster_security_group", cluster_security_group)
1070
+ if eks_node_access is not None:
1071
+ pulumi.set(__self__, "eks_node_access", eks_node_access)
1072
+ if encryption_config is not None:
1073
+ pulumi.set(__self__, "encryption_config", encryption_config)
1074
+ if fargate_profile is not None:
1075
+ pulumi.set(__self__, "fargate_profile", fargate_profile)
1076
+ if kubeconfig is not None:
1077
+ pulumi.set(__self__, "kubeconfig", kubeconfig)
1078
+ if node_security_group_tags is not None:
1079
+ pulumi.set(__self__, "node_security_group_tags", node_security_group_tags)
1080
+ if oidc_provider is not None:
1081
+ pulumi.set(__self__, "oidc_provider", oidc_provider)
1082
+ if private_subnet_ids is not None:
1083
+ pulumi.set(__self__, "private_subnet_ids", private_subnet_ids)
1084
+ if public_subnet_ids is not None:
1085
+ pulumi.set(__self__, "public_subnet_ids", public_subnet_ids)
1086
+ if storage_classes is not None:
1087
+ pulumi.set(__self__, "storage_classes", storage_classes)
1088
+ if tags is not None:
1089
+ pulumi.set(__self__, "tags", tags)
1090
+ if vpc_cni is not None:
1091
+ pulumi.set(__self__, "vpc_cni", vpc_cni)
1092
+
1093
+ @_builtins.property
1094
+ @pulumi.getter
1095
+ def cluster(self) -> 'pulumi_aws.eks.Cluster':
1096
+ return pulumi.get(self, "cluster")
1097
+
1098
+ @_builtins.property
1099
+ @pulumi.getter(name="clusterIamRole")
1100
+ def cluster_iam_role(self) -> 'pulumi_aws.iam.Role':
1101
+ """
1102
+ The IAM Role attached to the EKS Cluster
1103
+ """
1104
+ return pulumi.get(self, "cluster_iam_role")
1105
+
1106
+ @_builtins.property
1107
+ @pulumi.getter
1108
+ def endpoint(self) -> _builtins.str:
1109
+ """
1110
+ The EKS cluster's Kubernetes API server endpoint.
1111
+ """
1112
+ return pulumi.get(self, "endpoint")
1113
+
1114
+ @_builtins.property
1115
+ @pulumi.getter(name="instanceRoles")
1116
+ def instance_roles(self) -> Sequence['pulumi_aws.iam.Role']:
1117
+ """
1118
+ The IAM instance roles for the cluster's nodes.
1119
+ """
1120
+ return pulumi.get(self, "instance_roles")
1121
+
1122
+ @_builtins.property
1123
+ @pulumi.getter(name="nodeGroupOptions")
1124
+ def node_group_options(self) -> 'outputs.ClusterNodeGroupOptions':
1125
+ """
1126
+ The cluster's node group options.
1127
+ """
1128
+ return pulumi.get(self, "node_group_options")
1129
+
1130
+ @_builtins.property
1131
+ @pulumi.getter
1132
+ def provider(self) -> 'pulumi_kubernetes.Provider':
1133
+ return pulumi.get(self, "provider")
1134
+
1135
+ @_builtins.property
1136
+ @pulumi.getter(name="subnetIds")
1137
+ def subnet_ids(self) -> Sequence[_builtins.str]:
1138
+ """
1139
+ List of subnet IDs for the EKS cluster.
1140
+ """
1141
+ return pulumi.get(self, "subnet_ids")
1142
+
1143
+ @_builtins.property
1144
+ @pulumi.getter(name="vpcId")
1145
+ def vpc_id(self) -> _builtins.str:
1146
+ """
1147
+ ID of the cluster's VPC.
1148
+ """
1149
+ return pulumi.get(self, "vpc_id")
1150
+
1151
+ @_builtins.property
1152
+ @pulumi.getter(name="accessEntries")
1153
+ def access_entries(self) -> Optional[Sequence['outputs.AccessEntry']]:
1154
+ """
1155
+ The access entries added to the cluster.
1156
+ """
1157
+ return pulumi.get(self, "access_entries")
1158
+
1159
+ @_builtins.property
1160
+ @pulumi.getter(name="awsProvider")
1161
+ def aws_provider(self) -> Optional['pulumi_aws.Provider']:
1162
+ return pulumi.get(self, "aws_provider")
1163
+
1164
+ @_builtins.property
1165
+ @pulumi.getter(name="clusterSecurityGroup")
1166
+ def cluster_security_group(self) -> Optional['pulumi_aws.ec2.SecurityGroup']:
1167
+ return pulumi.get(self, "cluster_security_group")
1168
+
1169
+ @_builtins.property
1170
+ @pulumi.getter(name="eksNodeAccess")
1171
+ def eks_node_access(self) -> Optional['pulumi_kubernetes.core.v1.ConfigMap']:
1172
+ return pulumi.get(self, "eks_node_access")
1173
+
1174
+ @_builtins.property
1175
+ @pulumi.getter(name="encryptionConfig")
1176
+ def encryption_config(self) -> Optional['pulumi_aws.eks.outputs.ClusterEncryptionConfig']:
1177
+ return pulumi.get(self, "encryption_config")
1178
+
1179
+ @_builtins.property
1180
+ @pulumi.getter(name="fargateProfile")
1181
+ def fargate_profile(self) -> Optional['pulumi_aws.eks.FargateProfile']:
1182
+ """
1183
+ The Fargate profile used to manage which pods run on Fargate.
1184
+ """
1185
+ return pulumi.get(self, "fargate_profile")
1186
+
1187
+ @_builtins.property
1188
+ @pulumi.getter
1189
+ def kubeconfig(self) -> Optional[Any]:
1190
+ """
1191
+ The kubeconfig file for the cluster.
1192
+ """
1193
+ return pulumi.get(self, "kubeconfig")
1194
+
1195
+ @_builtins.property
1196
+ @pulumi.getter(name="nodeSecurityGroupTags")
1197
+ def node_security_group_tags(self) -> Optional[Mapping[str, _builtins.str]]:
1198
+ """
1199
+ Tags attached to the security groups associated with the cluster's worker nodes.
1200
+ """
1201
+ return pulumi.get(self, "node_security_group_tags")
1202
+
1203
+ @_builtins.property
1204
+ @pulumi.getter(name="oidcProvider")
1205
+ def oidc_provider(self) -> Optional['pulumi_aws.iam.OpenIdConnectProvider']:
1206
+ return pulumi.get(self, "oidc_provider")
1207
+
1208
+ @_builtins.property
1209
+ @pulumi.getter(name="privateSubnetIds")
1210
+ def private_subnet_ids(self) -> Optional[Sequence[_builtins.str]]:
1211
+ """
1212
+ List of subnet IDs for the private subnets.
1213
+ """
1214
+ return pulumi.get(self, "private_subnet_ids")
1215
+
1216
+ @_builtins.property
1217
+ @pulumi.getter(name="publicSubnetIds")
1218
+ def public_subnet_ids(self) -> Optional[Sequence[_builtins.str]]:
1219
+ """
1220
+ List of subnet IDs for the public subnets.
1221
+ """
1222
+ return pulumi.get(self, "public_subnet_ids")
1223
+
1224
+ @_builtins.property
1225
+ @pulumi.getter(name="storageClasses")
1226
+ def storage_classes(self) -> Optional[Mapping[str, 'pulumi_kubernetes.storage.v1.StorageClass']]:
1227
+ """
1228
+ The storage class used for persistent storage by the cluster.
1229
+ """
1230
+ return pulumi.get(self, "storage_classes")
1231
+
1232
+ @_builtins.property
1233
+ @pulumi.getter
1234
+ def tags(self) -> Optional[Mapping[str, _builtins.str]]:
1235
+ """
1236
+ A map of tags assigned to the EKS cluster.
1237
+ """
1238
+ return pulumi.get(self, "tags")
1239
+
1240
+ @_builtins.property
1241
+ @pulumi.getter(name="vpcCni")
1242
+ def vpc_cni(self) -> Optional['VpcCniAddon']:
1243
+ """
1244
+ The VPC CNI for the cluster.
1245
+ """
1246
+ return pulumi.get(self, "vpc_cni")
1247
+
1248
+
1249
+ @pulumi.output_type
1250
+ class NodeGroupData(dict):
1251
+ """
1252
+ NodeGroupData describes the resources created for the given NodeGroup.
1253
+ """
1254
+ @staticmethod
1255
+ def __key_warning(key: str):
1256
+ suggest = None
1257
+ if key == "autoScalingGroup":
1258
+ suggest = "auto_scaling_group"
1259
+ elif key == "extraNodeSecurityGroups":
1260
+ suggest = "extra_node_security_groups"
1261
+ elif key == "nodeSecurityGroup":
1262
+ suggest = "node_security_group"
1263
+
1264
+ if suggest:
1265
+ pulumi.log.warn(f"Key '{key}' not found in NodeGroupData. Access the value via the '{suggest}' property getter instead.")
1266
+
1267
+ def __getitem__(self, key: str) -> Any:
1268
+ NodeGroupData.__key_warning(key)
1269
+ return super().__getitem__(key)
1270
+
1271
+ def get(self, key: str, default = None) -> Any:
1272
+ NodeGroupData.__key_warning(key)
1273
+ return super().get(key, default)
1274
+
1275
+ def __init__(__self__, *,
1276
+ auto_scaling_group: 'pulumi_aws.autoscaling.Group',
1277
+ extra_node_security_groups: Sequence['pulumi_aws.ec2.SecurityGroup'],
1278
+ node_security_group: 'pulumi_aws.ec2.SecurityGroup'):
1279
+ """
1280
+ NodeGroupData describes the resources created for the given NodeGroup.
1281
+ :param 'pulumi_aws.autoscaling.Group' auto_scaling_group: The AutoScalingGroup for the node group.
1282
+ :param Sequence['pulumi_aws.ec2.SecurityGroup'] extra_node_security_groups: The additional security groups for the node group that captures user-specific rules.
1283
+ :param 'pulumi_aws.ec2.SecurityGroup' node_security_group: The security group for the node group to communicate with the cluster.
1284
+ """
1285
+ pulumi.set(__self__, "auto_scaling_group", auto_scaling_group)
1286
+ pulumi.set(__self__, "extra_node_security_groups", extra_node_security_groups)
1287
+ pulumi.set(__self__, "node_security_group", node_security_group)
1288
+
1289
+ @_builtins.property
1290
+ @pulumi.getter(name="autoScalingGroup")
1291
+ def auto_scaling_group(self) -> 'pulumi_aws.autoscaling.Group':
1292
+ """
1293
+ The AutoScalingGroup for the node group.
1294
+ """
1295
+ return pulumi.get(self, "auto_scaling_group")
1296
+
1297
+ @_builtins.property
1298
+ @pulumi.getter(name="extraNodeSecurityGroups")
1299
+ def extra_node_security_groups(self) -> Sequence['pulumi_aws.ec2.SecurityGroup']:
1300
+ """
1301
+ The additional security groups for the node group that captures user-specific rules.
1302
+ """
1303
+ return pulumi.get(self, "extra_node_security_groups")
1304
+
1305
+ @_builtins.property
1306
+ @pulumi.getter(name="nodeSecurityGroup")
1307
+ def node_security_group(self) -> 'pulumi_aws.ec2.SecurityGroup':
1308
+ """
1309
+ The security group for the node group to communicate with the cluster.
1310
+ """
1311
+ return pulumi.get(self, "node_security_group")
1312
+
1313
+
1314
+ @pulumi.output_type
1315
+ class NodeadmOptions(dict):
1316
+ """
1317
+ MIME document parts for nodeadm configuration. This can be shell scripts, nodeadm configuration or any other user data compatible script.
1318
+
1319
+ See for more details: https://awslabs.github.io/amazon-eks-ami/nodeadm/.
1320
+ """
1321
+ @staticmethod
1322
+ def __key_warning(key: str):
1323
+ suggest = None
1324
+ if key == "contentType":
1325
+ suggest = "content_type"
1326
+
1327
+ if suggest:
1328
+ pulumi.log.warn(f"Key '{key}' not found in NodeadmOptions. Access the value via the '{suggest}' property getter instead.")
1329
+
1330
+ def __getitem__(self, key: str) -> Any:
1331
+ NodeadmOptions.__key_warning(key)
1332
+ return super().__getitem__(key)
1333
+
1334
+ def get(self, key: str, default = None) -> Any:
1335
+ NodeadmOptions.__key_warning(key)
1336
+ return super().get(key, default)
1337
+
1338
+ def __init__(__self__, *,
1339
+ content: _builtins.str,
1340
+ content_type: _builtins.str):
1341
+ """
1342
+ MIME document parts for nodeadm configuration. This can be shell scripts, nodeadm configuration or any other user data compatible script.
1343
+
1344
+ See for more details: https://awslabs.github.io/amazon-eks-ami/nodeadm/.
1345
+ :param _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.
1346
+ :param _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.
1347
+ """
1348
+ pulumi.set(__self__, "content", content)
1349
+ pulumi.set(__self__, "content_type", content_type)
1350
+
1351
+ @_builtins.property
1352
+ @pulumi.getter
1353
+ def content(self) -> _builtins.str:
1354
+ """
1355
+ The actual content of the MIME document part, such as shell script code or nodeadm configuration. Must be compatible with the specified contentType.
1356
+ """
1357
+ return pulumi.get(self, "content")
1358
+
1359
+ @_builtins.property
1360
+ @pulumi.getter(name="contentType")
1361
+ def content_type(self) -> _builtins.str:
1362
+ """
1363
+ The MIME type of the content. Examples are `text/x-shellscript; charset="us-ascii"` for shell scripts, and `application/node.eks.aws` nodeadm configuration.
1364
+ """
1365
+ return pulumi.get(self, "content_type")
1366
+
1367
+
1368
+ @pulumi.output_type
1369
+ class Taint(dict):
1370
+ """
1371
+ Represents a Kubernetes `taint` to apply to all Nodes in a NodeGroup. See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/.
1372
+ """
1373
+ def __init__(__self__, *,
1374
+ effect: _builtins.str,
1375
+ value: _builtins.str):
1376
+ """
1377
+ Represents a Kubernetes `taint` to apply to all Nodes in a NodeGroup. See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/.
1378
+ :param _builtins.str effect: The effect of the taint.
1379
+ :param _builtins.str value: The value of the taint.
1380
+ """
1381
+ pulumi.set(__self__, "effect", effect)
1382
+ pulumi.set(__self__, "value", value)
1383
+
1384
+ @_builtins.property
1385
+ @pulumi.getter
1386
+ def effect(self) -> _builtins.str:
1387
+ """
1388
+ The effect of the taint.
1389
+ """
1390
+ return pulumi.get(self, "effect")
1391
+
1392
+ @_builtins.property
1393
+ @pulumi.getter
1394
+ def value(self) -> _builtins.str:
1395
+ """
1396
+ The value of the taint.
1397
+ """
1398
+ return pulumi.get(self, "value")
1399
+
1400
+