terraform-aws-eks VS eksctl

Compare terraform-aws-eks vs eksctl and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
terraform-aws-eks eksctl
69 59
4,141 4,774
2.1% 1.0%
8.7 9.6
9 days ago about 21 hours ago
HCL Go
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

terraform-aws-eks

Posts with mentions or reviews of terraform-aws-eks. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-09.
  • Feat: Made it clear that we stand with Ukraine
    1 project | news.ycombinator.com | 27 Oct 2023
  • Need suggestions for managing eks terraform module
    2 projects | /r/Terraform | 9 Jul 2023
  • What's everyone's favorite EKS Terraform module these days?
    3 projects | /r/kubernetes | 3 Jul 2023
    cloudposse module was popular but most have moved to https://github.com/terraform-aws-modules/terraform-aws-eks also eks blueprints will be moving to this module. use eks blueprints v5
  • The Future of Terraform: ClickOps
    5 projects | /r/Terraform | 15 Jun 2023
    That's a very simplistic view. Let's do a small thought exercise. Is this module not infrastructure?
  • Failed to marshal state to json
    1 project | /r/Terraform | 10 Jun 2023
    I think there is an issue with the module eks : https://github.com/terraform-aws-modules/terraform-aws-eks
  • ☸️ How to deploy a cost-efficient AWS/EKS Kubernetes cluster using Terraform in 2023
    1 project | dev.to | 3 Jun 2023
    module "eks" { source = "terraform-aws-modules/eks/aws" cluster_name = var.cluster_name cluster_version = var.kubernetes_version cluster_endpoint_private_access = true cluster_endpoint_public_access = true cluster_addons = { coredns = { most_recent = true timeouts = { create = "2m" # default 20m. Times out on first launch while being effectively created } } kube-proxy = { most_recent = true } vpc-cni = { most_recent = true } aws-ebs-csi-driver = { most_recent = true } } vpc_id = module.vpc.vpc_id subnet_ids = module.vpc.private_subnets # Self managed node groups will not automatically create the aws-auth configmap so we need to create_aws_auth_configmap = true manage_aws_auth_configmap = true aws_auth_users = var.aws_auth_users enable_irsa = true node_security_group_additional_rules = { ingress_self_all = { description = "Node to node all ports/protocols" protocol = "-1" from_port = 0 to_port = 0 type = "ingress" self = true } egress_all = { # by default, only https urls can be reached from inside the cluster description = "Node all egress" protocol = "-1" from_port = 0 to_port = 0 type = "egress" cidr_blocks = ["0.0.0.0/0"] ipv6_cidr_blocks = ["::/0"] } } self_managed_node_group_defaults = { # enable discovery of autoscaling groups by cluster-autoscaler autoscaling_group_tags = { "k8s.io/cluster-autoscaler/enabled" : true, "k8s.io/cluster-autoscaler/${var.cluster_name}" : "owned", } # from https://github.com/terraform-aws-modules/terraform-aws-eks/issues/2207#issuecomment-1220679414 # to avoid "waiting for a volume to be created, either by external provisioner "ebs.csi.aws.com" or manually created by system administrator" iam_role_additional_policies = { AmazonEBSCSIDriverPolicy = "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" } } # possible values : https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/node_groups.tf self_managed_node_groups = { default_node_group = { create = false } # fulltime-az-a = { # name = "fulltime-az-a" # subnets = [module.vpc.private_subnets[0]] # instance_type = "t3.medium" # desired_size = 1 # bootstrap_extra_args = "--kubelet-extra-args '--node-labels=node.kubernetes.io/lifecycle=normal'" # } spot-az-a = { name = "spot-az-a" subnet_ids = [module.vpc.private_subnets[0]] # only one subnet to simplify PV usage # availability_zones = ["${var.region}a"] # conflict with previous option. TODO try subnet_ids=null at creation (because at modification it fails) desired_size = 2 min_size = 1 max_size = 10 bootstrap_extra_args = "--kubelet-extra-args '--node-labels=node.kubernetes.io/lifecycle=spot'" use_mixed_instances_policy = true mixed_instances_policy = { instances_distribution = { on_demand_base_capacity = 0 on_demand_percentage_above_base_capacity = 0 spot_allocation_strategy = "lowest-price" # "capacity-optimized" described here : https://aws.amazon.com/blogs/compute/introducing-the-capacity-optimized-allocation-strategy-for-amazon-ec2-spot-instances/ } override = [ { instance_type = "t3.xlarge" weighted_capacity = "1" }, { instance_type = "t3a.xlarge" weighted_capacity = "1" }, ] } } } tags = local.tags }
  • How are most EKS clusters deployed?
    7 projects | /r/kubernetes | 22 May 2023
    If you want somewhat viable setup - I'd go for terraform-aws-modules (Anton did an awesome job), and aws-ia blueprints, especially those multi-tenant ones.
  • I am stuck on learning how to provision K8s in AWS. Security groups? ALB? ACM? R53?
    3 projects | /r/Terraform | 19 Mar 2023
    ‏https://github.com/terraform-aws-modules/terraform-aws-eks
  • Deal with external managed resources destruction
    1 project | /r/Terraform | 3 Mar 2023
    I tried using explicit depends_on between my modules but this practise is not recommended since it cause issues during planning.
  • How to Upgrade EKS Cluster and its Nodes via Terraform without disruption?
    1 project | /r/kubernetes | 24 Jan 2023
    If you use https://github.com/terraform-aws-modules/terraform-aws-eks it is designed to upgrade the components in the correct order when the cluster version is changed

eksctl

Posts with mentions or reviews of eksctl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-26.
  • Auto-scaling DynamoDB Streams applications on Kubernetes
    4 projects | dev.to | 26 Sep 2023
    There are a variety of ways in which you can create an Amazon EKS cluster. I prefer using eksctl CLI because of the convenience it offers. Creating an an EKS cluster using eksctl, can be as easy as this:
  • How to migrate Apache Solr from the existing cluster to Amazon EKS
    1 project | dev.to | 30 Aug 2023
    There are many ways to create a cluster such as using eksctl. In my case, I will use terraform module cause it’s easy to reuse and comprehend.
  • Ultimate EKS Baseline Cluster: Part 1 - Provision EKS
    17 projects | dev.to | 21 Jul 2023
    eksctl [eksctl] is the tool that can provision EKS cluster as well as supporting VPC network infrastructure.
  • [AWS] EKS vs Self managed HA k3s running on 1x2 ec2 machines, for medium production workload
    3 projects | /r/kubernetes | 11 Jun 2023
    For this and many other reasons I recommend doing everything in Terraform EXCEPT EKS and its node groups. For that, I use https://eksctl.io/ because it much better manages the lifecycle of EKS and your node groups. I have an blog article better explaining why I recommend it, and another blog article explaining how to do zero-downtime upgrades with EKSCTL.
  • Automating Kong API Gateway deployment with Flux
    6 projects | dev.to | 27 Apr 2023
    eksctl
  • Export a docker container to a VPC in AWS and exposing it publicly through a loadbalancer
    1 project | /r/Terraform | 31 Mar 2023
  • Anybody using spot instances for worker nodes?
    6 projects | /r/kubernetes | 26 Mar 2023
    Second, make sure you create a spot instance group that attempts to launch MULTIPLE different instance types. This way if one instance type gets flushed, your autoscaler will kick in and launch a different type. Without this, you WILL HAVE DOWNTIME if a sudden price hike and flush occurs. If you're using eksctl I have example configurations that use multi-instance types on Github here.
  • Use AWS Controllers for Kubernetes to deploy a Serverless data processing solution with SQS, Lambda and DynamoDB
    2 projects | dev.to | 20 Mar 2023
    There are a variety of ways in which you can create an Amazon EKS cluster. I prefer using eksctl CLI because of the convenience it offers. Creating an an EKS cluster using eksctl, can be as easy as this:
  • strategy to upgrade eks cluster
    3 projects | /r/kubernetes | 3 Mar 2023
    I've written an article on this, with my recommended tool for managing eks EKSCTL.
  • Bootstrapping Kubernetes Cluster with CloudFormation
    1 project | dev.to | 14 Feb 2023
    --- AWSTemplateFormatVersion: '2010-09-09' Parameters: VpcId: Type: AWS::EC2::VPC::Id Description: ID of the VPC in which to create the Kubernetes cluster SubnetIds: Type: List Description: List of Subnet IDs in which to create the Kubernetes cluster KeyPairName: Type: AWS::EC2::KeyPair::KeyName Description: Name of the EC2 Key Pair to use for SSH access to worker nodes ClusterName: Type: String Description: Name of the Kubernetes cluster to create Resources: ControlPlaneSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: VpcId: !Ref VpcId GroupDescription: Allow inbound traffic to the Kubernetes control plane SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 WorkerNodeSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: VpcId: !Ref VpcId GroupDescription: Allow inbound traffic to Kubernetes worker nodes SecurityGroupIngress: - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: 0.0.0.0/0 ControlPlaneInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref ControlPlaneRole ControlPlaneRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - ec2.amazonaws.com Action: - sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonEKSClusterPolicy - arn:aws:iam::aws:policy/AmazonEKSServicePolicy ControlPlaneInstance: Type: AWS::EC2::Instance Properties: ImageId: ami-0b69ea66ff7391e80 InstanceType: t2.micro KeyName: !Ref KeyPairName NetworkInterfaces: - DeviceIndex: 0 AssociatePublicIpAddress: true GroupSet: - !Ref ControlPlaneSecurityGroup SubnetId: !Select [0, !Ref SubnetIds] IamInstanceProfile: !Ref ControlPlaneInstanceProfile UserData: Fn::Base64: !Sub | #!/bin/bash echo 'net.bridge.bridge-nf-call-iptables=1' | tee -a /etc/sysctl.conf sysctl -p yum update -y amazon-linux-extras install docker -y service docker start usermod -a -G docker ec2-user curl -o /usr/local/bin/kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl chmod +x /usr/local/bin/kubectl echo 'export PATH=$PATH:/usr/local/bin' >> /etc/bashrc curl --silent --location "https://github.com/weaveworks/eksctl/releases

What are some alternatives?

When comparing terraform-aws-eks and eksctl you can also consider the following projects:

terragrunt-infrastructure-modules-example - A repo used to show examples file/folder structures you can use with Terragrunt and Terraform

kops - Kubernetes Operations (kOps) - Production Grade k8s Installation, Upgrades and Management

terraform-aws-cloudwatch - Terraform module to create AWS Cloudwatch resources 🇺🇦

argo-cd - Declarative Continuous Deployment for Kubernetes

terraform-aws-eks-blueprints - Configure and deploy complete EKS clusters.

eks-alb-istio-with-tls - This repository demonstrate how to configure end-to-end encryption on EKS platform using TLS certificate from Amazon Certificate Manager, AWS Application LoadBalancer and Istio as service mesh.

cluster-api - Home for Cluster API, a subproject of sig-cluster-lifecycle

terraform-aws-security-group - This terraform module creates set of Security Group and Security Group Rules resources in various combinations.

eks-anywhere - Run Amazon EKS on your own infrastructure 🚀

eks-v17-v18-migrate - How to migrate from v17 to v18 of `terraform-aws-eks` module

Universal-Kubernetes-Helm-Charts - Some universal helm charts used for deploying services onto Kubernetes. All-in-one best-practices