github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/eks/cluster.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package eks
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Manages an EKS Cluster.
    16  //
    17  // ## Example Usage
    18  //
    19  // ### Basic Usage
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			example, err := eks.NewCluster(ctx, "example", &eks.ClusterArgs{
    35  //				Name:    pulumi.String("example"),
    36  //				RoleArn: pulumi.Any(exampleAwsIamRole.Arn),
    37  //				VpcConfig: &eks.ClusterVpcConfigArgs{
    38  //					SubnetIds: pulumi.StringArray{
    39  //						example1.Id,
    40  //						example2.Id,
    41  //					},
    42  //				},
    43  //			}, pulumi.DependsOn([]pulumi.Resource{
    44  //				example_AmazonEKSClusterPolicy,
    45  //				example_AmazonEKSVPCResourceController,
    46  //			}))
    47  //			if err != nil {
    48  //				return err
    49  //			}
    50  //			ctx.Export("endpoint", example.Endpoint)
    51  //			ctx.Export("kubeconfig-certificate-authority-data", example.CertificateAuthority.ApplyT(func(certificateAuthority eks.ClusterCertificateAuthority) (*string, error) {
    52  //				return &certificateAuthority.Data, nil
    53  //			}).(pulumi.StringPtrOutput))
    54  //			return nil
    55  //		})
    56  //	}
    57  //
    58  // ```
    59  // <!--End PulumiCodeChooser -->
    60  //
    61  // ### Example IAM Role for EKS Cluster
    62  //
    63  // <!--Start PulumiCodeChooser -->
    64  // ```go
    65  // package main
    66  //
    67  // import (
    68  //
    69  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    70  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    71  //
    72  // )
    73  //
    74  //	func main() {
    75  //		pulumi.Run(func(ctx *pulumi.Context) error {
    76  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    77  //				Statements: []iam.GetPolicyDocumentStatement{
    78  //					{
    79  //						Effect: pulumi.StringRef("Allow"),
    80  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    81  //							{
    82  //								Type: "Service",
    83  //								Identifiers: []string{
    84  //									"eks.amazonaws.com",
    85  //								},
    86  //							},
    87  //						},
    88  //						Actions: []string{
    89  //							"sts:AssumeRole",
    90  //						},
    91  //					},
    92  //				},
    93  //			}, nil)
    94  //			if err != nil {
    95  //				return err
    96  //			}
    97  //			example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    98  //				Name:             pulumi.String("eks-cluster-example"),
    99  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
   100  //			})
   101  //			if err != nil {
   102  //				return err
   103  //			}
   104  //			_, err = iam.NewRolePolicyAttachment(ctx, "example-AmazonEKSClusterPolicy", &iam.RolePolicyAttachmentArgs{
   105  //				PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKSClusterPolicy"),
   106  //				Role:      example.Name,
   107  //			})
   108  //			if err != nil {
   109  //				return err
   110  //			}
   111  //			// Optionally, enable Security Groups for Pods
   112  //			// Reference: https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html
   113  //			_, err = iam.NewRolePolicyAttachment(ctx, "example-AmazonEKSVPCResourceController", &iam.RolePolicyAttachmentArgs{
   114  //				PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKSVPCResourceController"),
   115  //				Role:      example.Name,
   116  //			})
   117  //			if err != nil {
   118  //				return err
   119  //			}
   120  //			return nil
   121  //		})
   122  //	}
   123  //
   124  // ```
   125  // <!--End PulumiCodeChooser -->
   126  //
   127  // ### Enabling Control Plane Logging
   128  //
   129  // [EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) can be enabled via the `enabledClusterLogTypes` argument. To manage the CloudWatch Log Group retention period, the `cloudwatch.LogGroup` resource can be used.
   130  //
   131  // > The below configuration uses [`dependsOn`](https://www.pulumi.com/docs/intro/concepts/programming-model/#dependson) to prevent ordering issues with EKS automatically creating the log group first and a variable for naming consistency. Other ordering and naming methodologies may be more appropriate for your environment.
   132  //
   133  // <!--Start PulumiCodeChooser -->
   134  // ```go
   135  // package main
   136  //
   137  // import (
   138  //
   139  //	"fmt"
   140  //
   141  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch"
   142  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
   143  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   144  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
   145  //
   146  // )
   147  //
   148  //	func main() {
   149  //		pulumi.Run(func(ctx *pulumi.Context) error {
   150  //			cfg := config.New(ctx, "")
   151  //			clusterName := "example"
   152  //			if param := cfg.Get("clusterName"); param != "" {
   153  //				clusterName = param
   154  //			}
   155  //			exampleLogGroup, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{
   156  //				Name:            pulumi.String(fmt.Sprintf("/aws/eks/%v/cluster", clusterName)),
   157  //				RetentionInDays: pulumi.Int(7),
   158  //			})
   159  //			if err != nil {
   160  //				return err
   161  //			}
   162  //			_, err = eks.NewCluster(ctx, "example", &eks.ClusterArgs{
   163  //				EnabledClusterLogTypes: pulumi.StringArray{
   164  //					pulumi.String("api"),
   165  //					pulumi.String("audit"),
   166  //				},
   167  //				Name: pulumi.String(clusterName),
   168  //			}, pulumi.DependsOn([]pulumi.Resource{
   169  //				exampleLogGroup,
   170  //			}))
   171  //			if err != nil {
   172  //				return err
   173  //			}
   174  //			return nil
   175  //		})
   176  //	}
   177  //
   178  // ```
   179  // <!--End PulumiCodeChooser -->
   180  //
   181  // ### Enabling IAM Roles for Service Accounts
   182  //
   183  // Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. For more information about this feature, see the [EKS User Guide](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html).
   184  //
   185  // <!--Start PulumiCodeChooser -->
   186  // ```go
   187  // package main
   188  //
   189  // import (
   190  //
   191  //	"fmt"
   192  //
   193  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
   194  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   195  //	"github.com/pulumi/pulumi-std/sdk/go/std"
   196  //	"github.com/pulumi/pulumi-tls/sdk/v4/go/tls"
   197  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   198  //
   199  // )
   200  //
   201  //	func main() {
   202  //		pulumi.Run(func(ctx *pulumi.Context) error {
   203  //			exampleCluster, err := eks.NewCluster(ctx, "example", nil)
   204  //			if err != nil {
   205  //				return err
   206  //			}
   207  //			example := exampleCluster.Identities.ApplyT(func(identities []eks.ClusterIdentity) (tls.GetCertificateResult, error) {
   208  //				return tls.GetCertificateOutput(ctx, tls.GetCertificateOutputArgs{
   209  //					Url: identities[0].Oidcs[0].Issuer,
   210  //				}, nil), nil
   211  //			}).(tls.GetCertificateResultOutput)
   212  //			exampleOpenIdConnectProvider, err := iam.NewOpenIdConnectProvider(ctx, "example", &iam.OpenIdConnectProviderArgs{
   213  //				ClientIdLists: pulumi.StringArray{
   214  //					pulumi.String("sts.amazonaws.com"),
   215  //				},
   216  //				ThumbprintLists: pulumi.StringArray{
   217  //					example.ApplyT(func(example tls.GetCertificateResult) (*string, error) {
   218  //						return &example.Certificates[0].Sha1Fingerprint, nil
   219  //					}).(pulumi.StringPtrOutput),
   220  //				},
   221  //				Url: example.ApplyT(func(example tls.GetCertificateResult) (*string, error) {
   222  //					return &example.Url, nil
   223  //				}).(pulumi.StringPtrOutput),
   224  //			})
   225  //			if err != nil {
   226  //				return err
   227  //			}
   228  //			exampleAssumeRolePolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
   229  //				Statements: iam.GetPolicyDocumentStatementArray{
   230  //					&iam.GetPolicyDocumentStatementArgs{
   231  //						Actions: pulumi.StringArray{
   232  //							pulumi.String("sts:AssumeRoleWithWebIdentity"),
   233  //						},
   234  //						Effect: pulumi.String("Allow"),
   235  //						Conditions: iam.GetPolicyDocumentStatementConditionArray{
   236  //							&iam.GetPolicyDocumentStatementConditionArgs{
   237  //								Test: pulumi.String("StringEquals"),
   238  //								Variable: std.ReplaceOutput(ctx, std.ReplaceOutputArgs{
   239  //									Text:    exampleOpenIdConnectProvider.Url,
   240  //									Search:  pulumi.String("https://"),
   241  //									Replace: pulumi.String(""),
   242  //								}, nil).ApplyT(func(invoke std.ReplaceResult) (string, error) {
   243  //									return fmt.Sprintf("%v:sub", invoke.Result), nil
   244  //								}).(pulumi.StringOutput),
   245  //								Values: pulumi.StringArray{
   246  //									pulumi.String("system:serviceaccount:kube-system:aws-node"),
   247  //								},
   248  //							},
   249  //						},
   250  //						Principals: iam.GetPolicyDocumentStatementPrincipalArray{
   251  //							&iam.GetPolicyDocumentStatementPrincipalArgs{
   252  //								Identifiers: pulumi.StringArray{
   253  //									exampleOpenIdConnectProvider.Arn,
   254  //								},
   255  //								Type: pulumi.String("Federated"),
   256  //							},
   257  //						},
   258  //					},
   259  //				},
   260  //			}, nil)
   261  //			_, err = iam.NewRole(ctx, "example", &iam.RoleArgs{
   262  //				AssumeRolePolicy: exampleAssumeRolePolicy.ApplyT(func(exampleAssumeRolePolicy iam.GetPolicyDocumentResult) (*string, error) {
   263  //					return &exampleAssumeRolePolicy.Json, nil
   264  //				}).(pulumi.StringPtrOutput),
   265  //				Name: pulumi.String("example"),
   266  //			})
   267  //			if err != nil {
   268  //				return err
   269  //			}
   270  //			return nil
   271  //		})
   272  //	}
   273  //
   274  // ```
   275  // <!--End PulumiCodeChooser -->
   276  //
   277  // ### EKS Cluster on AWS Outpost
   278  //
   279  // [Creating a local Amazon EKS cluster on an AWS Outpost](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster-outpost.html)
   280  //
   281  // <!--Start PulumiCodeChooser -->
   282  // ```go
   283  // package main
   284  //
   285  // import (
   286  //
   287  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
   288  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   289  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   290  //
   291  // )
   292  //
   293  //	func main() {
   294  //		pulumi.Run(func(ctx *pulumi.Context) error {
   295  //			example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
   296  //				AssumeRolePolicy: pulumi.Any(exampleAssumeRolePolicy.Json),
   297  //				Name:             pulumi.String("example"),
   298  //			})
   299  //			if err != nil {
   300  //				return err
   301  //			}
   302  //			_, err = eks.NewCluster(ctx, "example", &eks.ClusterArgs{
   303  //				Name:    pulumi.String("example-cluster"),
   304  //				RoleArn: example.Arn,
   305  //				VpcConfig: &eks.ClusterVpcConfigArgs{
   306  //					EndpointPrivateAccess: pulumi.Bool(true),
   307  //					EndpointPublicAccess:  pulumi.Bool(false),
   308  //				},
   309  //				OutpostConfig: &eks.ClusterOutpostConfigArgs{
   310  //					ControlPlaneInstanceType: pulumi.String("m5d.large"),
   311  //					OutpostArns: pulumi.StringArray{
   312  //						exampleAwsOutpostsOutpost.Arn,
   313  //					},
   314  //				},
   315  //			})
   316  //			if err != nil {
   317  //				return err
   318  //			}
   319  //			return nil
   320  //		})
   321  //	}
   322  //
   323  // ```
   324  // <!--End PulumiCodeChooser -->
   325  //
   326  // ### EKS Cluster with Access Config
   327  //
   328  // <!--Start PulumiCodeChooser -->
   329  // ```go
   330  // package main
   331  //
   332  // import (
   333  //
   334  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/eks"
   335  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   336  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   337  //
   338  // )
   339  //
   340  //	func main() {
   341  //		pulumi.Run(func(ctx *pulumi.Context) error {
   342  //			example, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
   343  //				AssumeRolePolicy: pulumi.Any(exampleAssumeRolePolicy.Json),
   344  //				Name:             pulumi.String("example"),
   345  //			})
   346  //			if err != nil {
   347  //				return err
   348  //			}
   349  //			_, err = eks.NewCluster(ctx, "example", &eks.ClusterArgs{
   350  //				Name:    pulumi.String("example-cluster"),
   351  //				RoleArn: example.Arn,
   352  //				VpcConfig: &eks.ClusterVpcConfigArgs{
   353  //					EndpointPrivateAccess: pulumi.Bool(true),
   354  //					EndpointPublicAccess:  pulumi.Bool(false),
   355  //				},
   356  //				AccessConfig: &eks.ClusterAccessConfigArgs{
   357  //					AuthenticationMode:                      pulumi.String("CONFIG_MAP"),
   358  //					BootstrapClusterCreatorAdminPermissions: pulumi.Bool(true),
   359  //				},
   360  //			})
   361  //			if err != nil {
   362  //				return err
   363  //			}
   364  //			return nil
   365  //		})
   366  //	}
   367  //
   368  // ```
   369  // <!--End PulumiCodeChooser -->
   370  //
   371  // After adding inline IAM Policies (e.g., `iam.RolePolicy` resource) or attaching IAM Policies (e.g., `iam.Policy` resource and `iam.RolePolicyAttachment` resource) with the desired permissions to the IAM Role, annotate the Kubernetes service account (e.g., `kubernetesServiceAccount` resource) and recreate any pods.
   372  //
   373  // ## Import
   374  //
   375  // Using `pulumi import`, import EKS Clusters using the `name`. For example:
   376  //
   377  // ```sh
   378  // $ pulumi import aws:eks/cluster:Cluster my_cluster my_cluster
   379  // ```
   380  type Cluster struct {
   381  	pulumi.CustomResourceState
   382  
   383  	// Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   384  	AccessConfig ClusterAccessConfigOutput `pulumi:"accessConfig"`
   385  	// ARN of the cluster.
   386  	Arn                    pulumi.StringOutput                    `pulumi:"arn"`
   387  	CertificateAuthorities ClusterCertificateAuthorityArrayOutput `pulumi:"certificateAuthorities"`
   388  	// Attribute block containing `certificate-authority-data` for your cluster. Detailed below.
   389  	CertificateAuthority ClusterCertificateAuthorityOutput `pulumi:"certificateAuthority"`
   390  	// The ID of your local Amazon EKS cluster on the AWS Outpost. This attribute isn't available for an AWS EKS cluster on AWS cloud.
   391  	ClusterId pulumi.StringOutput `pulumi:"clusterId"`
   392  	// Unix epoch timestamp in seconds for when the cluster was created.
   393  	CreatedAt              pulumi.StringOutput      `pulumi:"createdAt"`
   394  	DefaultAddonsToRemoves pulumi.StringArrayOutput `pulumi:"defaultAddonsToRemoves"`
   395  	// List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   396  	EnabledClusterLogTypes pulumi.StringArrayOutput `pulumi:"enabledClusterLogTypes"`
   397  	// Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   398  	EncryptionConfig ClusterEncryptionConfigPtrOutput `pulumi:"encryptionConfig"`
   399  	// Endpoint for your Kubernetes API server.
   400  	Endpoint pulumi.StringOutput `pulumi:"endpoint"`
   401  	// Attribute block containing identity provider information for your cluster. Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. Detailed below.
   402  	Identities ClusterIdentityArrayOutput `pulumi:"identities"`
   403  	// Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   404  	KubernetesNetworkConfig ClusterKubernetesNetworkConfigOutput `pulumi:"kubernetesNetworkConfig"`
   405  	// Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   406  	Name pulumi.StringOutput `pulumi:"name"`
   407  	// Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   408  	OutpostConfig ClusterOutpostConfigPtrOutput `pulumi:"outpostConfig"`
   409  	// Platform version for the cluster.
   410  	PlatformVersion pulumi.StringOutput `pulumi:"platformVersion"`
   411  	// ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   412  	RoleArn pulumi.StringOutput `pulumi:"roleArn"`
   413  	// Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`.
   414  	Status pulumi.StringOutput `pulumi:"status"`
   415  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   416  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   417  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   418  	//
   419  	// Deprecated: Please use `tags` instead.
   420  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   421  	// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   422  	Version pulumi.StringOutput `pulumi:"version"`
   423  	// Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   424  	//
   425  	// The following arguments are optional:
   426  	VpcConfig ClusterVpcConfigOutput `pulumi:"vpcConfig"`
   427  }
   428  
   429  // NewCluster registers a new resource with the given unique name, arguments, and options.
   430  func NewCluster(ctx *pulumi.Context,
   431  	name string, args *ClusterArgs, opts ...pulumi.ResourceOption) (*Cluster, error) {
   432  	if args == nil {
   433  		return nil, errors.New("missing one or more required arguments")
   434  	}
   435  
   436  	if args.RoleArn == nil {
   437  		return nil, errors.New("invalid value for required argument 'RoleArn'")
   438  	}
   439  	if args.VpcConfig == nil {
   440  		return nil, errors.New("invalid value for required argument 'VpcConfig'")
   441  	}
   442  	opts = internal.PkgResourceDefaultOpts(opts)
   443  	var resource Cluster
   444  	err := ctx.RegisterResource("aws:eks/cluster:Cluster", name, args, &resource, opts...)
   445  	if err != nil {
   446  		return nil, err
   447  	}
   448  	return &resource, nil
   449  }
   450  
   451  // GetCluster gets an existing Cluster resource's state with the given name, ID, and optional
   452  // state properties that are used to uniquely qualify the lookup (nil if not required).
   453  func GetCluster(ctx *pulumi.Context,
   454  	name string, id pulumi.IDInput, state *ClusterState, opts ...pulumi.ResourceOption) (*Cluster, error) {
   455  	var resource Cluster
   456  	err := ctx.ReadResource("aws:eks/cluster:Cluster", name, id, state, &resource, opts...)
   457  	if err != nil {
   458  		return nil, err
   459  	}
   460  	return &resource, nil
   461  }
   462  
   463  // Input properties used for looking up and filtering Cluster resources.
   464  type clusterState struct {
   465  	// Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   466  	AccessConfig *ClusterAccessConfig `pulumi:"accessConfig"`
   467  	// ARN of the cluster.
   468  	Arn                    *string                       `pulumi:"arn"`
   469  	CertificateAuthorities []ClusterCertificateAuthority `pulumi:"certificateAuthorities"`
   470  	// Attribute block containing `certificate-authority-data` for your cluster. Detailed below.
   471  	CertificateAuthority *ClusterCertificateAuthority `pulumi:"certificateAuthority"`
   472  	// The ID of your local Amazon EKS cluster on the AWS Outpost. This attribute isn't available for an AWS EKS cluster on AWS cloud.
   473  	ClusterId *string `pulumi:"clusterId"`
   474  	// Unix epoch timestamp in seconds for when the cluster was created.
   475  	CreatedAt              *string  `pulumi:"createdAt"`
   476  	DefaultAddonsToRemoves []string `pulumi:"defaultAddonsToRemoves"`
   477  	// List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   478  	EnabledClusterLogTypes []string `pulumi:"enabledClusterLogTypes"`
   479  	// Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   480  	EncryptionConfig *ClusterEncryptionConfig `pulumi:"encryptionConfig"`
   481  	// Endpoint for your Kubernetes API server.
   482  	Endpoint *string `pulumi:"endpoint"`
   483  	// Attribute block containing identity provider information for your cluster. Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. Detailed below.
   484  	Identities []ClusterIdentity `pulumi:"identities"`
   485  	// Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   486  	KubernetesNetworkConfig *ClusterKubernetesNetworkConfig `pulumi:"kubernetesNetworkConfig"`
   487  	// Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   488  	Name *string `pulumi:"name"`
   489  	// Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   490  	OutpostConfig *ClusterOutpostConfig `pulumi:"outpostConfig"`
   491  	// Platform version for the cluster.
   492  	PlatformVersion *string `pulumi:"platformVersion"`
   493  	// ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   494  	RoleArn *string `pulumi:"roleArn"`
   495  	// Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`.
   496  	Status *string `pulumi:"status"`
   497  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   498  	Tags map[string]string `pulumi:"tags"`
   499  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   500  	//
   501  	// Deprecated: Please use `tags` instead.
   502  	TagsAll map[string]string `pulumi:"tagsAll"`
   503  	// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   504  	Version *string `pulumi:"version"`
   505  	// Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   506  	//
   507  	// The following arguments are optional:
   508  	VpcConfig *ClusterVpcConfig `pulumi:"vpcConfig"`
   509  }
   510  
   511  type ClusterState struct {
   512  	// Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   513  	AccessConfig ClusterAccessConfigPtrInput
   514  	// ARN of the cluster.
   515  	Arn                    pulumi.StringPtrInput
   516  	CertificateAuthorities ClusterCertificateAuthorityArrayInput
   517  	// Attribute block containing `certificate-authority-data` for your cluster. Detailed below.
   518  	CertificateAuthority ClusterCertificateAuthorityPtrInput
   519  	// The ID of your local Amazon EKS cluster on the AWS Outpost. This attribute isn't available for an AWS EKS cluster on AWS cloud.
   520  	ClusterId pulumi.StringPtrInput
   521  	// Unix epoch timestamp in seconds for when the cluster was created.
   522  	CreatedAt              pulumi.StringPtrInput
   523  	DefaultAddonsToRemoves pulumi.StringArrayInput
   524  	// List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   525  	EnabledClusterLogTypes pulumi.StringArrayInput
   526  	// Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   527  	EncryptionConfig ClusterEncryptionConfigPtrInput
   528  	// Endpoint for your Kubernetes API server.
   529  	Endpoint pulumi.StringPtrInput
   530  	// Attribute block containing identity provider information for your cluster. Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. Detailed below.
   531  	Identities ClusterIdentityArrayInput
   532  	// Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   533  	KubernetesNetworkConfig ClusterKubernetesNetworkConfigPtrInput
   534  	// Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   535  	Name pulumi.StringPtrInput
   536  	// Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   537  	OutpostConfig ClusterOutpostConfigPtrInput
   538  	// Platform version for the cluster.
   539  	PlatformVersion pulumi.StringPtrInput
   540  	// ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   541  	RoleArn pulumi.StringPtrInput
   542  	// Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`.
   543  	Status pulumi.StringPtrInput
   544  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   545  	Tags pulumi.StringMapInput
   546  	// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   547  	//
   548  	// Deprecated: Please use `tags` instead.
   549  	TagsAll pulumi.StringMapInput
   550  	// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   551  	Version pulumi.StringPtrInput
   552  	// Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   553  	//
   554  	// The following arguments are optional:
   555  	VpcConfig ClusterVpcConfigPtrInput
   556  }
   557  
   558  func (ClusterState) ElementType() reflect.Type {
   559  	return reflect.TypeOf((*clusterState)(nil)).Elem()
   560  }
   561  
   562  type clusterArgs struct {
   563  	// Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   564  	AccessConfig           *ClusterAccessConfig `pulumi:"accessConfig"`
   565  	DefaultAddonsToRemoves []string             `pulumi:"defaultAddonsToRemoves"`
   566  	// List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   567  	EnabledClusterLogTypes []string `pulumi:"enabledClusterLogTypes"`
   568  	// Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   569  	EncryptionConfig *ClusterEncryptionConfig `pulumi:"encryptionConfig"`
   570  	// Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   571  	KubernetesNetworkConfig *ClusterKubernetesNetworkConfig `pulumi:"kubernetesNetworkConfig"`
   572  	// Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   573  	Name *string `pulumi:"name"`
   574  	// Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   575  	OutpostConfig *ClusterOutpostConfig `pulumi:"outpostConfig"`
   576  	// ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   577  	RoleArn string `pulumi:"roleArn"`
   578  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   579  	Tags map[string]string `pulumi:"tags"`
   580  	// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   581  	Version *string `pulumi:"version"`
   582  	// Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   583  	//
   584  	// The following arguments are optional:
   585  	VpcConfig ClusterVpcConfig `pulumi:"vpcConfig"`
   586  }
   587  
   588  // The set of arguments for constructing a Cluster resource.
   589  type ClusterArgs struct {
   590  	// Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   591  	AccessConfig           ClusterAccessConfigPtrInput
   592  	DefaultAddonsToRemoves pulumi.StringArrayInput
   593  	// List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   594  	EnabledClusterLogTypes pulumi.StringArrayInput
   595  	// Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   596  	EncryptionConfig ClusterEncryptionConfigPtrInput
   597  	// Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   598  	KubernetesNetworkConfig ClusterKubernetesNetworkConfigPtrInput
   599  	// Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   600  	Name pulumi.StringPtrInput
   601  	// Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   602  	OutpostConfig ClusterOutpostConfigPtrInput
   603  	// ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   604  	RoleArn pulumi.StringInput
   605  	// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   606  	Tags pulumi.StringMapInput
   607  	// Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   608  	Version pulumi.StringPtrInput
   609  	// Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   610  	//
   611  	// The following arguments are optional:
   612  	VpcConfig ClusterVpcConfigInput
   613  }
   614  
   615  func (ClusterArgs) ElementType() reflect.Type {
   616  	return reflect.TypeOf((*clusterArgs)(nil)).Elem()
   617  }
   618  
   619  type ClusterInput interface {
   620  	pulumi.Input
   621  
   622  	ToClusterOutput() ClusterOutput
   623  	ToClusterOutputWithContext(ctx context.Context) ClusterOutput
   624  }
   625  
   626  func (*Cluster) ElementType() reflect.Type {
   627  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   628  }
   629  
   630  func (i *Cluster) ToClusterOutput() ClusterOutput {
   631  	return i.ToClusterOutputWithContext(context.Background())
   632  }
   633  
   634  func (i *Cluster) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   635  	return pulumi.ToOutputWithContext(ctx, i).(ClusterOutput)
   636  }
   637  
   638  // ClusterArrayInput is an input type that accepts ClusterArray and ClusterArrayOutput values.
   639  // You can construct a concrete instance of `ClusterArrayInput` via:
   640  //
   641  //	ClusterArray{ ClusterArgs{...} }
   642  type ClusterArrayInput interface {
   643  	pulumi.Input
   644  
   645  	ToClusterArrayOutput() ClusterArrayOutput
   646  	ToClusterArrayOutputWithContext(context.Context) ClusterArrayOutput
   647  }
   648  
   649  type ClusterArray []ClusterInput
   650  
   651  func (ClusterArray) ElementType() reflect.Type {
   652  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
   653  }
   654  
   655  func (i ClusterArray) ToClusterArrayOutput() ClusterArrayOutput {
   656  	return i.ToClusterArrayOutputWithContext(context.Background())
   657  }
   658  
   659  func (i ClusterArray) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
   660  	return pulumi.ToOutputWithContext(ctx, i).(ClusterArrayOutput)
   661  }
   662  
   663  // ClusterMapInput is an input type that accepts ClusterMap and ClusterMapOutput values.
   664  // You can construct a concrete instance of `ClusterMapInput` via:
   665  //
   666  //	ClusterMap{ "key": ClusterArgs{...} }
   667  type ClusterMapInput interface {
   668  	pulumi.Input
   669  
   670  	ToClusterMapOutput() ClusterMapOutput
   671  	ToClusterMapOutputWithContext(context.Context) ClusterMapOutput
   672  }
   673  
   674  type ClusterMap map[string]ClusterInput
   675  
   676  func (ClusterMap) ElementType() reflect.Type {
   677  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
   678  }
   679  
   680  func (i ClusterMap) ToClusterMapOutput() ClusterMapOutput {
   681  	return i.ToClusterMapOutputWithContext(context.Background())
   682  }
   683  
   684  func (i ClusterMap) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
   685  	return pulumi.ToOutputWithContext(ctx, i).(ClusterMapOutput)
   686  }
   687  
   688  type ClusterOutput struct{ *pulumi.OutputState }
   689  
   690  func (ClusterOutput) ElementType() reflect.Type {
   691  	return reflect.TypeOf((**Cluster)(nil)).Elem()
   692  }
   693  
   694  func (o ClusterOutput) ToClusterOutput() ClusterOutput {
   695  	return o
   696  }
   697  
   698  func (o ClusterOutput) ToClusterOutputWithContext(ctx context.Context) ClusterOutput {
   699  	return o
   700  }
   701  
   702  // Configuration block for the access config associated with your cluster, see [Amazon EKS Access Entries](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html).
   703  func (o ClusterOutput) AccessConfig() ClusterAccessConfigOutput {
   704  	return o.ApplyT(func(v *Cluster) ClusterAccessConfigOutput { return v.AccessConfig }).(ClusterAccessConfigOutput)
   705  }
   706  
   707  // ARN of the cluster.
   708  func (o ClusterOutput) Arn() pulumi.StringOutput {
   709  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   710  }
   711  
   712  func (o ClusterOutput) CertificateAuthorities() ClusterCertificateAuthorityArrayOutput {
   713  	return o.ApplyT(func(v *Cluster) ClusterCertificateAuthorityArrayOutput { return v.CertificateAuthorities }).(ClusterCertificateAuthorityArrayOutput)
   714  }
   715  
   716  // Attribute block containing `certificate-authority-data` for your cluster. Detailed below.
   717  func (o ClusterOutput) CertificateAuthority() ClusterCertificateAuthorityOutput {
   718  	return o.ApplyT(func(v *Cluster) ClusterCertificateAuthorityOutput { return v.CertificateAuthority }).(ClusterCertificateAuthorityOutput)
   719  }
   720  
   721  // The ID of your local Amazon EKS cluster on the AWS Outpost. This attribute isn't available for an AWS EKS cluster on AWS cloud.
   722  func (o ClusterOutput) ClusterId() pulumi.StringOutput {
   723  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.ClusterId }).(pulumi.StringOutput)
   724  }
   725  
   726  // Unix epoch timestamp in seconds for when the cluster was created.
   727  func (o ClusterOutput) CreatedAt() pulumi.StringOutput {
   728  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.CreatedAt }).(pulumi.StringOutput)
   729  }
   730  
   731  func (o ClusterOutput) DefaultAddonsToRemoves() pulumi.StringArrayOutput {
   732  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.DefaultAddonsToRemoves }).(pulumi.StringArrayOutput)
   733  }
   734  
   735  // List of the desired control plane logging to enable. For more information, see [Amazon EKS Control Plane Logging](https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html).
   736  func (o ClusterOutput) EnabledClusterLogTypes() pulumi.StringArrayOutput {
   737  	return o.ApplyT(func(v *Cluster) pulumi.StringArrayOutput { return v.EnabledClusterLogTypes }).(pulumi.StringArrayOutput)
   738  }
   739  
   740  // Configuration block with encryption configuration for the cluster. Only available on Kubernetes 1.13 and above clusters created after March 6, 2020. Detailed below.
   741  func (o ClusterOutput) EncryptionConfig() ClusterEncryptionConfigPtrOutput {
   742  	return o.ApplyT(func(v *Cluster) ClusterEncryptionConfigPtrOutput { return v.EncryptionConfig }).(ClusterEncryptionConfigPtrOutput)
   743  }
   744  
   745  // Endpoint for your Kubernetes API server.
   746  func (o ClusterOutput) Endpoint() pulumi.StringOutput {
   747  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput)
   748  }
   749  
   750  // Attribute block containing identity provider information for your cluster. Only available on Kubernetes version 1.13 and 1.14 clusters created or upgraded on or after September 3, 2019. Detailed below.
   751  func (o ClusterOutput) Identities() ClusterIdentityArrayOutput {
   752  	return o.ApplyT(func(v *Cluster) ClusterIdentityArrayOutput { return v.Identities }).(ClusterIdentityArrayOutput)
   753  }
   754  
   755  // Configuration block with kubernetes network configuration for the cluster. Detailed below. If removed, this provider will only perform drift detection if a configuration value is provided.
   756  func (o ClusterOutput) KubernetesNetworkConfig() ClusterKubernetesNetworkConfigOutput {
   757  	return o.ApplyT(func(v *Cluster) ClusterKubernetesNetworkConfigOutput { return v.KubernetesNetworkConfig }).(ClusterKubernetesNetworkConfigOutput)
   758  }
   759  
   760  // Name of the cluster. Must be between 1-100 characters in length. Must begin with an alphanumeric character, and must only contain alphanumeric characters, dashes and underscores (`^[0-9A-Za-z][A-Za-z0-9\-_]*$`).
   761  func (o ClusterOutput) Name() pulumi.StringOutput {
   762  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   763  }
   764  
   765  // Configuration block representing the configuration of your local Amazon EKS cluster on an AWS Outpost. This block isn't available for creating Amazon EKS clusters on the AWS cloud.
   766  func (o ClusterOutput) OutpostConfig() ClusterOutpostConfigPtrOutput {
   767  	return o.ApplyT(func(v *Cluster) ClusterOutpostConfigPtrOutput { return v.OutpostConfig }).(ClusterOutpostConfigPtrOutput)
   768  }
   769  
   770  // Platform version for the cluster.
   771  func (o ClusterOutput) PlatformVersion() pulumi.StringOutput {
   772  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.PlatformVersion }).(pulumi.StringOutput)
   773  }
   774  
   775  // ARN of the IAM role that provides permissions for the Kubernetes control plane to make calls to AWS API operations on your behalf. Ensure the resource configuration includes explicit dependencies on the IAM Role permissions by adding `dependsOn` if using the `iam.RolePolicy` resource or `iam.RolePolicyAttachment` resource, otherwise EKS cannot delete EKS managed EC2 infrastructure such as Security Groups on EKS Cluster deletion.
   776  func (o ClusterOutput) RoleArn() pulumi.StringOutput {
   777  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput)
   778  }
   779  
   780  // Status of the EKS cluster. One of `CREATING`, `ACTIVE`, `DELETING`, `FAILED`.
   781  func (o ClusterOutput) Status() pulumi.StringOutput {
   782  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
   783  }
   784  
   785  // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   786  func (o ClusterOutput) Tags() pulumi.StringMapOutput {
   787  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   788  }
   789  
   790  // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   791  //
   792  // Deprecated: Please use `tags` instead.
   793  func (o ClusterOutput) TagsAll() pulumi.StringMapOutput {
   794  	return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   795  }
   796  
   797  // Desired Kubernetes master version. If you do not specify a value, the latest available version at resource creation is used and no upgrades will occur except those automatically triggered by EKS. The value must be configured and increased to upgrade the version when desired. Downgrades are not supported by EKS.
   798  func (o ClusterOutput) Version() pulumi.StringOutput {
   799  	return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Version }).(pulumi.StringOutput)
   800  }
   801  
   802  // Configuration block for the VPC associated with your cluster. Amazon EKS VPC resources have specific requirements to work properly with Kubernetes. For more information, see [Cluster VPC Considerations](https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) and [Cluster Security Group Considerations](https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) in the Amazon EKS User Guide. Detailed below. Also contains attributes detailed in the Attributes section.
   803  //
   804  // The following arguments are optional:
   805  func (o ClusterOutput) VpcConfig() ClusterVpcConfigOutput {
   806  	return o.ApplyT(func(v *Cluster) ClusterVpcConfigOutput { return v.VpcConfig }).(ClusterVpcConfigOutput)
   807  }
   808  
   809  type ClusterArrayOutput struct{ *pulumi.OutputState }
   810  
   811  func (ClusterArrayOutput) ElementType() reflect.Type {
   812  	return reflect.TypeOf((*[]*Cluster)(nil)).Elem()
   813  }
   814  
   815  func (o ClusterArrayOutput) ToClusterArrayOutput() ClusterArrayOutput {
   816  	return o
   817  }
   818  
   819  func (o ClusterArrayOutput) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput {
   820  	return o
   821  }
   822  
   823  func (o ClusterArrayOutput) Index(i pulumi.IntInput) ClusterOutput {
   824  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Cluster {
   825  		return vs[0].([]*Cluster)[vs[1].(int)]
   826  	}).(ClusterOutput)
   827  }
   828  
   829  type ClusterMapOutput struct{ *pulumi.OutputState }
   830  
   831  func (ClusterMapOutput) ElementType() reflect.Type {
   832  	return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem()
   833  }
   834  
   835  func (o ClusterMapOutput) ToClusterMapOutput() ClusterMapOutput {
   836  	return o
   837  }
   838  
   839  func (o ClusterMapOutput) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput {
   840  	return o
   841  }
   842  
   843  func (o ClusterMapOutput) MapIndex(k pulumi.StringInput) ClusterOutput {
   844  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Cluster {
   845  		return vs[0].(map[string]*Cluster)[vs[1].(string)]
   846  	}).(ClusterOutput)
   847  }
   848  
   849  func init() {
   850  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterInput)(nil)).Elem(), &Cluster{})
   851  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterArrayInput)(nil)).Elem(), ClusterArray{})
   852  	pulumi.RegisterInputType(reflect.TypeOf((*ClusterMapInput)(nil)).Elem(), ClusterMap{})
   853  	pulumi.RegisterOutputType(ClusterOutput{})
   854  	pulumi.RegisterOutputType(ClusterArrayOutput{})
   855  	pulumi.RegisterOutputType(ClusterMapOutput{})
   856  }