Terraform module which creates EKS resources on AWS.
module "eks" {
source = "howdio/eks/aws"
name = "cluster"
default_vpc = true
enable_kubectl = true
enable_dashboard = true
}Terraform version 0.12+ or newer is required for this module to work.
Kubernetes CLI 1.10 or newer with the AWS IAM Authenticator is required for the module to work.
- basic - Create an EKS cluster with GPU capable working nodes.
- advanced - A more advanced Kubernetes cluster using AWS EKS with multiple instance types worker nodes.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| availability_zone_count | Number of availability zones used in the region. | string | 2 |
no |
| availability_zones | List of availability zones in the region | string | <list> |
no |
| cluster_private_access | Indicates whether or not the Amazon EKS private API server endpoint is enabled. | string | false |
no |
| cluster_public_access | Indicates whether or not the Amazon EKS public API server endpoint is enabled. | string | true |
no |
| cluster_subnet_ids | A list of VPC subnet IDs which the cluster uses. | string | <list> |
no |
| default_vpc | Use the default VPC for creating your cluster resources. | string | false |
no |
| enable_calico | When enabled, it will install Calico for network policy support. | string | false |
no |
| enable_dashboard | When enabled, it will install the Kubernetes Dashboard. | string | false |
no |
| enable_kube2iam | When enabled, it will install Kube2IAM to support assigning IAM roles to Pods. | string | false |
no |
| enable_kubectl | When enabled, it will merge the cluster's configuration with the one located in ~/.kube/config. | string | false |
no |
| key_pair | Adds an EC2 Key Pair to the cluster nodes. | string | `` | no |
| ssh_cidr | The CIDR blocks from which to allow incoming ssh connections to the EKS nodes. | string | <list> |
no |
| name | Name to be used on all the resources as identifier. | string | - | yes |
| node_ami_id | AMI id for the node instances. | string | `` | no |
| node_ami_lookup | AMI lookup name for the node instances. | string | amazon-eks-node-* |
no |
| node_instance_type | Instance type of the worker node. | string | m5.large |
no |
| node_max_size | Maximum size of the worker node AutoScaling Group. | string | 2 |
no |
| node_min_size | Minimum size of the worker node AutoScaling Group. | string | 1 |
no |
| node_subnet_ids | A list of VPC subnet IDs which the worker nodes are using. | string | <list> |
no |
| node_user_data | Additional user data used when bootstrapping the EC2 instance. | string | `` | no |
| node_bootstrap_arguments | Additional arguments when bootstrapping the EKS node. | string | `` | no |
| node_disk_size | The root device size for the worker nodes. | number | 20 |
no |
| eks_version | Kubernetes version to use for the cluster. | string | 1.14 |
no |
| vpc_id | ID of the VPC where to create the cluster resources. | string | `` | no |
| workstation_cidr | CIDR blocks from which to allow inbound traffic to the Kubernetes control plane. | string | <list> |
no |
| aws_auth | Grant additional AWS users or roles the ability to interact with the EKS cluster. | string | <list> |
no |
| spot_price | The maximum price to use for reserving spot instances. If set, the worker nodes will be spawned as spot instances instead of on demand. | string | `` | no |
| Name | Description |
|---|---|
| cluster_certificate | Certificate used to authenticate to the Kubernetes Controle Plane. |
| cluster_endpoint | Endpoint of the Kubernetes Control Plane. |
| cluster_name | Cluster name provided when the cluster was created. |
| kubeconfig | Kubernetes configuration file for accessing the cluster using the Kubernete CLI. |
| node_instance_profile | IAM Instance Profile which has the required policies to add the node to the cluster. |
| node_instance_profile_arn | IAM Instance Profile ARN which has the required policies to add the node to the cluster. |
| node_role | IAM Role which has the required policies to add the node to the cluster. |
| node_role_arn | IAM Role ARN which has the required policies to add the node to the cluster. |
| cluster_security_group | Security Group between cluster and nodes. |
| node_security_group | Security Group to be able to access to the Kubernetes Control Plane and other nodes. |
Thank you for your contributions.