This repository contains Terraform configurations used for my studies to automate the deployment of an Amazon EKS cluster.
It sets up a VPC with subnets, route tables, and necessary gateways, provisions the EKS cluster with worker nodes, configures OIDC for authentication, and integrates the AWS Load Balancer Controller for managing Kubernetes ingress resources. Helm is utilized for package management within the Kubernetes environment.
- Networking (VPC, Subnets, Route Tables, IGW (Internet Gateway), NGW (NAT Gateway), Elastic IP)
- Cluster
- Nodes
- eksctl
- OIDC - Open ID Connect
- AWS Load Balancer Controller (to create the Ingresses)
- Helm
- VPC and subnet requirements
- Amazon EKS cluster IAM role
- Amazon EKS node IAM role
- Create an IAM OIDC provider for your cluster
- Install AWS Load Balancer Controller with Helm
- Pre-Commit Hook Terraform
Current Setup:
- Terraform Validate
- Terraform Fmt -recursive
- Terraform Docs
Name | Version |
---|---|
aws | 5.82.2 |
helm | 2.17.0 |
kubernetes | 2.35.1 |
Name | Version |
---|---|
aws | 5.82.2 |
Name | Source | Version |
---|---|---|
eks_aws_load_balancer_controller | ./modules/aws-load-balancer-controller | n/a |
eks_cluster | ./modules/cluster | n/a |
eks_managed_node_group | ./modules/managed-node-group | n/a |
eks_network | ./modules/network | n/a |
Name | Type |
---|---|
aws_s3_bucket.bucket | resource |
aws_s3_bucket_versioning.versioning | resource |
Name | Description | Type | Default | Required |
---|---|---|---|---|
cidr_block | Network CIDR Block for VPC | string |
n/a | yes |
project_name | Project Name to be used to name Resources, as a tag | string |
n/a | yes |
region | AWS Region to create Resources | string |
n/a | yes |
tags | A map of tags to add to all AWS Resources | map(any) |
n/a | yes |
Name | Description |
---|---|
ca | n/a |
eks_vpc_config | n/a |
endpoint | n/a |
oidc | n/a |
oidc_id | n/a |