CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.

Overview
Eval results
Files

eks.mddocs/reference/compute/

EKS Package

Package eks provides resources and data sources for Amazon EKS (Elastic Kubernetes Service).

Import

import "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"

Resource Constructors

func NewCluster(ctx *pulumi.Context, name string, args *ClusterArgs, opts ...pulumi.ResourceOption) (*Cluster, error)
func NewNodeGroup(ctx *pulumi.Context, name string, args *NodeGroupArgs, opts ...pulumi.ResourceOption) (*NodeGroup, error)
func NewFargateProfile(ctx *pulumi.Context, name string, args *FargateProfileArgs, opts ...pulumi.ResourceOption) (*FargateProfile, error)
func NewAddon(ctx *pulumi.Context, name string, args *AddonArgs, opts ...pulumi.ResourceOption) (*Addon, error)
func NewAccessEntry(ctx *pulumi.Context, name string, args *AccessEntryArgs, opts ...pulumi.ResourceOption) (*AccessEntry, error)
func NewAccessPolicyAssociation(ctx *pulumi.Context, name string, args *AccessPolicyAssociationArgs, opts ...pulumi.ResourceOption) (*AccessPolicyAssociation, error)
func NewIdentityProviderConfig(ctx *pulumi.Context, name string, args *IdentityProviderConfigArgs, opts ...pulumi.ResourceOption) (*IdentityProviderConfig, error)
func NewPodIdentityAssociation(ctx *pulumi.Context, name string, args *PodIdentityAssociationArgs, opts ...pulumi.ResourceOption) (*PodIdentityAssociation, error)
func NewCapability(ctx *pulumi.Context, name string, args *CapabilityArgs, opts ...pulumi.ResourceOption) (*Capability, error)

Data Sources

func LookupCluster(ctx *pulumi.Context, args *LookupClusterArgs, opts ...pulumi.InvokeOption) (*LookupClusterResult, error)
func GetClusterAuth(ctx *pulumi.Context, args *GetClusterAuthArgs, opts ...pulumi.InvokeOption) (*GetClusterAuthResult, error)
func GetAddonVersion(ctx *pulumi.Context, args *GetAddonVersionArgs, opts ...pulumi.InvokeOption) (*GetAddonVersionResult, error)
func GetClusters(ctx *pulumi.Context, args *GetClustersArgs, opts ...pulumi.InvokeOption) (*GetClustersResult, error)
func GetNodeGroups(ctx *pulumi.Context, args *GetNodeGroupsArgs, opts ...pulumi.InvokeOption) (*GetNodeGroupsResult, error)
func GetClusterVersions(ctx *pulumi.Context, args *GetClusterVersionsArgs, opts ...pulumi.InvokeOption) (*GetClusterVersionsResult, error)

Resource Import Functions

func GetAddon(ctx *pulumi.Context, name string, id pulumi.IDInput, state *AddonState, opts ...pulumi.ResourceOption) (*Addon, error)
func GetFargateProfile(ctx *pulumi.Context, name string, id pulumi.IDInput, state *FargateProfileState, opts ...pulumi.ResourceOption) (*FargateProfile, error)
func GetIdentityProviderConfig(ctx *pulumi.Context, name string, id pulumi.IDInput, state *IdentityProviderConfigState, opts ...pulumi.ResourceOption) (*IdentityProviderConfig, error)
func GetNodeGroup(ctx *pulumi.Context, name string, id pulumi.IDInput, state *NodeGroupState, opts ...pulumi.ResourceOption) (*NodeGroup, error)
func GetPodIdentityAssociation(ctx *pulumi.Context, name string, id pulumi.IDInput, state *PodIdentityAssociationState, opts ...pulumi.ResourceOption) (*PodIdentityAssociation, error)
func GetCapability(ctx *pulumi.Context, name string, id pulumi.IDInput, state *CapabilityState, opts ...pulumi.ResourceOption) (*Capability, error)
func GetAccessEntry(ctx *pulumi.Context, name string, id pulumi.IDInput, state *AccessEntryState, opts ...pulumi.ResourceOption) (*AccessEntry, error)
func GetAccessPolicyAssociation(ctx *pulumi.Context, name string, id pulumi.IDInput, state *AccessPolicyAssociationState, opts ...pulumi.ResourceOption) (*AccessPolicyAssociation, error)

Cluster

Cluster

type Cluster struct {
    pulumi.CustomResourceState

    // Configuration block for access config. See Amazon EKS Access Entries.
    AccessConfig             ClusterAccessConfigOutput             `pulumi:"accessConfig"`
    Arn                      pulumi.StringOutput                   `pulumi:"arn"`
    // Install default unmanaged add-ons (aws-cni, kube-proxy, CoreDNS) during creation.
    // If false, you must manually install desired add-ons. Forces replacement. Default: true.
    BootstrapSelfManagedAddons pulumi.BoolPtrOutput                `pulumi:"bootstrapSelfManagedAddons"`
    // Attribute block containing certificate-authority-data for your cluster.
    CertificateAuthority     ClusterCertificateAuthorityOutput     `pulumi:"certificateAuthority"`
    ClusterId                pulumi.StringOutput                   `pulumi:"clusterId"`
    // Compute configuration for EKS Auto Mode.
    ComputeConfig            ClusterComputeConfigOutput            `pulumi:"computeConfig"`
    ControlPlaneScalingConfig ClusterControlPlaneScalingConfigOutput `pulumi:"controlPlaneScalingConfig"`
    CreatedAt                pulumi.StringOutput                   `pulumi:"createdAt"`
    DeletionProtection       pulumi.BoolOutput                     `pulumi:"deletionProtection"`
    // Desired control plane logging types. See Amazon EKS Control Plane Logging.
    EnabledClusterLogTypes   pulumi.StringArrayOutput              `pulumi:"enabledClusterLogTypes"`
    EncryptionConfig         ClusterEncryptionConfigPtrOutput      `pulumi:"encryptionConfig"`
    // Kubernetes API server endpoint.
    Endpoint                 pulumi.StringOutput                   `pulumi:"endpoint"`
    ForceUpdateVersion       pulumi.BoolPtrOutput                  `pulumi:"forceUpdateVersion"`
    Identities               ClusterIdentityArrayOutput            `pulumi:"identities"`
    KubernetesNetworkConfig  ClusterKubernetesNetworkConfigOutput  `pulumi:"kubernetesNetworkConfig"`
    // Cluster name. 1-100 chars, alphanumeric, dashes, underscores.
    Name                     pulumi.StringOutput                   `pulumi:"name"`
    OutpostConfig            ClusterOutpostConfigPtrOutput         `pulumi:"outpostConfig"`
    PlatformVersion          pulumi.StringOutput                   `pulumi:"platformVersion"`
    Region                   pulumi.StringOutput                   `pulumi:"region"`
    RemoteNetworkConfig      ClusterRemoteNetworkConfigPtrOutput   `pulumi:"remoteNetworkConfig"`
    // IAM role ARN for the Kubernetes control plane.
    RoleArn                  pulumi.StringOutput                   `pulumi:"roleArn"`
    // One of: CREATING, ACTIVE, DELETING, FAILED.
    Status                   pulumi.StringOutput                   `pulumi:"status"`
    StorageConfig            ClusterStorageConfigOutput            `pulumi:"storageConfig"`
    Tags                     pulumi.StringMapOutput                `pulumi:"tags"`
    TagsAll                  pulumi.StringMapOutput                `pulumi:"tagsAll"`
    UpgradePolicy            ClusterUpgradePolicyOutput            `pulumi:"upgradePolicy"`
    Version                  pulumi.StringOutput                   `pulumi:"version"`
    // VPC configuration for the cluster.
    VpcConfig                ClusterVpcConfigOutput                `pulumi:"vpcConfig"`
    ZonalShiftConfig         ClusterZonalShiftConfigPtrOutput      `pulumi:"zonalShiftConfig"`
}

ClusterArgs

type ClusterArgs struct {
    AccessConfig               ClusterAccessConfigPtrInput
    // Install default unmanaged add-ons during creation. Forces replacement. Default: true.
    BootstrapSelfManagedAddons pulumi.BoolPtrInput
    ComputeConfig              ClusterComputeConfigPtrInput
    ControlPlaneScalingConfig  ClusterControlPlaneScalingConfigPtrInput
    DeletionProtection         pulumi.BoolPtrInput
    // Control plane log types to enable. Valid: api, audit, authenticator,
    // controllerManager, scheduler.
    EnabledClusterLogTypes     pulumi.StringArrayInput
    EncryptionConfig           ClusterEncryptionConfigPtrInput
    // Force version update overriding upgrade-blocking readiness checks.
    ForceUpdateVersion         pulumi.BoolPtrInput
    KubernetesNetworkConfig    ClusterKubernetesNetworkConfigPtrInput
    Name                       pulumi.StringPtrInput
    OutpostConfig              ClusterOutpostConfigPtrInput
    Region                     pulumi.StringPtrInput
    RemoteNetworkConfig        ClusterRemoteNetworkConfigPtrInput
    // IAM role ARN for the control plane. Add dependsOn for iam.RolePolicy or
    // iam.RolePolicyAttachment resources to ensure correct ordering.
    RoleArn                    pulumi.StringInput
    StorageConfig              ClusterStorageConfigPtrInput
    Tags                       pulumi.StringMapInput
    UpgradePolicy              ClusterUpgradePolicyPtrInput
    // Kubernetes version. If omitted, uses the latest available at resource creation time.
    Version                    pulumi.StringPtrInput
    // VPC configuration. Required. Includes subnetIds, securityGroupIds, endpointPublicAccess,
    // endpointPrivateAccess, publicAccessCidrs.
    VpcConfig                  ClusterVpcConfigInput
    ZonalShiftConfig           ClusterZonalShiftConfigPtrInput
}

Usage Example

package main

import (
    "encoding/json"

    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        // EKS Cluster IAM Role
        assumeRolePolicy, _ := json.Marshal(map[string]interface{}{
            "Version": "2012-10-17",
            "Statement": []map[string]interface{}{
                {
                    "Effect":    "Allow",
                    "Principal": map[string]string{"Service": "eks.amazonaws.com"},
                    "Action":    "sts:AssumeRole",
                },
            },
        })
        clusterRole, err := iam.NewRole(ctx, "eks-role", &iam.RoleArgs{
            AssumeRolePolicy: pulumi.String(string(assumeRolePolicy)),
        })
        if err != nil {
            return err
        }
        _, err = iam.NewRolePolicyAttachment(ctx, "eks-policy", &iam.RolePolicyAttachmentArgs{
            Role:      clusterRole.Name,
            PolicyArn: pulumi.String("arn:aws:iam::aws:policy/AmazonEKSClusterPolicy"),
        })
        if err != nil {
            return err
        }

        // EKS Cluster
        cluster, err := eks.NewCluster(ctx, "my-cluster", &eks.ClusterArgs{
            Name:    pulumi.String("my-cluster"),
            Version: pulumi.String("1.30"),
            RoleArn: clusterRole.Arn,
            EnabledClusterLogTypes: pulumi.StringArray{
                pulumi.String("api"),
                pulumi.String("audit"),
            },
            VpcConfig: &eks.ClusterVpcConfigArgs{
                SubnetIds: pulumi.StringArray{
                    pulumi.String("subnet-0a1b2c3d4e5f6EXAM"),
                    pulumi.String("subnet-0b2c3d4e5f6a7EXAM"),
                },
                EndpointPublicAccess: pulumi.Bool(true),
            },
        }, pulumi.DependsOn([]pulumi.Resource{clusterRole}))
        if err != nil {
            return err
        }

        ctx.Export("clusterName", cluster.Name)
        ctx.Export("clusterEndpoint", cluster.Endpoint)
        ctx.Export("clusterVersion", cluster.Version)
        return nil
    })
}

Node Groups

NodeGroup

type NodeGroup struct {
    pulumi.CustomResourceState

    // AMI type for the node group. Provider only detects drift if a value is provided.
    AmiType             pulumi.StringOutput                    `pulumi:"amiType"`
    Arn                 pulumi.StringOutput                    `pulumi:"arn"`
    // ON_DEMAND or SPOT. Provider only detects drift if a value is provided.
    CapacityType        pulumi.StringOutput                    `pulumi:"capacityType"`
    ClusterName         pulumi.StringOutput                    `pulumi:"clusterName"`
    // Disk size in GiB. Default 50 for Windows, 20 for all others.
    DiskSize            pulumi.IntOutput                       `pulumi:"diskSize"`
    ForceUpdateVersion  pulumi.BoolPtrOutput                   `pulumi:"forceUpdateVersion"`
    // Instance types. Default: ["t3.medium"]. Provider only detects drift if a value is provided.
    InstanceTypes       pulumi.StringArrayOutput               `pulumi:"instanceTypes"`
    Labels              pulumi.StringMapOutput                 `pulumi:"labels"`
    LaunchTemplate      NodeGroupLaunchTemplatePtrOutput       `pulumi:"launchTemplate"`
    NodeGroupName       pulumi.StringOutput                    `pulumi:"nodeGroupName"`
    NodeGroupNamePrefix pulumi.StringOutput                    `pulumi:"nodeGroupNamePrefix"`
    NodeRepairConfig    NodeGroupNodeRepairConfigOutput        `pulumi:"nodeRepairConfig"`
    // IAM Role ARN for the node group.
    NodeRoleArn         pulumi.StringOutput                    `pulumi:"nodeRoleArn"`
    Region              pulumi.StringOutput                    `pulumi:"region"`
    // AMI version of the node group. Defaults to latest for the Kubernetes version.
    ReleaseVersion      pulumi.StringOutput                    `pulumi:"releaseVersion"`
    // Remote access settings. Conflicts with LaunchTemplate.
    RemoteAccess        NodeGroupRemoteAccessPtrOutput         `pulumi:"remoteAccess"`
    Resources           NodeGroupResourceArrayOutput           `pulumi:"resources"`
    ScalingConfig       NodeGroupScalingConfigOutput           `pulumi:"scalingConfig"`
    // Status of the node group.
    Status              pulumi.StringOutput                    `pulumi:"status"`
    SubnetIds           pulumi.StringArrayOutput               `pulumi:"subnetIds"`
    Tags                pulumi.StringMapOutput                 `pulumi:"tags"`
    TagsAll             pulumi.StringMapOutput                 `pulumi:"tagsAll"`
    Taints              NodeGroupTaintArrayOutput              `pulumi:"taints"`
    UpdateConfig        NodeGroupUpdateConfigOutput            `pulumi:"updateConfig"`
    // Kubernetes version. Defaults to EKS Cluster version. Provider only detects drift if provided.
    Version             pulumi.StringOutput                    `pulumi:"version"`
}

Usage Example

package main

import (
    "encoding/json"

    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        // Node IAM Role
        nodeAssumeRolePolicy, _ := json.Marshal(map[string]interface{}{
            "Version": "2012-10-17",
            "Statement": []map[string]interface{}{
                {
                    "Effect":    "Allow",
                    "Principal": map[string]string{"Service": "ec2.amazonaws.com"},
                    "Action":    "sts:AssumeRole",
                },
            },
        })
        nodeRole, err := iam.NewRole(ctx, "node-role", &iam.RoleArgs{
            AssumeRolePolicy: pulumi.String(string(nodeAssumeRolePolicy)),
        })
        if err != nil {
            return err
        }
        for _, policyArn := range []string{
            "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
            "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
            "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
        } {
            _, err = iam.NewRolePolicyAttachment(ctx, "node-policy-"+policyArn[len(policyArn)-10:], &iam.RolePolicyAttachmentArgs{
                Role:      nodeRole.Name,
                PolicyArn: pulumi.String(policyArn),
            })
            if err != nil {
                return err
            }
        }

        // Managed Node Group
        _, err = eks.NewNodeGroup(ctx, "nodes", &eks.NodeGroupArgs{
            ClusterName:   pulumi.String("my-cluster"),
            NodeGroupName: pulumi.String("general"),
            NodeRoleArn:   nodeRole.Arn,
            SubnetIds: pulumi.StringArray{
                pulumi.String("subnet-0a1b2c3d4e5f6EXAM"),
                pulumi.String("subnet-0b2c3d4e5f6a7EXAM"),
            },
            InstanceTypes: pulumi.StringArray{pulumi.String("t3.medium")},
            ScalingConfig: &eks.NodeGroupScalingConfigArgs{
                DesiredSize: pulumi.Int(2),
                MinSize:     pulumi.Int(1),
                MaxSize:     pulumi.Int(5),
            },
            UpdateConfig: &eks.NodeGroupUpdateConfigArgs{
                MaxUnavailable: pulumi.Int(1),
            },
            Labels: pulumi.StringMap{
                "role": pulumi.String("general"),
            },
            Tags: pulumi.StringMap{
                "Name": pulumi.String("eks-nodes"),
            },
        })
        return err
    })
}

Fargate Profile

FargateProfile

type FargateProfile struct {
    pulumi.CustomResourceState

    Arn                 pulumi.StringOutput                   `pulumi:"arn"`
    ClusterName         pulumi.StringOutput                   `pulumi:"clusterName"`
    FargateProfileName  pulumi.StringOutput                   `pulumi:"fargateProfileName"`
    // IAM Role ARN providing permissions for the Fargate Profile.
    PodExecutionRoleArn pulumi.StringOutput                   `pulumi:"podExecutionRoleArn"`
    Region              pulumi.StringOutput                   `pulumi:"region"`
    // Configuration blocks for selecting Kubernetes Pods to execute with this profile.
    Selectors           FargateProfileSelectorArrayOutput     `pulumi:"selectors"`
    // Status of the Fargate Profile.
    Status              pulumi.StringOutput                   `pulumi:"status"`
    // Private EC2 Subnet IDs. Must have tag: kubernetes.io/cluster/CLUSTER_NAME.
    SubnetIds           pulumi.StringArrayOutput              `pulumi:"subnetIds"`
    Tags                pulumi.StringMapOutput                `pulumi:"tags"`
    TagsAll             pulumi.StringMapOutput                `pulumi:"tagsAll"`
}

Usage Example

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := eks.NewFargateProfile(ctx, "fargate", &eks.FargateProfileArgs{
            ClusterName:         pulumi.String("my-cluster"),
            FargateProfileName:  pulumi.String("fargate-profile"),
            PodExecutionRoleArn: pulumi.String("arn:aws:iam::123456789012:role/eks-fargate-role"),
            SubnetIds: pulumi.StringArray{
                pulumi.String("subnet-0a1b2c3d4e5f6EXAM"),
            },
            Selectors: eks.FargateProfileSelectorArray{
                &eks.FargateProfileSelectorArgs{
                    Namespace: pulumi.String("fargate-namespace"),
                    Labels: pulumi.StringMap{
                        "app": pulumi.String("my-app"),
                    },
                },
            },
        })
        return err
    })
}

Add-ons

Addon

type Addon struct {
    pulumi.CustomResourceState

    // Add-on name (must match a name from describe-addon-versions).
    AddonName              pulumi.StringOutput                        `pulumi:"addonName"`
    // Add-on version (must match a version from describe-addon-versions).
    AddonVersion           pulumi.StringOutput                        `pulumi:"addonVersion"`
    Arn                    pulumi.StringOutput                        `pulumi:"arn"`
    ClusterName            pulumi.StringOutput                        `pulumi:"clusterName"`
    // Custom configuration values as a JSON string matching the add-on's JSON schema.
    ConfigurationValues    pulumi.StringOutput                        `pulumi:"configurationValues"`
    CreatedAt              pulumi.StringOutput                        `pulumi:"createdAt"`
    ModifiedAt             pulumi.StringOutput                        `pulumi:"modifiedAt"`
    PodIdentityAssociations AddonPodIdentityAssociationArrayOutput    `pulumi:"podIdentityAssociations"`
    // Preserve created resources when deleting the EKS add-on.
    Preserve               pulumi.BoolPtrOutput                       `pulumi:"preserve"`
    Region                 pulumi.StringOutput                        `pulumi:"region"`
    // How to resolve field value conflicts when migrating a self-managed add-on.
    // Valid: NONE, OVERWRITE.
    ResolveConflictsOnCreate pulumi.StringPtrOutput                   `pulumi:"resolveConflictsOnCreate"`
    // How to resolve conflicts for an Amazon EKS add-on if values were changed from defaults.
    // Valid: NONE, OVERWRITE, PRESERVE.
    ResolveConflictsOnUpdate pulumi.StringPtrOutput                   `pulumi:"resolveConflictsOnUpdate"`
    // IAM role ARN for the add-on's service account. Requires an OIDC provider.
    ServiceAccountRoleArn  pulumi.StringPtrOutput                     `pulumi:"serviceAccountRoleArn"`
    Tags                   pulumi.StringMapOutput                     `pulumi:"tags"`
    TagsAll                pulumi.StringMapOutput                     `pulumi:"tagsAll"`
}

Usage Example

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        // Install the VPC CNI add-on
        _, err := eks.NewAddon(ctx, "vpc-cni", &eks.AddonArgs{
            ClusterName:              pulumi.String("my-cluster"),
            AddonName:                pulumi.String("vpc-cni"),
            ResolveConflictsOnUpdate: pulumi.String("OVERWRITE"),
        })
        if err != nil {
            return err
        }

        // Install CoreDNS add-on
        _, err = eks.NewAddon(ctx, "coredns", &eks.AddonArgs{
            ClusterName:              pulumi.String("my-cluster"),
            AddonName:                pulumi.String("coredns"),
            ResolveConflictsOnUpdate: pulumi.String("OVERWRITE"),
        })
        return err
    })
}

Access Management

AccessEntry

type AccessEntry struct {
    pulumi.CustomResourceState

    AccessEntryArn   pulumi.StringOutput      `pulumi:"accessEntryArn"`
    ClusterName      pulumi.StringOutput      `pulumi:"clusterName"`
    CreatedAt        pulumi.StringOutput      `pulumi:"createdAt"`
    // Kubernetes groups the principal will belong to when an access entry is created.
    KubernetesGroups pulumi.StringArrayOutput `pulumi:"kubernetesGroups"`
    ModifiedAt       pulumi.StringOutput      `pulumi:"modifiedAt"`
    // IAM Principal ARN requiring authentication access to the EKS cluster.
    PrincipalArn     pulumi.StringOutput      `pulumi:"principalArn"`
    Region           pulumi.StringOutput      `pulumi:"region"`
    Tags             pulumi.StringMapOutput   `pulumi:"tags"`
    TagsAll          pulumi.StringMapOutput   `pulumi:"tagsAll"`
    // STANDARD, EC2_LINUX, EC2_WINDOWS, FARGATE_LINUX.
    // EC2_LINUX/EC2_WINDOWS/FARGATE_LINUX types disallow username and group inputs.
    Type             pulumi.StringPtrOutput   `pulumi:"type"`
    UserName         pulumi.StringOutput      `pulumi:"userName"`
}

Usage Example

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        // Create access entry for an IAM role
        entry, err := eks.NewAccessEntry(ctx, "admin-entry", &eks.AccessEntryArgs{
            ClusterName:  pulumi.String("my-cluster"),
            PrincipalArn: pulumi.String("arn:aws:iam::123456789012:role/eks-admin-role"),
            KubernetesGroups: pulumi.StringArray{
                pulumi.String("system:masters"),
            },
            Type: pulumi.String("STANDARD"),
        })
        if err != nil {
            return err
        }

        // Associate the AmazonEKSClusterAdminPolicy
        _, err = eks.NewAccessPolicyAssociation(ctx, "admin-policy", &eks.AccessPolicyAssociationArgs{
            ClusterName:  pulumi.String("my-cluster"),
            PrincipalArn: entry.PrincipalArn,
            PolicyArn:    pulumi.String("arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"),
            AccessScope: &eks.AccessPolicyAssociationAccessScopeArgs{
                Type: pulumi.String("cluster"),
            },
        })
        return err
    })
}

Identity Provider Configuration

IdentityProviderConfig

type IdentityProviderConfig struct {
    pulumi.CustomResourceState

    Arn         pulumi.StringOutput                  `pulumi:"arn"`
    ClusterName pulumi.StringOutput                  `pulumi:"clusterName"`
    // OpenID Connect identity provider configuration.
    Oidc        IdentityProviderConfigOidcOutput      `pulumi:"oidc"`
    Region      pulumi.StringOutput                  `pulumi:"region"`
    Status      pulumi.StringOutput                  `pulumi:"status"`
    Tags        pulumi.StringMapOutput               `pulumi:"tags"`
    TagsAll     pulumi.StringMapOutput               `pulumi:"tagsAll"`
}

Usage Example

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        _, err := eks.NewIdentityProviderConfig(ctx, "oidc-config", &eks.IdentityProviderConfigArgs{
            ClusterName: pulumi.String("my-cluster"),
            Oidc: &eks.IdentityProviderConfigOidcArgs{
                ClientId:                   pulumi.String("sts.amazonaws.com"),
                IdentityProviderConfigName: pulumi.String("my-oidc-provider"),
                IssuerUrl:                  pulumi.String("https://oidc.eks.us-east-1.amazonaws.com/id/EXAMPLE"),
            },
        })
        return err
    })
}

Data Sources

LookupCluster

func LookupCluster(ctx *pulumi.Context, args *LookupClusterArgs, opts ...pulumi.InvokeOption) (*LookupClusterResult, error)

type LookupClusterArgs struct {
    // Name of the EKS cluster.
    Name   string  `pulumi:"name"`
    Region *string `pulumi:"region"`
    Tags   map[string]string `pulumi:"tags"`
}

type LookupClusterResult struct {
    AccessConfigs              []GetClusterAccessConfig             `pulumi:"accessConfigs"`
    Arn                        string                               `pulumi:"arn"`
    CertificateAuthorities     []GetClusterCertificateAuthority     `pulumi:"certificateAuthorities"`
    ClusterId                  string                               `pulumi:"clusterId"`
    ComputeConfigs             []GetClusterComputeConfig            `pulumi:"computeConfigs"`
    ControlPlaneScalingConfigs []GetClusterControlPlaneScalingConfig `pulumi:"controlPlaneScalingConfigs"`
    CreatedAt                  string                               `pulumi:"createdAt"`
    DeletionProtection         bool                                 `pulumi:"deletionProtection"`
    EnabledClusterLogTypes     []string                             `pulumi:"enabledClusterLogTypes"`
    // Kubernetes API server endpoint.
    Endpoint                   string                               `pulumi:"endpoint"`
    Id                         string                               `pulumi:"id"`
    Identities                 []GetClusterIdentity                 `pulumi:"identities"`
    KubernetesNetworkConfigs   []GetClusterKubernetesNetworkConfig  `pulumi:"kubernetesNetworkConfigs"`
    Name                       string                               `pulumi:"name"`
    OutpostConfigs             []GetClusterOutpostConfig            `pulumi:"outpostConfigs"`
    PlatformVersion            string                               `pulumi:"platformVersion"`
    Region                     string                               `pulumi:"region"`
    RemoteNetworkConfigs       []GetClusterRemoteNetworkConfig      `pulumi:"remoteNetworkConfigs"`
    RoleArn                    string                               `pulumi:"roleArn"`
    // CREATING, ACTIVE, DELETING, FAILED.
    Status                     string                               `pulumi:"status"`
    StorageConfigs             []GetClusterStorageConfig            `pulumi:"storageConfigs"`
    Tags                       map[string]string                    `pulumi:"tags"`
    UpgradePolicies            []GetClusterUpgradePolicy            `pulumi:"upgradePolicies"`
    Version                    string                               `pulumi:"version"`
    VpcConfigs                 []GetClusterVpcConfig                `pulumi:"vpcConfigs"`
}

Usage Example

package main

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/eks"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        cluster, err := eks.LookupCluster(ctx, &eks.LookupClusterArgs{
            Name: "my-cluster",
        }, nil)
        if err != nil {
            return err
        }

        ctx.Export("endpoint", pulumi.String(cluster.Endpoint))
        ctx.Export("caCert", pulumi.String(cluster.CertificateAuthorities[0].Data))
        ctx.Export("version", pulumi.String(cluster.Version))
        return nil
    })
}

GetClusterAuth

func GetClusterAuth(ctx *pulumi.Context, args *GetClusterAuthArgs, opts ...pulumi.InvokeOption) (*GetClusterAuthResult, error)

Retrieve an authentication token to communicate with an EKS cluster. Used when configuring a Kubernetes provider.

GetAddonVersion

func GetAddonVersion(ctx *pulumi.Context, args *GetAddonVersionArgs, opts ...pulumi.InvokeOption) (*GetAddonVersionResult, error)

Retrieve the default or latest EKS add-on version for a given cluster version and add-on name.

Install with Tessl CLI

npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

docs

index.md

tile.json