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 }