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/cluster.py ADDED
@@ -0,0 +1,1879 @@
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 ._inputs import *
19
+ from .vpc_cni_addon import VpcCniAddon
20
+ import pulumi_aws
21
+ import pulumi_kubernetes
22
+
23
+ __all__ = ['ClusterArgs', 'Cluster']
24
+
25
+ @pulumi.input_type
26
+ class ClusterArgs:
27
+ def __init__(__self__, *,
28
+ access_entries: Optional[Mapping[str, 'AccessEntryArgs']] = None,
29
+ authentication_mode: Optional['AuthenticationMode'] = None,
30
+ auto_mode: Optional['AutoModeOptionsArgs'] = None,
31
+ bootstrap_self_managed_addons: Optional[pulumi.Input[_builtins.bool]] = None,
32
+ cluster_security_group: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']] = None,
33
+ cluster_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
34
+ cluster_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
35
+ coredns_addon_options: Optional['CoreDnsAddonOptionsArgs'] = None,
36
+ create_instance_role: Optional[_builtins.bool] = None,
37
+ create_oidc_provider: Optional[pulumi.Input[_builtins.bool]] = None,
38
+ creation_role_provider: Optional['CreationRoleProviderArgs'] = None,
39
+ deletion_protection: Optional[pulumi.Input[_builtins.bool]] = None,
40
+ desired_capacity: Optional[pulumi.Input[_builtins.int]] = None,
41
+ enable_config_map_mutable: Optional[pulumi.Input[_builtins.bool]] = None,
42
+ enabled_cluster_log_types: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
43
+ encryption_config_key_arn: Optional[pulumi.Input[_builtins.str]] = None,
44
+ endpoint_private_access: Optional[pulumi.Input[_builtins.bool]] = None,
45
+ endpoint_public_access: Optional[pulumi.Input[_builtins.bool]] = None,
46
+ fargate: Optional[pulumi.Input[Union[_builtins.bool, 'FargateProfileArgs']]] = None,
47
+ gpu: Optional[pulumi.Input[_builtins.bool]] = None,
48
+ instance_profile_name: Optional[pulumi.Input[_builtins.str]] = None,
49
+ instance_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
50
+ instance_roles: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]] = None,
51
+ instance_type: Optional[pulumi.Input[_builtins.str]] = None,
52
+ ip_family: Optional[pulumi.Input[_builtins.str]] = None,
53
+ kube_proxy_addon_options: Optional['KubeProxyAddonOptionsArgs'] = None,
54
+ kubernetes_service_ip_address_range: Optional[pulumi.Input[_builtins.str]] = None,
55
+ max_size: Optional[pulumi.Input[_builtins.int]] = None,
56
+ min_size: Optional[pulumi.Input[_builtins.int]] = None,
57
+ name: Optional[pulumi.Input[_builtins.str]] = None,
58
+ node_ami_id: Optional[pulumi.Input[_builtins.str]] = None,
59
+ node_associate_public_ip_address: Optional[_builtins.bool] = None,
60
+ node_group_options: Optional['ClusterNodeGroupOptionsArgs'] = None,
61
+ node_public_key: Optional[pulumi.Input[_builtins.str]] = None,
62
+ node_root_volume_encrypted: Optional[pulumi.Input[_builtins.bool]] = None,
63
+ node_root_volume_size: Optional[pulumi.Input[_builtins.int]] = None,
64
+ node_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
65
+ node_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
66
+ node_user_data: Optional[pulumi.Input[_builtins.str]] = None,
67
+ private_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
68
+ provider_credential_opts: Optional[pulumi.Input['KubeconfigOptionsArgs']] = None,
69
+ proxy: Optional[_builtins.str] = None,
70
+ public_access_cidrs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
71
+ public_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
72
+ role_mappings: Optional[pulumi.Input[Sequence[pulumi.Input['RoleMappingArgs']]]] = None,
73
+ service_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
74
+ skip_default_node_group: Optional[_builtins.bool] = None,
75
+ skip_default_security_groups: Optional[_builtins.bool] = None,
76
+ storage_classes: Optional[Union[_builtins.str, Mapping[str, 'StorageClassArgs']]] = None,
77
+ subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
78
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
79
+ upgrade_policy: Optional[pulumi.Input['pulumi_aws.eks.ClusterUpgradePolicyArgs']] = None,
80
+ use_default_vpc_cni: Optional[_builtins.bool] = None,
81
+ user_mappings: Optional[pulumi.Input[Sequence[pulumi.Input['UserMappingArgs']]]] = None,
82
+ version: Optional[pulumi.Input[_builtins.str]] = None,
83
+ vpc_cni_options: Optional['VpcCniOptionsArgs'] = None,
84
+ vpc_id: Optional[pulumi.Input[_builtins.str]] = None):
85
+ """
86
+ The set of arguments for constructing a Cluster resource.
87
+ :param Mapping[str, 'AccessEntryArgs'] access_entries: Access entries to add to the EKS cluster. They can be used to allow IAM principals to access the cluster. Access entries are only supported with authentication mode `API` or `API_AND_CONFIG_MAP`.
88
+
89
+ See for more details:
90
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
91
+ :param 'AuthenticationMode' authentication_mode: The authentication mode of the cluster. Valid values are `CONFIG_MAP`, `API` or `API_AND_CONFIG_MAP`.
92
+
93
+ See for more details:
94
+ https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#set-cam
95
+ :param 'AutoModeOptionsArgs' auto_mode: Configuration Options for EKS Auto Mode. If EKS Auto Mode is enabled, AWS will manage cluster infrastructure on your behalf.
96
+
97
+ For more information, see: https://docs.aws.amazon.com/eks/latest/userguide/automode.html
98
+ :param pulumi.Input[_builtins.bool] bootstrap_self_managed_addons: Install default unmanaged add-ons, such as `aws-cni`, `kube-proxy`, and CoreDNS during cluster creation. If `false`, you must manually install desired add-ons. Changing this value will force a new cluster to be created. Defaults to `true`
99
+ :param pulumi.Input['pulumi_aws.ec2.SecurityGroup'] cluster_security_group: The security group to use for the cluster API endpoint. If not provided, a new security group will be created with full internet egress and ingress from node groups.
100
+
101
+ Note: The security group resource should not contain any inline ingress or egress rules.
102
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] cluster_security_group_tags: The tags to apply to the cluster security group.
103
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] cluster_tags: The tags to apply to the EKS cluster.
104
+ :param 'CoreDnsAddonOptionsArgs' coredns_addon_options: Options for managing the `coredns` addon.
105
+ :param _builtins.bool create_instance_role: Whether to create the instance role for the EKS cluster. Defaults to true when using the default node group, false otherwise.
106
+ If set to false when using the default node group, an instance role or instance profile must be provided.n
107
+ Note: this option has no effect if a custom instance role is provided with `instanceRole` or `instanceRoles`.
108
+ :param pulumi.Input[_builtins.bool] create_oidc_provider: Indicates whether an IAM OIDC Provider is created for the EKS cluster.
109
+
110
+ The OIDC provider is used in the cluster in combination with k8s Service Account annotations to provide IAM roles at the k8s Pod level.
111
+
112
+ See for more details:
113
+ - https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc_verify-thumbprint.html
114
+ - https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
115
+ - https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/
116
+ - https://www.pulumi.com/registry/packages/aws/api-docs/eks/cluster/#enabling-iam-roles-for-service-accounts
117
+ :param 'CreationRoleProviderArgs' creation_role_provider: The IAM Role Provider used to create & authenticate against the EKS cluster. This role is given `[system:masters]` permission in K8S, See: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
118
+
119
+ Note: This option is only supported with Pulumi nodejs programs. Please use `ProviderCredentialOpts` as an alternative instead.
120
+ :param pulumi.Input[_builtins.bool] deletion_protection: Whether to enable deletion protection for the cluster. When enabled, the cluster cannot be deleted unless deletion protection is first disabled. Default: `false`.
121
+ :param pulumi.Input[_builtins.int] desired_capacity: The number of worker nodes that should be running in the cluster. Defaults to 2.
122
+ :param pulumi.Input[_builtins.bool] enable_config_map_mutable: Sets the 'enableConfigMapMutable' option on the cluster kubernetes provider.
123
+
124
+ Applies updates to the aws-auth ConfigMap in place over a replace operation if set to true.
125
+ https://www.pulumi.com/registry/packages/kubernetes/api-docs/provider/#enableconfigmapmutable_nodejs
126
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] enabled_cluster_log_types: Enable EKS control plane logging. This sends logs to cloudwatch. Possible list of values are: ["api", "audit", "authenticator", "controllerManager", "scheduler"]. By default it is off.
127
+ :param pulumi.Input[_builtins.str] encryption_config_key_arn: KMS Key ARN to use with the encryption configuration for the cluster.
128
+
129
+ Only available on Kubernetes 1.13+ clusters created after March 6, 2020.
130
+ See for more details:
131
+ - https://aws.amazon.com/about-aws/whats-new/2020/03/amazon-eks-adds-envelope-encryption-for-secrets-with-aws-kms/
132
+ :param pulumi.Input[_builtins.bool] endpoint_private_access: Indicates whether or not the Amazon EKS private API server endpoint is enabled. Default is `false`.
133
+ :param pulumi.Input[_builtins.bool] endpoint_public_access: Indicates whether or not the Amazon EKS public API server endpoint is enabled. Default is `true`.
134
+ :param pulumi.Input[Union[_builtins.bool, 'FargateProfileArgs']] fargate: Add support for launching pods in Fargate. Defaults to launching pods in the `default` namespace. If specified, the default node group is skipped as though `skipDefaultNodeGroup: true` had been passed.
135
+ :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.
136
+
137
+ Defaults to false.
138
+
139
+ Note: `gpu` and `nodeAmiId` are mutually exclusive.
140
+
141
+ See for more details:
142
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
143
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
144
+ :param pulumi.Input[_builtins.str] instance_profile_name: The default IAM InstanceProfile to use on the Worker NodeGroups, if one is not already set in the NodeGroup.
145
+ :param pulumi.Input['pulumi_aws.iam.Role'] instance_role: This enables the simple case of only registering a *single* IAM instance role with the cluster, that is required to be shared by *all* node groups in their instance profiles.
146
+
147
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
148
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]] instance_roles: This enables the advanced case of registering *many* IAM instance roles with the cluster for per node group IAM, instead of the simpler, shared case of `instanceRole`.
149
+
150
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
151
+ :param pulumi.Input[_builtins.str] instance_type: The instance type to use for the cluster's nodes. Defaults to "t3.medium".
152
+ :param pulumi.Input[_builtins.str] ip_family: The IP family used to assign Kubernetes pod and service addresses. Valid values are `ipv4` (default) and `ipv6`.
153
+ You can only specify an IP family when you create a cluster, changing this value will force a new cluster to be created.
154
+ :param 'KubeProxyAddonOptionsArgs' kube_proxy_addon_options: Options for managing the `kube-proxy` addon.
155
+ :param pulumi.Input[_builtins.str] kubernetes_service_ip_address_range: The CIDR block to assign Kubernetes service IP addresses from. If you don't
156
+ specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or
157
+ 172.20.0.0/16 CIDR blocks. This setting only applies to IPv4 clusters. We recommend that you specify a block
158
+ that does not overlap with resources in other networks that are peered or connected to your VPC. You can only specify
159
+ a custom CIDR block when you create a cluster, changing this value will force a new cluster to be created.
160
+
161
+ The block must meet the following requirements:
162
+ - Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0.0/12, or 192.168.0.0/16.
163
+ - Doesn't overlap with any CIDR block assigned to the VPC that you selected for VPC.
164
+ - Between /24 and /12.
165
+ :param pulumi.Input[_builtins.int] max_size: The maximum number of worker nodes running in the cluster. Defaults to 2.
166
+ :param pulumi.Input[_builtins.int] min_size: The minimum number of worker nodes running in the cluster. Defaults to 1.
167
+ :param pulumi.Input[_builtins.str] name: The cluster's physical resource name.
168
+
169
+ If not specified, the default is to use auto-naming for the cluster's name, resulting in a physical name with the format `${name}-eksCluster-0123abcd`.
170
+
171
+ See for more details: https://www.pulumi.com/docs/intro/concepts/programming-model/#autonaming
172
+ :param pulumi.Input[_builtins.str] node_ami_id: The AMI ID to use for the worker nodes.
173
+
174
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
175
+
176
+ Note: `nodeAmiId` and `gpu` are mutually exclusive.
177
+
178
+ See for more details:
179
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
180
+ :param _builtins.bool node_associate_public_ip_address: Whether or not to auto-assign the EKS worker nodes public IP addresses. 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.
181
+ :param 'ClusterNodeGroupOptionsArgs' node_group_options: The common configuration settings for NodeGroups.
182
+ :param pulumi.Input[_builtins.str] node_public_key: Public key material for SSH access to worker nodes. See allowed formats at:
183
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
184
+ If not provided, no SSH access is enabled on VMs.
185
+ :param pulumi.Input[_builtins.bool] node_root_volume_encrypted: Encrypt the root block device of the nodes in the node group.
186
+ :param pulumi.Input[_builtins.int] node_root_volume_size: The size in GiB of a cluster node's root volume. Defaults to 20.
187
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] node_security_group_tags: The tags to apply to the default `nodeSecurityGroup` created by the cluster.
188
+
189
+ Note: The `nodeSecurityGroupTags` option and the node group option `nodeSecurityGroup` are mutually exclusive.
190
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] node_subnet_ids: The subnets to use for worker nodes. Defaults to the value of subnetIds.
191
+ :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 `#!`).
192
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] private_subnet_ids: The set of private subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
193
+
194
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
195
+
196
+ Worker network architecture options:
197
+ - Private-only: Only set `privateSubnetIds`.
198
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
199
+ - Public-only: Only set `publicSubnetIds`.
200
+ - Default workers to run in a public subnet.
201
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
202
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
203
+
204
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
205
+
206
+ Also consider setting `nodeAssociatePublicIpAddress: false` for fully private workers.
207
+ :param pulumi.Input['KubeconfigOptionsArgs'] provider_credential_opts: The AWS provider credential options to scope the cluster's kubeconfig authentication when using a non-default credential chain.
208
+
209
+ This is required for certain auth scenarios. For example:
210
+ - Creating and using a new AWS provider instance, or
211
+ - Setting the AWS_PROFILE environment variable, or
212
+ - Using a named profile configured on the AWS provider via:
213
+ `pulumi config set aws:profile <profileName>`
214
+
215
+ See for more details:
216
+ - https://www.pulumi.com/registry/packages/aws/api-docs/provider/
217
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/setup/
218
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/#configuration
219
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
220
+ :param _builtins.str proxy: The HTTP(S) proxy to use within a proxied environment.
221
+
222
+ The proxy is used during cluster creation, and OIDC configuration.
223
+
224
+ This is an alternative option to setting the proxy environment variables: HTTP(S)_PROXY and/or http(s)_proxy.
225
+
226
+ This option is required iff the proxy environment variables are not set.
227
+
228
+ Format: <protocol>://<host>:<port>
229
+ Auth Format: <protocol>://<username>:<password>@<host>:<port>
230
+
231
+ Ex:
232
+ - "http://proxy.example.com:3128"
233
+ - "https://proxy.example.com"
234
+ - "http://username:password@proxy.example.com:3128"
235
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] public_access_cidrs: Indicates which CIDR blocks can access the Amazon EKS public API server endpoint.
236
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] public_subnet_ids: The set of public subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
237
+
238
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
239
+
240
+ Worker network architecture options:
241
+ - Private-only: Only set `privateSubnetIds`.
242
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
243
+ - Public-only: Only set `publicSubnetIds`.
244
+ - Default workers to run in a public subnet.
245
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
246
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
247
+
248
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
249
+ :param pulumi.Input[Sequence[pulumi.Input['RoleMappingArgs']]] role_mappings: Optional mappings from AWS IAM roles to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`
250
+ :param pulumi.Input['pulumi_aws.iam.Role'] service_role: IAM Service Role for EKS to use to manage the cluster.
251
+ :param _builtins.bool skip_default_node_group: If this toggle is set to true, the EKS cluster will be created without node group attached. Defaults to false, unless `fargate` or `autoMode` is enabled.
252
+ :param _builtins.bool skip_default_security_groups: If this toggle is set to true, the EKS cluster will be created without the default node and cluster security groups. Defaults to false, unless `autoMode` is enabled.
253
+
254
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
255
+ :param Union[_builtins.str, Mapping[str, 'StorageClassArgs']] storage_classes: An optional set of StorageClasses to enable for the cluster. If this is a single volume type rather than a map, a single StorageClass will be created for that volume type.
256
+
257
+ 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
258
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] subnet_ids: The set of all subnets, public and private, to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
259
+
260
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
261
+
262
+ If the list of subnets includes both public and private subnets, the worker nodes will only be attached to the private subnets, and the public subnets will be used for internet-facing load balancers.
263
+
264
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.
265
+
266
+ Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
267
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] tags: Key-value mapping of tags that are automatically applied to all AWS resources directly under management with this cluster, which support tagging.
268
+ :param pulumi.Input['pulumi_aws.eks.ClusterUpgradePolicyArgs'] upgrade_policy: The cluster's upgrade policy. Valid support types are "STANDARD" and "EXTENDED". Defaults to "EXTENDED".
269
+ :param _builtins.bool use_default_vpc_cni: Use the default VPC CNI instead of creating a custom one. Should not be used in conjunction with `vpcCniOptions`.
270
+ Defaults to true, unless `autoMode` is enabled.
271
+ :param pulumi.Input[Sequence[pulumi.Input['UserMappingArgs']]] user_mappings: Optional mappings from AWS IAM users to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`.
272
+ :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.
273
+ :param 'VpcCniOptionsArgs' vpc_cni_options: The configuration of the Amazon VPC CNI plugin for this instance. Defaults are described in the documentation for the VpcCniOptions type.
274
+ :param pulumi.Input[_builtins.str] vpc_id: The VPC in which to create the cluster and its worker nodes. If unset, the cluster will be created in the default VPC.
275
+ """
276
+ if access_entries is not None:
277
+ pulumi.set(__self__, "access_entries", access_entries)
278
+ if authentication_mode is not None:
279
+ pulumi.set(__self__, "authentication_mode", authentication_mode)
280
+ if auto_mode is not None:
281
+ pulumi.set(__self__, "auto_mode", auto_mode)
282
+ if bootstrap_self_managed_addons is not None:
283
+ pulumi.set(__self__, "bootstrap_self_managed_addons", bootstrap_self_managed_addons)
284
+ if cluster_security_group is not None:
285
+ pulumi.set(__self__, "cluster_security_group", cluster_security_group)
286
+ if cluster_security_group_tags is not None:
287
+ pulumi.set(__self__, "cluster_security_group_tags", cluster_security_group_tags)
288
+ if cluster_tags is not None:
289
+ pulumi.set(__self__, "cluster_tags", cluster_tags)
290
+ if coredns_addon_options is not None:
291
+ pulumi.set(__self__, "coredns_addon_options", coredns_addon_options)
292
+ if create_instance_role is not None:
293
+ pulumi.set(__self__, "create_instance_role", create_instance_role)
294
+ if create_oidc_provider is not None:
295
+ pulumi.set(__self__, "create_oidc_provider", create_oidc_provider)
296
+ if creation_role_provider is not None:
297
+ pulumi.set(__self__, "creation_role_provider", creation_role_provider)
298
+ if deletion_protection is not None:
299
+ pulumi.set(__self__, "deletion_protection", deletion_protection)
300
+ if desired_capacity is not None:
301
+ pulumi.set(__self__, "desired_capacity", desired_capacity)
302
+ if enable_config_map_mutable is not None:
303
+ pulumi.set(__self__, "enable_config_map_mutable", enable_config_map_mutable)
304
+ if enabled_cluster_log_types is not None:
305
+ pulumi.set(__self__, "enabled_cluster_log_types", enabled_cluster_log_types)
306
+ if encryption_config_key_arn is not None:
307
+ pulumi.set(__self__, "encryption_config_key_arn", encryption_config_key_arn)
308
+ if endpoint_private_access is not None:
309
+ pulumi.set(__self__, "endpoint_private_access", endpoint_private_access)
310
+ if endpoint_public_access is not None:
311
+ pulumi.set(__self__, "endpoint_public_access", endpoint_public_access)
312
+ if fargate is not None:
313
+ pulumi.set(__self__, "fargate", fargate)
314
+ if gpu is not None:
315
+ pulumi.set(__self__, "gpu", gpu)
316
+ if instance_profile_name is not None:
317
+ pulumi.set(__self__, "instance_profile_name", instance_profile_name)
318
+ if instance_role is not None:
319
+ pulumi.set(__self__, "instance_role", instance_role)
320
+ if instance_roles is not None:
321
+ pulumi.set(__self__, "instance_roles", instance_roles)
322
+ if instance_type is not None:
323
+ pulumi.set(__self__, "instance_type", instance_type)
324
+ if ip_family is not None:
325
+ pulumi.set(__self__, "ip_family", ip_family)
326
+ if kube_proxy_addon_options is not None:
327
+ pulumi.set(__self__, "kube_proxy_addon_options", kube_proxy_addon_options)
328
+ if kubernetes_service_ip_address_range is not None:
329
+ pulumi.set(__self__, "kubernetes_service_ip_address_range", kubernetes_service_ip_address_range)
330
+ if max_size is not None:
331
+ pulumi.set(__self__, "max_size", max_size)
332
+ if min_size is not None:
333
+ pulumi.set(__self__, "min_size", min_size)
334
+ if name is not None:
335
+ pulumi.set(__self__, "name", name)
336
+ if node_ami_id is not None:
337
+ pulumi.set(__self__, "node_ami_id", node_ami_id)
338
+ if node_associate_public_ip_address is not None:
339
+ pulumi.set(__self__, "node_associate_public_ip_address", node_associate_public_ip_address)
340
+ if node_group_options is not None:
341
+ pulumi.set(__self__, "node_group_options", node_group_options)
342
+ if node_public_key is not None:
343
+ pulumi.set(__self__, "node_public_key", node_public_key)
344
+ if node_root_volume_encrypted is not None:
345
+ pulumi.set(__self__, "node_root_volume_encrypted", node_root_volume_encrypted)
346
+ if node_root_volume_size is not None:
347
+ pulumi.set(__self__, "node_root_volume_size", node_root_volume_size)
348
+ if node_security_group_tags is not None:
349
+ pulumi.set(__self__, "node_security_group_tags", node_security_group_tags)
350
+ if node_subnet_ids is not None:
351
+ pulumi.set(__self__, "node_subnet_ids", node_subnet_ids)
352
+ if node_user_data is not None:
353
+ pulumi.set(__self__, "node_user_data", node_user_data)
354
+ if private_subnet_ids is not None:
355
+ pulumi.set(__self__, "private_subnet_ids", private_subnet_ids)
356
+ if provider_credential_opts is not None:
357
+ pulumi.set(__self__, "provider_credential_opts", provider_credential_opts)
358
+ if proxy is not None:
359
+ pulumi.set(__self__, "proxy", proxy)
360
+ if public_access_cidrs is not None:
361
+ pulumi.set(__self__, "public_access_cidrs", public_access_cidrs)
362
+ if public_subnet_ids is not None:
363
+ pulumi.set(__self__, "public_subnet_ids", public_subnet_ids)
364
+ if role_mappings is not None:
365
+ pulumi.set(__self__, "role_mappings", role_mappings)
366
+ if service_role is not None:
367
+ pulumi.set(__self__, "service_role", service_role)
368
+ if skip_default_node_group is not None:
369
+ pulumi.set(__self__, "skip_default_node_group", skip_default_node_group)
370
+ if skip_default_security_groups is not None:
371
+ pulumi.set(__self__, "skip_default_security_groups", skip_default_security_groups)
372
+ if storage_classes is not None:
373
+ pulumi.set(__self__, "storage_classes", storage_classes)
374
+ if subnet_ids is not None:
375
+ pulumi.set(__self__, "subnet_ids", subnet_ids)
376
+ if tags is not None:
377
+ pulumi.set(__self__, "tags", tags)
378
+ if upgrade_policy is not None:
379
+ pulumi.set(__self__, "upgrade_policy", upgrade_policy)
380
+ if use_default_vpc_cni is not None:
381
+ pulumi.set(__self__, "use_default_vpc_cni", use_default_vpc_cni)
382
+ if user_mappings is not None:
383
+ pulumi.set(__self__, "user_mappings", user_mappings)
384
+ if version is not None:
385
+ pulumi.set(__self__, "version", version)
386
+ if vpc_cni_options is not None:
387
+ pulumi.set(__self__, "vpc_cni_options", vpc_cni_options)
388
+ if vpc_id is not None:
389
+ pulumi.set(__self__, "vpc_id", vpc_id)
390
+
391
+ @_builtins.property
392
+ @pulumi.getter(name="accessEntries")
393
+ def access_entries(self) -> Optional[Mapping[str, 'AccessEntryArgs']]:
394
+ """
395
+ Access entries to add to the EKS cluster. They can be used to allow IAM principals to access the cluster. Access entries are only supported with authentication mode `API` or `API_AND_CONFIG_MAP`.
396
+
397
+ See for more details:
398
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
399
+ """
400
+ return pulumi.get(self, "access_entries")
401
+
402
+ @access_entries.setter
403
+ def access_entries(self, value: Optional[Mapping[str, 'AccessEntryArgs']]):
404
+ pulumi.set(self, "access_entries", value)
405
+
406
+ @_builtins.property
407
+ @pulumi.getter(name="authenticationMode")
408
+ def authentication_mode(self) -> Optional['AuthenticationMode']:
409
+ """
410
+ The authentication mode of the cluster. Valid values are `CONFIG_MAP`, `API` or `API_AND_CONFIG_MAP`.
411
+
412
+ See for more details:
413
+ https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#set-cam
414
+ """
415
+ return pulumi.get(self, "authentication_mode")
416
+
417
+ @authentication_mode.setter
418
+ def authentication_mode(self, value: Optional['AuthenticationMode']):
419
+ pulumi.set(self, "authentication_mode", value)
420
+
421
+ @_builtins.property
422
+ @pulumi.getter(name="autoMode")
423
+ def auto_mode(self) -> Optional['AutoModeOptionsArgs']:
424
+ """
425
+ Configuration Options for EKS Auto Mode. If EKS Auto Mode is enabled, AWS will manage cluster infrastructure on your behalf.
426
+
427
+ For more information, see: https://docs.aws.amazon.com/eks/latest/userguide/automode.html
428
+ """
429
+ return pulumi.get(self, "auto_mode")
430
+
431
+ @auto_mode.setter
432
+ def auto_mode(self, value: Optional['AutoModeOptionsArgs']):
433
+ pulumi.set(self, "auto_mode", value)
434
+
435
+ @_builtins.property
436
+ @pulumi.getter(name="bootstrapSelfManagedAddons")
437
+ def bootstrap_self_managed_addons(self) -> Optional[pulumi.Input[_builtins.bool]]:
438
+ """
439
+ Install default unmanaged add-ons, such as `aws-cni`, `kube-proxy`, and CoreDNS during cluster creation. If `false`, you must manually install desired add-ons. Changing this value will force a new cluster to be created. Defaults to `true`
440
+ """
441
+ return pulumi.get(self, "bootstrap_self_managed_addons")
442
+
443
+ @bootstrap_self_managed_addons.setter
444
+ def bootstrap_self_managed_addons(self, value: Optional[pulumi.Input[_builtins.bool]]):
445
+ pulumi.set(self, "bootstrap_self_managed_addons", value)
446
+
447
+ @_builtins.property
448
+ @pulumi.getter(name="clusterSecurityGroup")
449
+ def cluster_security_group(self) -> Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]:
450
+ """
451
+ The security group to use for the cluster API endpoint. If not provided, a new security group will be created with full internet egress and ingress from node groups.
452
+
453
+ Note: The security group resource should not contain any inline ingress or egress rules.
454
+ """
455
+ return pulumi.get(self, "cluster_security_group")
456
+
457
+ @cluster_security_group.setter
458
+ def cluster_security_group(self, value: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']]):
459
+ pulumi.set(self, "cluster_security_group", value)
460
+
461
+ @_builtins.property
462
+ @pulumi.getter(name="clusterSecurityGroupTags")
463
+ def cluster_security_group_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
464
+ """
465
+ The tags to apply to the cluster security group.
466
+ """
467
+ return pulumi.get(self, "cluster_security_group_tags")
468
+
469
+ @cluster_security_group_tags.setter
470
+ def cluster_security_group_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
471
+ pulumi.set(self, "cluster_security_group_tags", value)
472
+
473
+ @_builtins.property
474
+ @pulumi.getter(name="clusterTags")
475
+ def cluster_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
476
+ """
477
+ The tags to apply to the EKS cluster.
478
+ """
479
+ return pulumi.get(self, "cluster_tags")
480
+
481
+ @cluster_tags.setter
482
+ def cluster_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
483
+ pulumi.set(self, "cluster_tags", value)
484
+
485
+ @_builtins.property
486
+ @pulumi.getter(name="corednsAddonOptions")
487
+ def coredns_addon_options(self) -> Optional['CoreDnsAddonOptionsArgs']:
488
+ """
489
+ Options for managing the `coredns` addon.
490
+ """
491
+ return pulumi.get(self, "coredns_addon_options")
492
+
493
+ @coredns_addon_options.setter
494
+ def coredns_addon_options(self, value: Optional['CoreDnsAddonOptionsArgs']):
495
+ pulumi.set(self, "coredns_addon_options", value)
496
+
497
+ @_builtins.property
498
+ @pulumi.getter(name="createInstanceRole")
499
+ def create_instance_role(self) -> Optional[_builtins.bool]:
500
+ """
501
+ Whether to create the instance role for the EKS cluster. Defaults to true when using the default node group, false otherwise.
502
+ If set to false when using the default node group, an instance role or instance profile must be provided.n
503
+ Note: this option has no effect if a custom instance role is provided with `instanceRole` or `instanceRoles`.
504
+ """
505
+ return pulumi.get(self, "create_instance_role")
506
+
507
+ @create_instance_role.setter
508
+ def create_instance_role(self, value: Optional[_builtins.bool]):
509
+ pulumi.set(self, "create_instance_role", value)
510
+
511
+ @_builtins.property
512
+ @pulumi.getter(name="createOidcProvider")
513
+ def create_oidc_provider(self) -> Optional[pulumi.Input[_builtins.bool]]:
514
+ """
515
+ Indicates whether an IAM OIDC Provider is created for the EKS cluster.
516
+
517
+ The OIDC provider is used in the cluster in combination with k8s Service Account annotations to provide IAM roles at the k8s Pod level.
518
+
519
+ See for more details:
520
+ - https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc_verify-thumbprint.html
521
+ - https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
522
+ - https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/
523
+ - https://www.pulumi.com/registry/packages/aws/api-docs/eks/cluster/#enabling-iam-roles-for-service-accounts
524
+ """
525
+ return pulumi.get(self, "create_oidc_provider")
526
+
527
+ @create_oidc_provider.setter
528
+ def create_oidc_provider(self, value: Optional[pulumi.Input[_builtins.bool]]):
529
+ pulumi.set(self, "create_oidc_provider", value)
530
+
531
+ @_builtins.property
532
+ @pulumi.getter(name="creationRoleProvider")
533
+ def creation_role_provider(self) -> Optional['CreationRoleProviderArgs']:
534
+ """
535
+ The IAM Role Provider used to create & authenticate against the EKS cluster. This role is given `[system:masters]` permission in K8S, See: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
536
+
537
+ Note: This option is only supported with Pulumi nodejs programs. Please use `ProviderCredentialOpts` as an alternative instead.
538
+ """
539
+ return pulumi.get(self, "creation_role_provider")
540
+
541
+ @creation_role_provider.setter
542
+ def creation_role_provider(self, value: Optional['CreationRoleProviderArgs']):
543
+ pulumi.set(self, "creation_role_provider", value)
544
+
545
+ @_builtins.property
546
+ @pulumi.getter(name="deletionProtection")
547
+ def deletion_protection(self) -> Optional[pulumi.Input[_builtins.bool]]:
548
+ """
549
+ Whether to enable deletion protection for the cluster. When enabled, the cluster cannot be deleted unless deletion protection is first disabled. Default: `false`.
550
+ """
551
+ return pulumi.get(self, "deletion_protection")
552
+
553
+ @deletion_protection.setter
554
+ def deletion_protection(self, value: Optional[pulumi.Input[_builtins.bool]]):
555
+ pulumi.set(self, "deletion_protection", value)
556
+
557
+ @_builtins.property
558
+ @pulumi.getter(name="desiredCapacity")
559
+ def desired_capacity(self) -> Optional[pulumi.Input[_builtins.int]]:
560
+ """
561
+ The number of worker nodes that should be running in the cluster. Defaults to 2.
562
+ """
563
+ return pulumi.get(self, "desired_capacity")
564
+
565
+ @desired_capacity.setter
566
+ def desired_capacity(self, value: Optional[pulumi.Input[_builtins.int]]):
567
+ pulumi.set(self, "desired_capacity", value)
568
+
569
+ @_builtins.property
570
+ @pulumi.getter(name="enableConfigMapMutable")
571
+ def enable_config_map_mutable(self) -> Optional[pulumi.Input[_builtins.bool]]:
572
+ """
573
+ Sets the 'enableConfigMapMutable' option on the cluster kubernetes provider.
574
+
575
+ Applies updates to the aws-auth ConfigMap in place over a replace operation if set to true.
576
+ https://www.pulumi.com/registry/packages/kubernetes/api-docs/provider/#enableconfigmapmutable_nodejs
577
+ """
578
+ return pulumi.get(self, "enable_config_map_mutable")
579
+
580
+ @enable_config_map_mutable.setter
581
+ def enable_config_map_mutable(self, value: Optional[pulumi.Input[_builtins.bool]]):
582
+ pulumi.set(self, "enable_config_map_mutable", value)
583
+
584
+ @_builtins.property
585
+ @pulumi.getter(name="enabledClusterLogTypes")
586
+ def enabled_cluster_log_types(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
587
+ """
588
+ Enable EKS control plane logging. This sends logs to cloudwatch. Possible list of values are: ["api", "audit", "authenticator", "controllerManager", "scheduler"]. By default it is off.
589
+ """
590
+ return pulumi.get(self, "enabled_cluster_log_types")
591
+
592
+ @enabled_cluster_log_types.setter
593
+ def enabled_cluster_log_types(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
594
+ pulumi.set(self, "enabled_cluster_log_types", value)
595
+
596
+ @_builtins.property
597
+ @pulumi.getter(name="encryptionConfigKeyArn")
598
+ def encryption_config_key_arn(self) -> Optional[pulumi.Input[_builtins.str]]:
599
+ """
600
+ KMS Key ARN to use with the encryption configuration for the cluster.
601
+
602
+ Only available on Kubernetes 1.13+ clusters created after March 6, 2020.
603
+ See for more details:
604
+ - https://aws.amazon.com/about-aws/whats-new/2020/03/amazon-eks-adds-envelope-encryption-for-secrets-with-aws-kms/
605
+ """
606
+ return pulumi.get(self, "encryption_config_key_arn")
607
+
608
+ @encryption_config_key_arn.setter
609
+ def encryption_config_key_arn(self, value: Optional[pulumi.Input[_builtins.str]]):
610
+ pulumi.set(self, "encryption_config_key_arn", value)
611
+
612
+ @_builtins.property
613
+ @pulumi.getter(name="endpointPrivateAccess")
614
+ def endpoint_private_access(self) -> Optional[pulumi.Input[_builtins.bool]]:
615
+ """
616
+ Indicates whether or not the Amazon EKS private API server endpoint is enabled. Default is `false`.
617
+ """
618
+ return pulumi.get(self, "endpoint_private_access")
619
+
620
+ @endpoint_private_access.setter
621
+ def endpoint_private_access(self, value: Optional[pulumi.Input[_builtins.bool]]):
622
+ pulumi.set(self, "endpoint_private_access", value)
623
+
624
+ @_builtins.property
625
+ @pulumi.getter(name="endpointPublicAccess")
626
+ def endpoint_public_access(self) -> Optional[pulumi.Input[_builtins.bool]]:
627
+ """
628
+ Indicates whether or not the Amazon EKS public API server endpoint is enabled. Default is `true`.
629
+ """
630
+ return pulumi.get(self, "endpoint_public_access")
631
+
632
+ @endpoint_public_access.setter
633
+ def endpoint_public_access(self, value: Optional[pulumi.Input[_builtins.bool]]):
634
+ pulumi.set(self, "endpoint_public_access", value)
635
+
636
+ @_builtins.property
637
+ @pulumi.getter
638
+ def fargate(self) -> Optional[pulumi.Input[Union[_builtins.bool, 'FargateProfileArgs']]]:
639
+ """
640
+ Add support for launching pods in Fargate. Defaults to launching pods in the `default` namespace. If specified, the default node group is skipped as though `skipDefaultNodeGroup: true` had been passed.
641
+ """
642
+ return pulumi.get(self, "fargate")
643
+
644
+ @fargate.setter
645
+ def fargate(self, value: Optional[pulumi.Input[Union[_builtins.bool, 'FargateProfileArgs']]]):
646
+ pulumi.set(self, "fargate", value)
647
+
648
+ @_builtins.property
649
+ @pulumi.getter
650
+ def gpu(self) -> Optional[pulumi.Input[_builtins.bool]]:
651
+ """
652
+ Use the latest recommended EKS Optimized Linux AMI with GPU support for the worker nodes from the AWS Systems Manager Parameter Store.
653
+
654
+ Defaults to false.
655
+
656
+ Note: `gpu` and `nodeAmiId` are mutually exclusive.
657
+
658
+ See for more details:
659
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
660
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
661
+ """
662
+ return pulumi.get(self, "gpu")
663
+
664
+ @gpu.setter
665
+ def gpu(self, value: Optional[pulumi.Input[_builtins.bool]]):
666
+ pulumi.set(self, "gpu", value)
667
+
668
+ @_builtins.property
669
+ @pulumi.getter(name="instanceProfileName")
670
+ def instance_profile_name(self) -> Optional[pulumi.Input[_builtins.str]]:
671
+ """
672
+ The default IAM InstanceProfile to use on the Worker NodeGroups, if one is not already set in the NodeGroup.
673
+ """
674
+ return pulumi.get(self, "instance_profile_name")
675
+
676
+ @instance_profile_name.setter
677
+ def instance_profile_name(self, value: Optional[pulumi.Input[_builtins.str]]):
678
+ pulumi.set(self, "instance_profile_name", value)
679
+
680
+ @_builtins.property
681
+ @pulumi.getter(name="instanceRole")
682
+ def instance_role(self) -> Optional[pulumi.Input['pulumi_aws.iam.Role']]:
683
+ """
684
+ This enables the simple case of only registering a *single* IAM instance role with the cluster, that is required to be shared by *all* node groups in their instance profiles.
685
+
686
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
687
+ """
688
+ return pulumi.get(self, "instance_role")
689
+
690
+ @instance_role.setter
691
+ def instance_role(self, value: Optional[pulumi.Input['pulumi_aws.iam.Role']]):
692
+ pulumi.set(self, "instance_role", value)
693
+
694
+ @_builtins.property
695
+ @pulumi.getter(name="instanceRoles")
696
+ def instance_roles(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]]:
697
+ """
698
+ This enables the advanced case of registering *many* IAM instance roles with the cluster for per node group IAM, instead of the simpler, shared case of `instanceRole`.
699
+
700
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
701
+ """
702
+ return pulumi.get(self, "instance_roles")
703
+
704
+ @instance_roles.setter
705
+ def instance_roles(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]]):
706
+ pulumi.set(self, "instance_roles", value)
707
+
708
+ @_builtins.property
709
+ @pulumi.getter(name="instanceType")
710
+ def instance_type(self) -> Optional[pulumi.Input[_builtins.str]]:
711
+ """
712
+ The instance type to use for the cluster's nodes. Defaults to "t3.medium".
713
+ """
714
+ return pulumi.get(self, "instance_type")
715
+
716
+ @instance_type.setter
717
+ def instance_type(self, value: Optional[pulumi.Input[_builtins.str]]):
718
+ pulumi.set(self, "instance_type", value)
719
+
720
+ @_builtins.property
721
+ @pulumi.getter(name="ipFamily")
722
+ def ip_family(self) -> Optional[pulumi.Input[_builtins.str]]:
723
+ """
724
+ The IP family used to assign Kubernetes pod and service addresses. Valid values are `ipv4` (default) and `ipv6`.
725
+ You can only specify an IP family when you create a cluster, changing this value will force a new cluster to be created.
726
+ """
727
+ return pulumi.get(self, "ip_family")
728
+
729
+ @ip_family.setter
730
+ def ip_family(self, value: Optional[pulumi.Input[_builtins.str]]):
731
+ pulumi.set(self, "ip_family", value)
732
+
733
+ @_builtins.property
734
+ @pulumi.getter(name="kubeProxyAddonOptions")
735
+ def kube_proxy_addon_options(self) -> Optional['KubeProxyAddonOptionsArgs']:
736
+ """
737
+ Options for managing the `kube-proxy` addon.
738
+ """
739
+ return pulumi.get(self, "kube_proxy_addon_options")
740
+
741
+ @kube_proxy_addon_options.setter
742
+ def kube_proxy_addon_options(self, value: Optional['KubeProxyAddonOptionsArgs']):
743
+ pulumi.set(self, "kube_proxy_addon_options", value)
744
+
745
+ @_builtins.property
746
+ @pulumi.getter(name="kubernetesServiceIpAddressRange")
747
+ def kubernetes_service_ip_address_range(self) -> Optional[pulumi.Input[_builtins.str]]:
748
+ """
749
+ The CIDR block to assign Kubernetes service IP addresses from. If you don't
750
+ specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or
751
+ 172.20.0.0/16 CIDR blocks. This setting only applies to IPv4 clusters. We recommend that you specify a block
752
+ that does not overlap with resources in other networks that are peered or connected to your VPC. You can only specify
753
+ a custom CIDR block when you create a cluster, changing this value will force a new cluster to be created.
754
+
755
+ The block must meet the following requirements:
756
+ - Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0.0/12, or 192.168.0.0/16.
757
+ - Doesn't overlap with any CIDR block assigned to the VPC that you selected for VPC.
758
+ - Between /24 and /12.
759
+ """
760
+ return pulumi.get(self, "kubernetes_service_ip_address_range")
761
+
762
+ @kubernetes_service_ip_address_range.setter
763
+ def kubernetes_service_ip_address_range(self, value: Optional[pulumi.Input[_builtins.str]]):
764
+ pulumi.set(self, "kubernetes_service_ip_address_range", value)
765
+
766
+ @_builtins.property
767
+ @pulumi.getter(name="maxSize")
768
+ def max_size(self) -> Optional[pulumi.Input[_builtins.int]]:
769
+ """
770
+ The maximum number of worker nodes running in the cluster. Defaults to 2.
771
+ """
772
+ return pulumi.get(self, "max_size")
773
+
774
+ @max_size.setter
775
+ def max_size(self, value: Optional[pulumi.Input[_builtins.int]]):
776
+ pulumi.set(self, "max_size", value)
777
+
778
+ @_builtins.property
779
+ @pulumi.getter(name="minSize")
780
+ def min_size(self) -> Optional[pulumi.Input[_builtins.int]]:
781
+ """
782
+ The minimum number of worker nodes running in the cluster. Defaults to 1.
783
+ """
784
+ return pulumi.get(self, "min_size")
785
+
786
+ @min_size.setter
787
+ def min_size(self, value: Optional[pulumi.Input[_builtins.int]]):
788
+ pulumi.set(self, "min_size", value)
789
+
790
+ @_builtins.property
791
+ @pulumi.getter
792
+ def name(self) -> Optional[pulumi.Input[_builtins.str]]:
793
+ """
794
+ The cluster's physical resource name.
795
+
796
+ If not specified, the default is to use auto-naming for the cluster's name, resulting in a physical name with the format `${name}-eksCluster-0123abcd`.
797
+
798
+ See for more details: https://www.pulumi.com/docs/intro/concepts/programming-model/#autonaming
799
+ """
800
+ return pulumi.get(self, "name")
801
+
802
+ @name.setter
803
+ def name(self, value: Optional[pulumi.Input[_builtins.str]]):
804
+ pulumi.set(self, "name", value)
805
+
806
+ @_builtins.property
807
+ @pulumi.getter(name="nodeAmiId")
808
+ def node_ami_id(self) -> Optional[pulumi.Input[_builtins.str]]:
809
+ """
810
+ The AMI ID to use for the worker nodes.
811
+
812
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
813
+
814
+ Note: `nodeAmiId` and `gpu` are mutually exclusive.
815
+
816
+ See for more details:
817
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
818
+ """
819
+ return pulumi.get(self, "node_ami_id")
820
+
821
+ @node_ami_id.setter
822
+ def node_ami_id(self, value: Optional[pulumi.Input[_builtins.str]]):
823
+ pulumi.set(self, "node_ami_id", value)
824
+
825
+ @_builtins.property
826
+ @pulumi.getter(name="nodeAssociatePublicIpAddress")
827
+ def node_associate_public_ip_address(self) -> Optional[_builtins.bool]:
828
+ """
829
+ Whether or not to auto-assign the EKS worker nodes public IP addresses. 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.
830
+ """
831
+ return pulumi.get(self, "node_associate_public_ip_address")
832
+
833
+ @node_associate_public_ip_address.setter
834
+ def node_associate_public_ip_address(self, value: Optional[_builtins.bool]):
835
+ pulumi.set(self, "node_associate_public_ip_address", value)
836
+
837
+ @_builtins.property
838
+ @pulumi.getter(name="nodeGroupOptions")
839
+ def node_group_options(self) -> Optional['ClusterNodeGroupOptionsArgs']:
840
+ """
841
+ The common configuration settings for NodeGroups.
842
+ """
843
+ return pulumi.get(self, "node_group_options")
844
+
845
+ @node_group_options.setter
846
+ def node_group_options(self, value: Optional['ClusterNodeGroupOptionsArgs']):
847
+ pulumi.set(self, "node_group_options", value)
848
+
849
+ @_builtins.property
850
+ @pulumi.getter(name="nodePublicKey")
851
+ def node_public_key(self) -> Optional[pulumi.Input[_builtins.str]]:
852
+ """
853
+ Public key material for SSH access to worker nodes. See allowed formats at:
854
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
855
+ If not provided, no SSH access is enabled on VMs.
856
+ """
857
+ return pulumi.get(self, "node_public_key")
858
+
859
+ @node_public_key.setter
860
+ def node_public_key(self, value: Optional[pulumi.Input[_builtins.str]]):
861
+ pulumi.set(self, "node_public_key", value)
862
+
863
+ @_builtins.property
864
+ @pulumi.getter(name="nodeRootVolumeEncrypted")
865
+ def node_root_volume_encrypted(self) -> Optional[pulumi.Input[_builtins.bool]]:
866
+ """
867
+ Encrypt the root block device of the nodes in the node group.
868
+ """
869
+ return pulumi.get(self, "node_root_volume_encrypted")
870
+
871
+ @node_root_volume_encrypted.setter
872
+ def node_root_volume_encrypted(self, value: Optional[pulumi.Input[_builtins.bool]]):
873
+ pulumi.set(self, "node_root_volume_encrypted", value)
874
+
875
+ @_builtins.property
876
+ @pulumi.getter(name="nodeRootVolumeSize")
877
+ def node_root_volume_size(self) -> Optional[pulumi.Input[_builtins.int]]:
878
+ """
879
+ The size in GiB of a cluster node's root volume. Defaults to 20.
880
+ """
881
+ return pulumi.get(self, "node_root_volume_size")
882
+
883
+ @node_root_volume_size.setter
884
+ def node_root_volume_size(self, value: Optional[pulumi.Input[_builtins.int]]):
885
+ pulumi.set(self, "node_root_volume_size", value)
886
+
887
+ @_builtins.property
888
+ @pulumi.getter(name="nodeSecurityGroupTags")
889
+ def node_security_group_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
890
+ """
891
+ The tags to apply to the default `nodeSecurityGroup` created by the cluster.
892
+
893
+ Note: The `nodeSecurityGroupTags` option and the node group option `nodeSecurityGroup` are mutually exclusive.
894
+ """
895
+ return pulumi.get(self, "node_security_group_tags")
896
+
897
+ @node_security_group_tags.setter
898
+ def node_security_group_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
899
+ pulumi.set(self, "node_security_group_tags", value)
900
+
901
+ @_builtins.property
902
+ @pulumi.getter(name="nodeSubnetIds")
903
+ def node_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
904
+ """
905
+ The subnets to use for worker nodes. Defaults to the value of subnetIds.
906
+ """
907
+ return pulumi.get(self, "node_subnet_ids")
908
+
909
+ @node_subnet_ids.setter
910
+ def node_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
911
+ pulumi.set(self, "node_subnet_ids", value)
912
+
913
+ @_builtins.property
914
+ @pulumi.getter(name="nodeUserData")
915
+ def node_user_data(self) -> Optional[pulumi.Input[_builtins.str]]:
916
+ """
917
+ 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 `#!`).
918
+ """
919
+ return pulumi.get(self, "node_user_data")
920
+
921
+ @node_user_data.setter
922
+ def node_user_data(self, value: Optional[pulumi.Input[_builtins.str]]):
923
+ pulumi.set(self, "node_user_data", value)
924
+
925
+ @_builtins.property
926
+ @pulumi.getter(name="privateSubnetIds")
927
+ def private_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
928
+ """
929
+ The set of private subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
930
+
931
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
932
+
933
+ Worker network architecture options:
934
+ - Private-only: Only set `privateSubnetIds`.
935
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
936
+ - Public-only: Only set `publicSubnetIds`.
937
+ - Default workers to run in a public subnet.
938
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
939
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
940
+
941
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
942
+
943
+ Also consider setting `nodeAssociatePublicIpAddress: false` for fully private workers.
944
+ """
945
+ return pulumi.get(self, "private_subnet_ids")
946
+
947
+ @private_subnet_ids.setter
948
+ def private_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
949
+ pulumi.set(self, "private_subnet_ids", value)
950
+
951
+ @_builtins.property
952
+ @pulumi.getter(name="providerCredentialOpts")
953
+ def provider_credential_opts(self) -> Optional[pulumi.Input['KubeconfigOptionsArgs']]:
954
+ """
955
+ The AWS provider credential options to scope the cluster's kubeconfig authentication when using a non-default credential chain.
956
+
957
+ This is required for certain auth scenarios. For example:
958
+ - Creating and using a new AWS provider instance, or
959
+ - Setting the AWS_PROFILE environment variable, or
960
+ - Using a named profile configured on the AWS provider via:
961
+ `pulumi config set aws:profile <profileName>`
962
+
963
+ See for more details:
964
+ - https://www.pulumi.com/registry/packages/aws/api-docs/provider/
965
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/setup/
966
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/#configuration
967
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
968
+ """
969
+ return pulumi.get(self, "provider_credential_opts")
970
+
971
+ @provider_credential_opts.setter
972
+ def provider_credential_opts(self, value: Optional[pulumi.Input['KubeconfigOptionsArgs']]):
973
+ pulumi.set(self, "provider_credential_opts", value)
974
+
975
+ @_builtins.property
976
+ @pulumi.getter
977
+ def proxy(self) -> Optional[_builtins.str]:
978
+ """
979
+ The HTTP(S) proxy to use within a proxied environment.
980
+
981
+ The proxy is used during cluster creation, and OIDC configuration.
982
+
983
+ This is an alternative option to setting the proxy environment variables: HTTP(S)_PROXY and/or http(s)_proxy.
984
+
985
+ This option is required iff the proxy environment variables are not set.
986
+
987
+ Format: <protocol>://<host>:<port>
988
+ Auth Format: <protocol>://<username>:<password>@<host>:<port>
989
+
990
+ Ex:
991
+ - "http://proxy.example.com:3128"
992
+ - "https://proxy.example.com"
993
+ - "http://username:password@proxy.example.com:3128"
994
+ """
995
+ return pulumi.get(self, "proxy")
996
+
997
+ @proxy.setter
998
+ def proxy(self, value: Optional[_builtins.str]):
999
+ pulumi.set(self, "proxy", value)
1000
+
1001
+ @_builtins.property
1002
+ @pulumi.getter(name="publicAccessCidrs")
1003
+ def public_access_cidrs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1004
+ """
1005
+ Indicates which CIDR blocks can access the Amazon EKS public API server endpoint.
1006
+ """
1007
+ return pulumi.get(self, "public_access_cidrs")
1008
+
1009
+ @public_access_cidrs.setter
1010
+ def public_access_cidrs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1011
+ pulumi.set(self, "public_access_cidrs", value)
1012
+
1013
+ @_builtins.property
1014
+ @pulumi.getter(name="publicSubnetIds")
1015
+ def public_subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1016
+ """
1017
+ The set of public subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
1018
+
1019
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
1020
+
1021
+ Worker network architecture options:
1022
+ - Private-only: Only set `privateSubnetIds`.
1023
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
1024
+ - Public-only: Only set `publicSubnetIds`.
1025
+ - Default workers to run in a public subnet.
1026
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
1027
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
1028
+
1029
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
1030
+ """
1031
+ return pulumi.get(self, "public_subnet_ids")
1032
+
1033
+ @public_subnet_ids.setter
1034
+ def public_subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1035
+ pulumi.set(self, "public_subnet_ids", value)
1036
+
1037
+ @_builtins.property
1038
+ @pulumi.getter(name="roleMappings")
1039
+ def role_mappings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RoleMappingArgs']]]]:
1040
+ """
1041
+ Optional mappings from AWS IAM roles to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`
1042
+ """
1043
+ return pulumi.get(self, "role_mappings")
1044
+
1045
+ @role_mappings.setter
1046
+ def role_mappings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['RoleMappingArgs']]]]):
1047
+ pulumi.set(self, "role_mappings", value)
1048
+
1049
+ @_builtins.property
1050
+ @pulumi.getter(name="serviceRole")
1051
+ def service_role(self) -> Optional[pulumi.Input['pulumi_aws.iam.Role']]:
1052
+ """
1053
+ IAM Service Role for EKS to use to manage the cluster.
1054
+ """
1055
+ return pulumi.get(self, "service_role")
1056
+
1057
+ @service_role.setter
1058
+ def service_role(self, value: Optional[pulumi.Input['pulumi_aws.iam.Role']]):
1059
+ pulumi.set(self, "service_role", value)
1060
+
1061
+ @_builtins.property
1062
+ @pulumi.getter(name="skipDefaultNodeGroup")
1063
+ def skip_default_node_group(self) -> Optional[_builtins.bool]:
1064
+ """
1065
+ If this toggle is set to true, the EKS cluster will be created without node group attached. Defaults to false, unless `fargate` or `autoMode` is enabled.
1066
+ """
1067
+ return pulumi.get(self, "skip_default_node_group")
1068
+
1069
+ @skip_default_node_group.setter
1070
+ def skip_default_node_group(self, value: Optional[_builtins.bool]):
1071
+ pulumi.set(self, "skip_default_node_group", value)
1072
+
1073
+ @_builtins.property
1074
+ @pulumi.getter(name="skipDefaultSecurityGroups")
1075
+ def skip_default_security_groups(self) -> Optional[_builtins.bool]:
1076
+ """
1077
+ If this toggle is set to true, the EKS cluster will be created without the default node and cluster security groups. Defaults to false, unless `autoMode` is enabled.
1078
+
1079
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
1080
+ """
1081
+ return pulumi.get(self, "skip_default_security_groups")
1082
+
1083
+ @skip_default_security_groups.setter
1084
+ def skip_default_security_groups(self, value: Optional[_builtins.bool]):
1085
+ pulumi.set(self, "skip_default_security_groups", value)
1086
+
1087
+ @_builtins.property
1088
+ @pulumi.getter(name="storageClasses")
1089
+ def storage_classes(self) -> Optional[Union[_builtins.str, Mapping[str, 'StorageClassArgs']]]:
1090
+ """
1091
+ An optional set of StorageClasses to enable for the cluster. If this is a single volume type rather than a map, a single StorageClass will be created for that volume type.
1092
+
1093
+ 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
1094
+ """
1095
+ return pulumi.get(self, "storage_classes")
1096
+
1097
+ @storage_classes.setter
1098
+ def storage_classes(self, value: Optional[Union[_builtins.str, Mapping[str, 'StorageClassArgs']]]):
1099
+ pulumi.set(self, "storage_classes", value)
1100
+
1101
+ @_builtins.property
1102
+ @pulumi.getter(name="subnetIds")
1103
+ def subnet_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]:
1104
+ """
1105
+ The set of all subnets, public and private, to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
1106
+
1107
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
1108
+
1109
+ If the list of subnets includes both public and private subnets, the worker nodes will only be attached to the private subnets, and the public subnets will be used for internet-facing load balancers.
1110
+
1111
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.
1112
+
1113
+ Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
1114
+ """
1115
+ return pulumi.get(self, "subnet_ids")
1116
+
1117
+ @subnet_ids.setter
1118
+ def subnet_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]]):
1119
+ pulumi.set(self, "subnet_ids", value)
1120
+
1121
+ @_builtins.property
1122
+ @pulumi.getter
1123
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
1124
+ """
1125
+ Key-value mapping of tags that are automatically applied to all AWS resources directly under management with this cluster, which support tagging.
1126
+ """
1127
+ return pulumi.get(self, "tags")
1128
+
1129
+ @tags.setter
1130
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
1131
+ pulumi.set(self, "tags", value)
1132
+
1133
+ @_builtins.property
1134
+ @pulumi.getter(name="upgradePolicy")
1135
+ def upgrade_policy(self) -> Optional[pulumi.Input['pulumi_aws.eks.ClusterUpgradePolicyArgs']]:
1136
+ """
1137
+ The cluster's upgrade policy. Valid support types are "STANDARD" and "EXTENDED". Defaults to "EXTENDED".
1138
+ """
1139
+ return pulumi.get(self, "upgrade_policy")
1140
+
1141
+ @upgrade_policy.setter
1142
+ def upgrade_policy(self, value: Optional[pulumi.Input['pulumi_aws.eks.ClusterUpgradePolicyArgs']]):
1143
+ pulumi.set(self, "upgrade_policy", value)
1144
+
1145
+ @_builtins.property
1146
+ @pulumi.getter(name="useDefaultVpcCni")
1147
+ def use_default_vpc_cni(self) -> Optional[_builtins.bool]:
1148
+ """
1149
+ Use the default VPC CNI instead of creating a custom one. Should not be used in conjunction with `vpcCniOptions`.
1150
+ Defaults to true, unless `autoMode` is enabled.
1151
+ """
1152
+ return pulumi.get(self, "use_default_vpc_cni")
1153
+
1154
+ @use_default_vpc_cni.setter
1155
+ def use_default_vpc_cni(self, value: Optional[_builtins.bool]):
1156
+ pulumi.set(self, "use_default_vpc_cni", value)
1157
+
1158
+ @_builtins.property
1159
+ @pulumi.getter(name="userMappings")
1160
+ def user_mappings(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['UserMappingArgs']]]]:
1161
+ """
1162
+ Optional mappings from AWS IAM users to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`.
1163
+ """
1164
+ return pulumi.get(self, "user_mappings")
1165
+
1166
+ @user_mappings.setter
1167
+ def user_mappings(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['UserMappingArgs']]]]):
1168
+ pulumi.set(self, "user_mappings", value)
1169
+
1170
+ @_builtins.property
1171
+ @pulumi.getter
1172
+ def version(self) -> Optional[pulumi.Input[_builtins.str]]:
1173
+ """
1174
+ Desired Kubernetes master / control plane version. If you do not specify a value, the latest available version is used.
1175
+ """
1176
+ return pulumi.get(self, "version")
1177
+
1178
+ @version.setter
1179
+ def version(self, value: Optional[pulumi.Input[_builtins.str]]):
1180
+ pulumi.set(self, "version", value)
1181
+
1182
+ @_builtins.property
1183
+ @pulumi.getter(name="vpcCniOptions")
1184
+ def vpc_cni_options(self) -> Optional['VpcCniOptionsArgs']:
1185
+ """
1186
+ The configuration of the Amazon VPC CNI plugin for this instance. Defaults are described in the documentation for the VpcCniOptions type.
1187
+ """
1188
+ return pulumi.get(self, "vpc_cni_options")
1189
+
1190
+ @vpc_cni_options.setter
1191
+ def vpc_cni_options(self, value: Optional['VpcCniOptionsArgs']):
1192
+ pulumi.set(self, "vpc_cni_options", value)
1193
+
1194
+ @_builtins.property
1195
+ @pulumi.getter(name="vpcId")
1196
+ def vpc_id(self) -> Optional[pulumi.Input[_builtins.str]]:
1197
+ """
1198
+ The VPC in which to create the cluster and its worker nodes. If unset, the cluster will be created in the default VPC.
1199
+ """
1200
+ return pulumi.get(self, "vpc_id")
1201
+
1202
+ @vpc_id.setter
1203
+ def vpc_id(self, value: Optional[pulumi.Input[_builtins.str]]):
1204
+ pulumi.set(self, "vpc_id", value)
1205
+
1206
+
1207
+ @pulumi.type_token("eks:index:Cluster")
1208
+ class Cluster(pulumi.ComponentResource):
1209
+ @overload
1210
+ def __init__(__self__,
1211
+ resource_name: str,
1212
+ opts: Optional[pulumi.ResourceOptions] = None,
1213
+ access_entries: Optional[Mapping[str, Union['AccessEntryArgs', 'AccessEntryArgsDict']]] = None,
1214
+ authentication_mode: Optional['AuthenticationMode'] = None,
1215
+ auto_mode: Optional[Union['AutoModeOptionsArgs', 'AutoModeOptionsArgsDict']] = None,
1216
+ bootstrap_self_managed_addons: Optional[pulumi.Input[_builtins.bool]] = None,
1217
+ cluster_security_group: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']] = None,
1218
+ cluster_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1219
+ cluster_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1220
+ coredns_addon_options: Optional[Union['CoreDnsAddonOptionsArgs', 'CoreDnsAddonOptionsArgsDict']] = None,
1221
+ create_instance_role: Optional[_builtins.bool] = None,
1222
+ create_oidc_provider: Optional[pulumi.Input[_builtins.bool]] = None,
1223
+ creation_role_provider: Optional[Union['CreationRoleProviderArgs', 'CreationRoleProviderArgsDict']] = None,
1224
+ deletion_protection: Optional[pulumi.Input[_builtins.bool]] = None,
1225
+ desired_capacity: Optional[pulumi.Input[_builtins.int]] = None,
1226
+ enable_config_map_mutable: Optional[pulumi.Input[_builtins.bool]] = None,
1227
+ enabled_cluster_log_types: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1228
+ encryption_config_key_arn: Optional[pulumi.Input[_builtins.str]] = None,
1229
+ endpoint_private_access: Optional[pulumi.Input[_builtins.bool]] = None,
1230
+ endpoint_public_access: Optional[pulumi.Input[_builtins.bool]] = None,
1231
+ fargate: Optional[pulumi.Input[Union[_builtins.bool, Union['FargateProfileArgs', 'FargateProfileArgsDict']]]] = None,
1232
+ gpu: Optional[pulumi.Input[_builtins.bool]] = None,
1233
+ instance_profile_name: Optional[pulumi.Input[_builtins.str]] = None,
1234
+ instance_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
1235
+ instance_roles: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]] = None,
1236
+ instance_type: Optional[pulumi.Input[_builtins.str]] = None,
1237
+ ip_family: Optional[pulumi.Input[_builtins.str]] = None,
1238
+ kube_proxy_addon_options: Optional[Union['KubeProxyAddonOptionsArgs', 'KubeProxyAddonOptionsArgsDict']] = None,
1239
+ kubernetes_service_ip_address_range: Optional[pulumi.Input[_builtins.str]] = None,
1240
+ max_size: Optional[pulumi.Input[_builtins.int]] = None,
1241
+ min_size: Optional[pulumi.Input[_builtins.int]] = None,
1242
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1243
+ node_ami_id: Optional[pulumi.Input[_builtins.str]] = None,
1244
+ node_associate_public_ip_address: Optional[_builtins.bool] = None,
1245
+ node_group_options: Optional[Union['ClusterNodeGroupOptionsArgs', 'ClusterNodeGroupOptionsArgsDict']] = None,
1246
+ node_public_key: Optional[pulumi.Input[_builtins.str]] = None,
1247
+ node_root_volume_encrypted: Optional[pulumi.Input[_builtins.bool]] = None,
1248
+ node_root_volume_size: Optional[pulumi.Input[_builtins.int]] = None,
1249
+ node_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1250
+ node_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1251
+ node_user_data: Optional[pulumi.Input[_builtins.str]] = None,
1252
+ private_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1253
+ provider_credential_opts: Optional[pulumi.Input[Union['KubeconfigOptionsArgs', 'KubeconfigOptionsArgsDict']]] = None,
1254
+ proxy: Optional[_builtins.str] = None,
1255
+ public_access_cidrs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1256
+ public_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1257
+ role_mappings: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RoleMappingArgs', 'RoleMappingArgsDict']]]]] = None,
1258
+ service_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
1259
+ skip_default_node_group: Optional[_builtins.bool] = None,
1260
+ skip_default_security_groups: Optional[_builtins.bool] = None,
1261
+ storage_classes: Optional[Union[_builtins.str, Mapping[str, Union['StorageClassArgs', 'StorageClassArgsDict']]]] = None,
1262
+ subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1263
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1264
+ upgrade_policy: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.eks.ClusterUpgradePolicyArgs']]] = None,
1265
+ use_default_vpc_cni: Optional[_builtins.bool] = None,
1266
+ user_mappings: Optional[pulumi.Input[Sequence[pulumi.Input[Union['UserMappingArgs', 'UserMappingArgsDict']]]]] = None,
1267
+ version: Optional[pulumi.Input[_builtins.str]] = None,
1268
+ vpc_cni_options: Optional[Union['VpcCniOptionsArgs', 'VpcCniOptionsArgsDict']] = None,
1269
+ vpc_id: Optional[pulumi.Input[_builtins.str]] = None,
1270
+ __props__=None):
1271
+ """
1272
+ Cluster is a component that wraps the AWS and Kubernetes resources necessary to run an EKS cluster, its worker nodes, its optional StorageClasses, and an optional deployment of the Kubernetes Dashboard.
1273
+
1274
+ ## Example Usage
1275
+
1276
+ ### Provisioning a New EKS Cluster
1277
+
1278
+ <!--Start PulumiCodeChooser -->
1279
+
1280
+ ```python
1281
+ import pulumi
1282
+ import pulumi_eks as eks
1283
+
1284
+ # Create an EKS cluster with the default configuration.
1285
+ cluster = eks.Cluster("cluster")
1286
+
1287
+ # Export the cluster's kubeconfig.
1288
+ pulumi.export("kubeconfig", cluster.kubeconfig)
1289
+ ```
1290
+ <!--End PulumiCodeChooser -->
1291
+
1292
+ :param str resource_name: The name of the resource.
1293
+ :param pulumi.ResourceOptions opts: Options for the resource.
1294
+ :param Mapping[str, Union['AccessEntryArgs', 'AccessEntryArgsDict']] access_entries: Access entries to add to the EKS cluster. They can be used to allow IAM principals to access the cluster. Access entries are only supported with authentication mode `API` or `API_AND_CONFIG_MAP`.
1295
+
1296
+ See for more details:
1297
+ https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html
1298
+ :param 'AuthenticationMode' authentication_mode: The authentication mode of the cluster. Valid values are `CONFIG_MAP`, `API` or `API_AND_CONFIG_MAP`.
1299
+
1300
+ See for more details:
1301
+ https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#set-cam
1302
+ :param Union['AutoModeOptionsArgs', 'AutoModeOptionsArgsDict'] auto_mode: Configuration Options for EKS Auto Mode. If EKS Auto Mode is enabled, AWS will manage cluster infrastructure on your behalf.
1303
+
1304
+ For more information, see: https://docs.aws.amazon.com/eks/latest/userguide/automode.html
1305
+ :param pulumi.Input[_builtins.bool] bootstrap_self_managed_addons: Install default unmanaged add-ons, such as `aws-cni`, `kube-proxy`, and CoreDNS during cluster creation. If `false`, you must manually install desired add-ons. Changing this value will force a new cluster to be created. Defaults to `true`
1306
+ :param pulumi.Input['pulumi_aws.ec2.SecurityGroup'] cluster_security_group: The security group to use for the cluster API endpoint. If not provided, a new security group will be created with full internet egress and ingress from node groups.
1307
+
1308
+ Note: The security group resource should not contain any inline ingress or egress rules.
1309
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] cluster_security_group_tags: The tags to apply to the cluster security group.
1310
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] cluster_tags: The tags to apply to the EKS cluster.
1311
+ :param Union['CoreDnsAddonOptionsArgs', 'CoreDnsAddonOptionsArgsDict'] coredns_addon_options: Options for managing the `coredns` addon.
1312
+ :param _builtins.bool create_instance_role: Whether to create the instance role for the EKS cluster. Defaults to true when using the default node group, false otherwise.
1313
+ If set to false when using the default node group, an instance role or instance profile must be provided.n
1314
+ Note: this option has no effect if a custom instance role is provided with `instanceRole` or `instanceRoles`.
1315
+ :param pulumi.Input[_builtins.bool] create_oidc_provider: Indicates whether an IAM OIDC Provider is created for the EKS cluster.
1316
+
1317
+ The OIDC provider is used in the cluster in combination with k8s Service Account annotations to provide IAM roles at the k8s Pod level.
1318
+
1319
+ See for more details:
1320
+ - https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc_verify-thumbprint.html
1321
+ - https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
1322
+ - https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/
1323
+ - https://www.pulumi.com/registry/packages/aws/api-docs/eks/cluster/#enabling-iam-roles-for-service-accounts
1324
+ :param Union['CreationRoleProviderArgs', 'CreationRoleProviderArgsDict'] creation_role_provider: The IAM Role Provider used to create & authenticate against the EKS cluster. This role is given `[system:masters]` permission in K8S, See: https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html
1325
+
1326
+ Note: This option is only supported with Pulumi nodejs programs. Please use `ProviderCredentialOpts` as an alternative instead.
1327
+ :param pulumi.Input[_builtins.bool] deletion_protection: Whether to enable deletion protection for the cluster. When enabled, the cluster cannot be deleted unless deletion protection is first disabled. Default: `false`.
1328
+ :param pulumi.Input[_builtins.int] desired_capacity: The number of worker nodes that should be running in the cluster. Defaults to 2.
1329
+ :param pulumi.Input[_builtins.bool] enable_config_map_mutable: Sets the 'enableConfigMapMutable' option on the cluster kubernetes provider.
1330
+
1331
+ Applies updates to the aws-auth ConfigMap in place over a replace operation if set to true.
1332
+ https://www.pulumi.com/registry/packages/kubernetes/api-docs/provider/#enableconfigmapmutable_nodejs
1333
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] enabled_cluster_log_types: Enable EKS control plane logging. This sends logs to cloudwatch. Possible list of values are: ["api", "audit", "authenticator", "controllerManager", "scheduler"]. By default it is off.
1334
+ :param pulumi.Input[_builtins.str] encryption_config_key_arn: KMS Key ARN to use with the encryption configuration for the cluster.
1335
+
1336
+ Only available on Kubernetes 1.13+ clusters created after March 6, 2020.
1337
+ See for more details:
1338
+ - https://aws.amazon.com/about-aws/whats-new/2020/03/amazon-eks-adds-envelope-encryption-for-secrets-with-aws-kms/
1339
+ :param pulumi.Input[_builtins.bool] endpoint_private_access: Indicates whether or not the Amazon EKS private API server endpoint is enabled. Default is `false`.
1340
+ :param pulumi.Input[_builtins.bool] endpoint_public_access: Indicates whether or not the Amazon EKS public API server endpoint is enabled. Default is `true`.
1341
+ :param pulumi.Input[Union[_builtins.bool, Union['FargateProfileArgs', 'FargateProfileArgsDict']]] fargate: Add support for launching pods in Fargate. Defaults to launching pods in the `default` namespace. If specified, the default node group is skipped as though `skipDefaultNodeGroup: true` had been passed.
1342
+ :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.
1343
+
1344
+ Defaults to false.
1345
+
1346
+ Note: `gpu` and `nodeAmiId` are mutually exclusive.
1347
+
1348
+ See for more details:
1349
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html
1350
+ - https://docs.aws.amazon.com/eks/latest/userguide/retrieve-ami-id.html
1351
+ :param pulumi.Input[_builtins.str] instance_profile_name: The default IAM InstanceProfile to use on the Worker NodeGroups, if one is not already set in the NodeGroup.
1352
+ :param pulumi.Input['pulumi_aws.iam.Role'] instance_role: This enables the simple case of only registering a *single* IAM instance role with the cluster, that is required to be shared by *all* node groups in their instance profiles.
1353
+
1354
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
1355
+ :param pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]] instance_roles: This enables the advanced case of registering *many* IAM instance roles with the cluster for per node group IAM, instead of the simpler, shared case of `instanceRole`.
1356
+
1357
+ Note: options `instanceRole` and `instanceRoles` are mutually exclusive.
1358
+ :param pulumi.Input[_builtins.str] instance_type: The instance type to use for the cluster's nodes. Defaults to "t3.medium".
1359
+ :param pulumi.Input[_builtins.str] ip_family: The IP family used to assign Kubernetes pod and service addresses. Valid values are `ipv4` (default) and `ipv6`.
1360
+ You can only specify an IP family when you create a cluster, changing this value will force a new cluster to be created.
1361
+ :param Union['KubeProxyAddonOptionsArgs', 'KubeProxyAddonOptionsArgsDict'] kube_proxy_addon_options: Options for managing the `kube-proxy` addon.
1362
+ :param pulumi.Input[_builtins.str] kubernetes_service_ip_address_range: The CIDR block to assign Kubernetes service IP addresses from. If you don't
1363
+ specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or
1364
+ 172.20.0.0/16 CIDR blocks. This setting only applies to IPv4 clusters. We recommend that you specify a block
1365
+ that does not overlap with resources in other networks that are peered or connected to your VPC. You can only specify
1366
+ a custom CIDR block when you create a cluster, changing this value will force a new cluster to be created.
1367
+
1368
+ The block must meet the following requirements:
1369
+ - Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0.0/12, or 192.168.0.0/16.
1370
+ - Doesn't overlap with any CIDR block assigned to the VPC that you selected for VPC.
1371
+ - Between /24 and /12.
1372
+ :param pulumi.Input[_builtins.int] max_size: The maximum number of worker nodes running in the cluster. Defaults to 2.
1373
+ :param pulumi.Input[_builtins.int] min_size: The minimum number of worker nodes running in the cluster. Defaults to 1.
1374
+ :param pulumi.Input[_builtins.str] name: The cluster's physical resource name.
1375
+
1376
+ If not specified, the default is to use auto-naming for the cluster's name, resulting in a physical name with the format `${name}-eksCluster-0123abcd`.
1377
+
1378
+ See for more details: https://www.pulumi.com/docs/intro/concepts/programming-model/#autonaming
1379
+ :param pulumi.Input[_builtins.str] node_ami_id: The AMI ID to use for the worker nodes.
1380
+
1381
+ Defaults to the latest recommended EKS Optimized Linux AMI from the AWS Systems Manager Parameter Store.
1382
+
1383
+ Note: `nodeAmiId` and `gpu` are mutually exclusive.
1384
+
1385
+ See for more details:
1386
+ - https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html.
1387
+ :param _builtins.bool node_associate_public_ip_address: Whether or not to auto-assign the EKS worker nodes public IP addresses. 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.
1388
+ :param Union['ClusterNodeGroupOptionsArgs', 'ClusterNodeGroupOptionsArgsDict'] node_group_options: The common configuration settings for NodeGroups.
1389
+ :param pulumi.Input[_builtins.str] node_public_key: Public key material for SSH access to worker nodes. See allowed formats at:
1390
+ https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html
1391
+ If not provided, no SSH access is enabled on VMs.
1392
+ :param pulumi.Input[_builtins.bool] node_root_volume_encrypted: Encrypt the root block device of the nodes in the node group.
1393
+ :param pulumi.Input[_builtins.int] node_root_volume_size: The size in GiB of a cluster node's root volume. Defaults to 20.
1394
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] node_security_group_tags: The tags to apply to the default `nodeSecurityGroup` created by the cluster.
1395
+
1396
+ Note: The `nodeSecurityGroupTags` option and the node group option `nodeSecurityGroup` are mutually exclusive.
1397
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] node_subnet_ids: The subnets to use for worker nodes. Defaults to the value of subnetIds.
1398
+ :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 `#!`).
1399
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] private_subnet_ids: The set of private subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
1400
+
1401
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
1402
+
1403
+ Worker network architecture options:
1404
+ - Private-only: Only set `privateSubnetIds`.
1405
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
1406
+ - Public-only: Only set `publicSubnetIds`.
1407
+ - Default workers to run in a public subnet.
1408
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
1409
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
1410
+
1411
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
1412
+
1413
+ Also consider setting `nodeAssociatePublicIpAddress: false` for fully private workers.
1414
+ :param pulumi.Input[Union['KubeconfigOptionsArgs', 'KubeconfigOptionsArgsDict']] provider_credential_opts: The AWS provider credential options to scope the cluster's kubeconfig authentication when using a non-default credential chain.
1415
+
1416
+ This is required for certain auth scenarios. For example:
1417
+ - Creating and using a new AWS provider instance, or
1418
+ - Setting the AWS_PROFILE environment variable, or
1419
+ - Using a named profile configured on the AWS provider via:
1420
+ `pulumi config set aws:profile <profileName>`
1421
+
1422
+ See for more details:
1423
+ - https://www.pulumi.com/registry/packages/aws/api-docs/provider/
1424
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/setup/
1425
+ - https://www.pulumi.com/docs/intro/cloud-providers/aws/#configuration
1426
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
1427
+ :param _builtins.str proxy: The HTTP(S) proxy to use within a proxied environment.
1428
+
1429
+ The proxy is used during cluster creation, and OIDC configuration.
1430
+
1431
+ This is an alternative option to setting the proxy environment variables: HTTP(S)_PROXY and/or http(s)_proxy.
1432
+
1433
+ This option is required iff the proxy environment variables are not set.
1434
+
1435
+ Format: <protocol>://<host>:<port>
1436
+ Auth Format: <protocol>://<username>:<password>@<host>:<port>
1437
+
1438
+ Ex:
1439
+ - "http://proxy.example.com:3128"
1440
+ - "https://proxy.example.com"
1441
+ - "http://username:password@proxy.example.com:3128"
1442
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] public_access_cidrs: Indicates which CIDR blocks can access the Amazon EKS public API server endpoint.
1443
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] public_subnet_ids: The set of public subnets to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
1444
+
1445
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
1446
+
1447
+ Worker network architecture options:
1448
+ - Private-only: Only set `privateSubnetIds`.
1449
+ - Default workers to run in a private subnet. In this setting, Kubernetes cannot create public, internet-facing load balancers for your pods.
1450
+ - Public-only: Only set `publicSubnetIds`.
1451
+ - Default workers to run in a public subnet.
1452
+ - Mixed (recommended): Set both `privateSubnetIds` and `publicSubnetIds`.
1453
+ - Default all worker nodes to run in private subnets, and use the public subnets for internet-facing load balancers.
1454
+
1455
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
1456
+ :param pulumi.Input[Sequence[pulumi.Input[Union['RoleMappingArgs', 'RoleMappingArgsDict']]]] role_mappings: Optional mappings from AWS IAM roles to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`
1457
+ :param pulumi.Input['pulumi_aws.iam.Role'] service_role: IAM Service Role for EKS to use to manage the cluster.
1458
+ :param _builtins.bool skip_default_node_group: If this toggle is set to true, the EKS cluster will be created without node group attached. Defaults to false, unless `fargate` or `autoMode` is enabled.
1459
+ :param _builtins.bool skip_default_security_groups: If this toggle is set to true, the EKS cluster will be created without the default node and cluster security groups. Defaults to false, unless `autoMode` is enabled.
1460
+
1461
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html
1462
+ :param Union[_builtins.str, Mapping[str, Union['StorageClassArgs', 'StorageClassArgsDict']]] storage_classes: An optional set of StorageClasses to enable for the cluster. If this is a single volume type rather than a map, a single StorageClass will be created for that volume type.
1463
+
1464
+ 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
1465
+ :param pulumi.Input[Sequence[pulumi.Input[_builtins.str]]] subnet_ids: The set of all subnets, public and private, to use for the worker node groups on the EKS cluster. These subnets are automatically tagged by EKS for Kubernetes purposes.
1466
+
1467
+ If `vpcId` is not set, the cluster will use the AWS account's default VPC subnets.
1468
+
1469
+ If the list of subnets includes both public and private subnets, the worker nodes will only be attached to the private subnets, and the public subnets will be used for internet-facing load balancers.
1470
+
1471
+ See for more details: https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html.
1472
+
1473
+ Note: The use of `subnetIds`, along with `publicSubnetIds` and/or `privateSubnetIds` is mutually exclusive. The use of `publicSubnetIds` and `privateSubnetIds` is encouraged.
1474
+ :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] tags: Key-value mapping of tags that are automatically applied to all AWS resources directly under management with this cluster, which support tagging.
1475
+ :param pulumi.Input[pulumi.InputType['pulumi_aws.eks.ClusterUpgradePolicyArgs']] upgrade_policy: The cluster's upgrade policy. Valid support types are "STANDARD" and "EXTENDED". Defaults to "EXTENDED".
1476
+ :param _builtins.bool use_default_vpc_cni: Use the default VPC CNI instead of creating a custom one. Should not be used in conjunction with `vpcCniOptions`.
1477
+ Defaults to true, unless `autoMode` is enabled.
1478
+ :param pulumi.Input[Sequence[pulumi.Input[Union['UserMappingArgs', 'UserMappingArgsDict']]]] user_mappings: Optional mappings from AWS IAM users to Kubernetes users and groups. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`.
1479
+ :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.
1480
+ :param Union['VpcCniOptionsArgs', 'VpcCniOptionsArgsDict'] vpc_cni_options: The configuration of the Amazon VPC CNI plugin for this instance. Defaults are described in the documentation for the VpcCniOptions type.
1481
+ :param pulumi.Input[_builtins.str] vpc_id: The VPC in which to create the cluster and its worker nodes. If unset, the cluster will be created in the default VPC.
1482
+ """
1483
+ ...
1484
+ @overload
1485
+ def __init__(__self__,
1486
+ resource_name: str,
1487
+ args: Optional[ClusterArgs] = None,
1488
+ opts: Optional[pulumi.ResourceOptions] = None):
1489
+ """
1490
+ Cluster is a component that wraps the AWS and Kubernetes resources necessary to run an EKS cluster, its worker nodes, its optional StorageClasses, and an optional deployment of the Kubernetes Dashboard.
1491
+
1492
+ ## Example Usage
1493
+
1494
+ ### Provisioning a New EKS Cluster
1495
+
1496
+ <!--Start PulumiCodeChooser -->
1497
+
1498
+ ```python
1499
+ import pulumi
1500
+ import pulumi_eks as eks
1501
+
1502
+ # Create an EKS cluster with the default configuration.
1503
+ cluster = eks.Cluster("cluster")
1504
+
1505
+ # Export the cluster's kubeconfig.
1506
+ pulumi.export("kubeconfig", cluster.kubeconfig)
1507
+ ```
1508
+ <!--End PulumiCodeChooser -->
1509
+
1510
+ :param str resource_name: The name of the resource.
1511
+ :param ClusterArgs args: The arguments to use to populate this resource's properties.
1512
+ :param pulumi.ResourceOptions opts: Options for the resource.
1513
+ """
1514
+ ...
1515
+ def __init__(__self__, resource_name: str, *args, **kwargs):
1516
+ resource_args, opts = _utilities.get_resource_args_opts(ClusterArgs, pulumi.ResourceOptions, *args, **kwargs)
1517
+ if resource_args is not None:
1518
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
1519
+ else:
1520
+ __self__._internal_init(resource_name, *args, **kwargs)
1521
+
1522
+ def _internal_init(__self__,
1523
+ resource_name: str,
1524
+ opts: Optional[pulumi.ResourceOptions] = None,
1525
+ access_entries: Optional[Mapping[str, Union['AccessEntryArgs', 'AccessEntryArgsDict']]] = None,
1526
+ authentication_mode: Optional['AuthenticationMode'] = None,
1527
+ auto_mode: Optional[Union['AutoModeOptionsArgs', 'AutoModeOptionsArgsDict']] = None,
1528
+ bootstrap_self_managed_addons: Optional[pulumi.Input[_builtins.bool]] = None,
1529
+ cluster_security_group: Optional[pulumi.Input['pulumi_aws.ec2.SecurityGroup']] = None,
1530
+ cluster_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1531
+ cluster_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1532
+ coredns_addon_options: Optional[Union['CoreDnsAddonOptionsArgs', 'CoreDnsAddonOptionsArgsDict']] = None,
1533
+ create_instance_role: Optional[_builtins.bool] = None,
1534
+ create_oidc_provider: Optional[pulumi.Input[_builtins.bool]] = None,
1535
+ creation_role_provider: Optional[Union['CreationRoleProviderArgs', 'CreationRoleProviderArgsDict']] = None,
1536
+ deletion_protection: Optional[pulumi.Input[_builtins.bool]] = None,
1537
+ desired_capacity: Optional[pulumi.Input[_builtins.int]] = None,
1538
+ enable_config_map_mutable: Optional[pulumi.Input[_builtins.bool]] = None,
1539
+ enabled_cluster_log_types: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1540
+ encryption_config_key_arn: Optional[pulumi.Input[_builtins.str]] = None,
1541
+ endpoint_private_access: Optional[pulumi.Input[_builtins.bool]] = None,
1542
+ endpoint_public_access: Optional[pulumi.Input[_builtins.bool]] = None,
1543
+ fargate: Optional[pulumi.Input[Union[_builtins.bool, Union['FargateProfileArgs', 'FargateProfileArgsDict']]]] = None,
1544
+ gpu: Optional[pulumi.Input[_builtins.bool]] = None,
1545
+ instance_profile_name: Optional[pulumi.Input[_builtins.str]] = None,
1546
+ instance_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
1547
+ instance_roles: Optional[pulumi.Input[Sequence[pulumi.Input['pulumi_aws.iam.Role']]]] = None,
1548
+ instance_type: Optional[pulumi.Input[_builtins.str]] = None,
1549
+ ip_family: Optional[pulumi.Input[_builtins.str]] = None,
1550
+ kube_proxy_addon_options: Optional[Union['KubeProxyAddonOptionsArgs', 'KubeProxyAddonOptionsArgsDict']] = None,
1551
+ kubernetes_service_ip_address_range: Optional[pulumi.Input[_builtins.str]] = None,
1552
+ max_size: Optional[pulumi.Input[_builtins.int]] = None,
1553
+ min_size: Optional[pulumi.Input[_builtins.int]] = None,
1554
+ name: Optional[pulumi.Input[_builtins.str]] = None,
1555
+ node_ami_id: Optional[pulumi.Input[_builtins.str]] = None,
1556
+ node_associate_public_ip_address: Optional[_builtins.bool] = None,
1557
+ node_group_options: Optional[Union['ClusterNodeGroupOptionsArgs', 'ClusterNodeGroupOptionsArgsDict']] = None,
1558
+ node_public_key: Optional[pulumi.Input[_builtins.str]] = None,
1559
+ node_root_volume_encrypted: Optional[pulumi.Input[_builtins.bool]] = None,
1560
+ node_root_volume_size: Optional[pulumi.Input[_builtins.int]] = None,
1561
+ node_security_group_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1562
+ node_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1563
+ node_user_data: Optional[pulumi.Input[_builtins.str]] = None,
1564
+ private_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1565
+ provider_credential_opts: Optional[pulumi.Input[Union['KubeconfigOptionsArgs', 'KubeconfigOptionsArgsDict']]] = None,
1566
+ proxy: Optional[_builtins.str] = None,
1567
+ public_access_cidrs: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1568
+ public_subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1569
+ role_mappings: Optional[pulumi.Input[Sequence[pulumi.Input[Union['RoleMappingArgs', 'RoleMappingArgsDict']]]]] = None,
1570
+ service_role: Optional[pulumi.Input['pulumi_aws.iam.Role']] = None,
1571
+ skip_default_node_group: Optional[_builtins.bool] = None,
1572
+ skip_default_security_groups: Optional[_builtins.bool] = None,
1573
+ storage_classes: Optional[Union[_builtins.str, Mapping[str, Union['StorageClassArgs', 'StorageClassArgsDict']]]] = None,
1574
+ subnet_ids: Optional[pulumi.Input[Sequence[pulumi.Input[_builtins.str]]]] = None,
1575
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
1576
+ upgrade_policy: Optional[pulumi.Input[pulumi.InputType['pulumi_aws.eks.ClusterUpgradePolicyArgs']]] = None,
1577
+ use_default_vpc_cni: Optional[_builtins.bool] = None,
1578
+ user_mappings: Optional[pulumi.Input[Sequence[pulumi.Input[Union['UserMappingArgs', 'UserMappingArgsDict']]]]] = None,
1579
+ version: Optional[pulumi.Input[_builtins.str]] = None,
1580
+ vpc_cni_options: Optional[Union['VpcCniOptionsArgs', 'VpcCniOptionsArgsDict']] = None,
1581
+ vpc_id: Optional[pulumi.Input[_builtins.str]] = None,
1582
+ __props__=None):
1583
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
1584
+ if not isinstance(opts, pulumi.ResourceOptions):
1585
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
1586
+ if opts.id is not None:
1587
+ raise ValueError('ComponentResource classes do not support opts.id')
1588
+ else:
1589
+ if __props__ is not None:
1590
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
1591
+ __props__ = ClusterArgs.__new__(ClusterArgs)
1592
+
1593
+ __props__.__dict__["access_entries"] = access_entries
1594
+ __props__.__dict__["authentication_mode"] = authentication_mode
1595
+ __props__.__dict__["auto_mode"] = auto_mode
1596
+ __props__.__dict__["bootstrap_self_managed_addons"] = bootstrap_self_managed_addons
1597
+ __props__.__dict__["cluster_security_group"] = cluster_security_group
1598
+ __props__.__dict__["cluster_security_group_tags"] = cluster_security_group_tags
1599
+ __props__.__dict__["cluster_tags"] = cluster_tags
1600
+ __props__.__dict__["coredns_addon_options"] = coredns_addon_options
1601
+ __props__.__dict__["create_instance_role"] = create_instance_role
1602
+ __props__.__dict__["create_oidc_provider"] = create_oidc_provider
1603
+ __props__.__dict__["creation_role_provider"] = creation_role_provider
1604
+ __props__.__dict__["deletion_protection"] = deletion_protection
1605
+ __props__.__dict__["desired_capacity"] = desired_capacity
1606
+ __props__.__dict__["enable_config_map_mutable"] = enable_config_map_mutable
1607
+ __props__.__dict__["enabled_cluster_log_types"] = enabled_cluster_log_types
1608
+ __props__.__dict__["encryption_config_key_arn"] = encryption_config_key_arn
1609
+ __props__.__dict__["endpoint_private_access"] = endpoint_private_access
1610
+ __props__.__dict__["endpoint_public_access"] = endpoint_public_access
1611
+ __props__.__dict__["fargate"] = fargate
1612
+ __props__.__dict__["gpu"] = gpu
1613
+ __props__.__dict__["instance_profile_name"] = instance_profile_name
1614
+ __props__.__dict__["instance_role"] = instance_role
1615
+ __props__.__dict__["instance_roles"] = instance_roles
1616
+ __props__.__dict__["instance_type"] = instance_type
1617
+ __props__.__dict__["ip_family"] = ip_family
1618
+ __props__.__dict__["kube_proxy_addon_options"] = kube_proxy_addon_options
1619
+ __props__.__dict__["kubernetes_service_ip_address_range"] = kubernetes_service_ip_address_range
1620
+ __props__.__dict__["max_size"] = max_size
1621
+ __props__.__dict__["min_size"] = min_size
1622
+ __props__.__dict__["name"] = name
1623
+ __props__.__dict__["node_ami_id"] = node_ami_id
1624
+ __props__.__dict__["node_associate_public_ip_address"] = node_associate_public_ip_address
1625
+ __props__.__dict__["node_group_options"] = node_group_options
1626
+ __props__.__dict__["node_public_key"] = node_public_key
1627
+ __props__.__dict__["node_root_volume_encrypted"] = node_root_volume_encrypted
1628
+ __props__.__dict__["node_root_volume_size"] = node_root_volume_size
1629
+ __props__.__dict__["node_security_group_tags"] = node_security_group_tags
1630
+ __props__.__dict__["node_subnet_ids"] = node_subnet_ids
1631
+ __props__.__dict__["node_user_data"] = node_user_data
1632
+ __props__.__dict__["private_subnet_ids"] = private_subnet_ids
1633
+ __props__.__dict__["provider_credential_opts"] = provider_credential_opts
1634
+ __props__.__dict__["proxy"] = proxy
1635
+ __props__.__dict__["public_access_cidrs"] = public_access_cidrs
1636
+ __props__.__dict__["public_subnet_ids"] = public_subnet_ids
1637
+ __props__.__dict__["role_mappings"] = role_mappings
1638
+ __props__.__dict__["service_role"] = service_role
1639
+ __props__.__dict__["skip_default_node_group"] = skip_default_node_group
1640
+ __props__.__dict__["skip_default_security_groups"] = skip_default_security_groups
1641
+ __props__.__dict__["storage_classes"] = storage_classes
1642
+ __props__.__dict__["subnet_ids"] = subnet_ids
1643
+ __props__.__dict__["tags"] = tags
1644
+ __props__.__dict__["upgrade_policy"] = upgrade_policy
1645
+ __props__.__dict__["use_default_vpc_cni"] = use_default_vpc_cni
1646
+ __props__.__dict__["user_mappings"] = user_mappings
1647
+ __props__.__dict__["version"] = version
1648
+ __props__.__dict__["vpc_cni_options"] = vpc_cni_options
1649
+ __props__.__dict__["vpc_id"] = vpc_id
1650
+ __props__.__dict__["auto_mode_node_role_name"] = None
1651
+ __props__.__dict__["aws_provider"] = None
1652
+ __props__.__dict__["cluster_ingress_rule_id"] = None
1653
+ __props__.__dict__["cluster_security_group_id"] = None
1654
+ __props__.__dict__["core"] = None
1655
+ __props__.__dict__["default_node_group"] = None
1656
+ __props__.__dict__["default_node_group_asg_name"] = None
1657
+ __props__.__dict__["eks_cluster"] = None
1658
+ __props__.__dict__["eks_cluster_ingress_rule"] = None
1659
+ __props__.__dict__["fargate_profile_id"] = None
1660
+ __props__.__dict__["fargate_profile_status"] = None
1661
+ __props__.__dict__["kubeconfig"] = None
1662
+ __props__.__dict__["kubeconfig_json"] = None
1663
+ __props__.__dict__["node_security_group"] = None
1664
+ __props__.__dict__["node_security_group_id"] = None
1665
+ __props__.__dict__["oidc_issuer"] = None
1666
+ __props__.__dict__["oidc_provider_arn"] = None
1667
+ __props__.__dict__["oidc_provider_url"] = None
1668
+ super(Cluster, __self__).__init__(
1669
+ 'eks:index:Cluster',
1670
+ resource_name,
1671
+ __props__,
1672
+ opts,
1673
+ remote=True)
1674
+
1675
+ @_builtins.property
1676
+ @pulumi.getter(name="autoModeNodeRoleName")
1677
+ def auto_mode_node_role_name(self) -> pulumi.Output[_builtins.str]:
1678
+ """
1679
+ The name of the IAM role created for nodes managed by EKS Auto Mode. Defaults to an empty string.
1680
+ """
1681
+ return pulumi.get(self, "auto_mode_node_role_name")
1682
+
1683
+ @_builtins.property
1684
+ @pulumi.getter(name="awsProvider")
1685
+ def aws_provider(self) -> pulumi.Output['pulumi_aws.Provider']:
1686
+ """
1687
+ The AWS resource provider.
1688
+ """
1689
+ return pulumi.get(self, "aws_provider")
1690
+
1691
+ @_builtins.property
1692
+ @pulumi.getter(name="clusterIngressRuleId")
1693
+ def cluster_ingress_rule_id(self) -> pulumi.Output[_builtins.str]:
1694
+ """
1695
+ The ID of the security group rule that gives node group access to the cluster API server. Defaults to an empty string if `skipDefaultSecurityGroups` is set to true.
1696
+ """
1697
+ return pulumi.get(self, "cluster_ingress_rule_id")
1698
+
1699
+ @_builtins.property
1700
+ @pulumi.getter(name="clusterSecurityGroup")
1701
+ def cluster_security_group(self) -> pulumi.Output[Optional['pulumi_aws.ec2.SecurityGroup']]:
1702
+ """
1703
+ The security group for the EKS cluster.
1704
+ """
1705
+ return pulumi.get(self, "cluster_security_group")
1706
+
1707
+ @_builtins.property
1708
+ @pulumi.getter(name="clusterSecurityGroupId")
1709
+ def cluster_security_group_id(self) -> pulumi.Output[_builtins.str]:
1710
+ """
1711
+ The cluster security group ID of the EKS cluster. Returns the EKS created security group if `skipDefaultSecurityGroups` is set to true.
1712
+ """
1713
+ return pulumi.get(self, "cluster_security_group_id")
1714
+
1715
+ @_builtins.property
1716
+ @pulumi.getter
1717
+ def core(self) -> pulumi.Output['outputs.CoreData']:
1718
+ """
1719
+ The EKS cluster and its dependencies.
1720
+ """
1721
+ return pulumi.get(self, "core")
1722
+
1723
+ @_builtins.property
1724
+ @pulumi.getter(name="defaultNodeGroup")
1725
+ def default_node_group(self) -> pulumi.Output[Optional['outputs.NodeGroupData']]:
1726
+ """
1727
+ The default Node Group configuration, or undefined if `skipDefaultNodeGroup` was specified.
1728
+ """
1729
+ return pulumi.get(self, "default_node_group")
1730
+
1731
+ @_builtins.property
1732
+ @pulumi.getter(name="defaultNodeGroupAsgName")
1733
+ def default_node_group_asg_name(self) -> pulumi.Output[_builtins.str]:
1734
+ """
1735
+ The name of the default node group's AutoScaling Group. Defaults to an empty string if `skipDefaultNodeGroup` is set to true.
1736
+ """
1737
+ return pulumi.get(self, "default_node_group_asg_name")
1738
+
1739
+ @_builtins.property
1740
+ @pulumi.getter(name="eksCluster")
1741
+ def eks_cluster(self) -> pulumi.Output['pulumi_aws.eks.Cluster']:
1742
+ """
1743
+ The EKS cluster.
1744
+ """
1745
+ return pulumi.get(self, "eks_cluster")
1746
+
1747
+ @_builtins.property
1748
+ @pulumi.getter(name="eksClusterIngressRule")
1749
+ def eks_cluster_ingress_rule(self) -> pulumi.Output[Optional['pulumi_aws.ec2.SecurityGroupRule']]:
1750
+ """
1751
+ The ingress rule that gives node group access to cluster API server.
1752
+ """
1753
+ return pulumi.get(self, "eks_cluster_ingress_rule")
1754
+
1755
+ @_builtins.property
1756
+ @pulumi.getter(name="fargateProfileId")
1757
+ def fargate_profile_id(self) -> pulumi.Output[_builtins.str]:
1758
+ """
1759
+ The ID of the Fargate Profile. Defaults to an empty string if no Fargate profile is configured.
1760
+ """
1761
+ return pulumi.get(self, "fargate_profile_id")
1762
+
1763
+ @_builtins.property
1764
+ @pulumi.getter(name="fargateProfileStatus")
1765
+ def fargate_profile_status(self) -> pulumi.Output[_builtins.str]:
1766
+ """
1767
+ The status of the Fargate Profile. Defaults to an empty string if no Fargate profile is configured.
1768
+ """
1769
+ return pulumi.get(self, "fargate_profile_status")
1770
+
1771
+ @_builtins.property
1772
+ @pulumi.getter(name="instanceRoles")
1773
+ def instance_roles(self) -> pulumi.Output[Sequence['pulumi_aws.iam.Role']]:
1774
+ """
1775
+ The service roles used by the EKS cluster. Only supported with authentication mode `CONFIG_MAP` or `API_AND_CONFIG_MAP`.
1776
+ """
1777
+ return pulumi.get(self, "instance_roles")
1778
+
1779
+ @_builtins.property
1780
+ @pulumi.getter
1781
+ def kubeconfig(self) -> pulumi.Output[Any]:
1782
+ """
1783
+ A kubeconfig that can be used to connect to the EKS cluster.
1784
+ """
1785
+ return pulumi.get(self, "kubeconfig")
1786
+
1787
+ @_builtins.property
1788
+ @pulumi.getter(name="kubeconfigJson")
1789
+ def kubeconfig_json(self) -> pulumi.Output[_builtins.str]:
1790
+ """
1791
+ A kubeconfig that can be used to connect to the EKS cluster as a JSON string.
1792
+ """
1793
+ return pulumi.get(self, "kubeconfig_json")
1794
+
1795
+ @_builtins.property
1796
+ @pulumi.getter(name="nodeSecurityGroup")
1797
+ def node_security_group(self) -> pulumi.Output[Optional['pulumi_aws.ec2.SecurityGroup']]:
1798
+ """
1799
+ The security group for the cluster's nodes.
1800
+ """
1801
+ return pulumi.get(self, "node_security_group")
1802
+
1803
+ @_builtins.property
1804
+ @pulumi.getter(name="nodeSecurityGroupId")
1805
+ def node_security_group_id(self) -> pulumi.Output[_builtins.str]:
1806
+ """
1807
+ The node security group ID of the EKS cluster. Returns the EKS created security group if `skipDefaultSecurityGroups` is set to true.
1808
+ """
1809
+ return pulumi.get(self, "node_security_group_id")
1810
+
1811
+ @_builtins.property
1812
+ @pulumi.getter(name="oidcIssuer")
1813
+ def oidc_issuer(self) -> pulumi.Output[_builtins.str]:
1814
+ """
1815
+ The OIDC Issuer of the EKS cluster (OIDC Provider URL without leading `https://`).
1816
+
1817
+ This value can be used to associate kubernetes service accounts with IAM roles. For more information, see https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html.
1818
+ """
1819
+ return pulumi.get(self, "oidc_issuer")
1820
+
1821
+ @_builtins.property
1822
+ @pulumi.getter(name="oidcProviderArn")
1823
+ def oidc_provider_arn(self) -> pulumi.Output[_builtins.str]:
1824
+ """
1825
+ The ARN of the IAM OpenID Connect Provider for the EKS cluster. Defaults to an empty string if no OIDC provider is configured.
1826
+ """
1827
+ return pulumi.get(self, "oidc_provider_arn")
1828
+
1829
+ @_builtins.property
1830
+ @pulumi.getter(name="oidcProviderUrl")
1831
+ def oidc_provider_url(self) -> pulumi.Output[_builtins.str]:
1832
+ """
1833
+ Issuer URL for the OpenID Connect identity provider of the EKS cluster.
1834
+ """
1835
+ return pulumi.get(self, "oidc_provider_url")
1836
+
1837
+ @pulumi.output_type
1838
+ class GetKubeconfigResult:
1839
+ def __init__(__self__, result=None):
1840
+ if result and not isinstance(result, str):
1841
+ raise TypeError("Expected argument 'result' to be a str")
1842
+ pulumi.set(__self__, "result", result)
1843
+
1844
+ @_builtins.property
1845
+ @pulumi.getter
1846
+ def result(self) -> _builtins.str:
1847
+ """
1848
+ The kubeconfig for the cluster.
1849
+ """
1850
+ return pulumi.get(self, "result")
1851
+
1852
+ def get_kubeconfig(__self__, *,
1853
+ profile_name: Optional[pulumi.Input[_builtins.str]] = None,
1854
+ role_arn: Optional[pulumi.Input[_builtins.str]] = None) -> pulumi.Output['str']:
1855
+ """
1856
+ Generate a kubeconfig for cluster authentication that does not use the default AWS credential provider chain, and instead is scoped to the supported options in `KubeconfigOptions`.
1857
+
1858
+ The kubeconfig generated is automatically stringified for ease of use with the pulumi/kubernetes provider.
1859
+
1860
+ See for more details:
1861
+ - https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html
1862
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html
1863
+ - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
1864
+
1865
+
1866
+ :param pulumi.Input[_builtins.str] profile_name: AWS credential profile name to always use instead of the default AWS credential provider chain.
1867
+
1868
+ The profile is passed to kubeconfig as an authentication environment setting.
1869
+ :param pulumi.Input[_builtins.str] role_arn: Role ARN to assume instead of the default AWS credential provider chain.
1870
+
1871
+ The role is passed to kubeconfig as an authentication exec argument.
1872
+ """
1873
+ __args__ = dict()
1874
+ __args__['__self__'] = __self__
1875
+ __args__['profileName'] = profile_name
1876
+ __args__['roleArn'] = role_arn
1877
+ __result__ = pulumi.runtime.call('eks:index:Cluster/getKubeconfig', __args__, res=__self__, typ=Cluster.GetKubeconfigResult)
1878
+ return __result__.result
1879
+