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/__init__.py +51 -0
- pulumi_eks/_enums.py +164 -0
- pulumi_eks/_inputs.py +3445 -0
- pulumi_eks/_utilities.py +331 -0
- pulumi_eks/addon.py +272 -0
- pulumi_eks/cluster.py +1879 -0
- pulumi_eks/cluster_creation_role_provider.py +118 -0
- pulumi_eks/managed_node_group.py +1240 -0
- pulumi_eks/node_group.py +1161 -0
- pulumi_eks/node_group_security_group.py +183 -0
- pulumi_eks/node_group_v2.py +1212 -0
- pulumi_eks/outputs.py +1400 -0
- pulumi_eks/provider.py +77 -0
- pulumi_eks/pulumi-plugin.json +5 -0
- pulumi_eks/py.typed +0 -0
- pulumi_eks/vpc_cni_addon.py +719 -0
- pulumi_eks-4.3.0a1768463252.dist-info/METADATA +94 -0
- pulumi_eks-4.3.0a1768463252.dist-info/RECORD +20 -0
- pulumi_eks-4.3.0a1768463252.dist-info/WHEEL +5 -0
- pulumi_eks-4.3.0a1768463252.dist-info/top_level.txt +1 -0
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
|
+
|