From 4609839225ce0fd8c9f3ea573c290592b7dbbd43 Mon Sep 17 00:00:00 2001 From: Rafael White Date: Wed, 21 Feb 2024 15:32:56 -0400 Subject: [PATCH] Update min_size and desired_size for eks_managed_node_groups --- README.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ terraform/eks.tf | 4 ++-- 2 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..485bc32 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +# AWS EKS Cluster IaC + +Deploy a AWS EKS Cluster using Terraform in minutes. + +## Setup + +### Set you AWS account credentials on Github Repo + +1.On your Github Repo `Settings`, in `Action` under `Secrets and variables` create two new `Repository Secrets` and their corresponding values: + +* `AWS_ACCESS_KEY_ID`: AWS Account Access Key + +* `AWS_SECRET_ACCESS_KEY`: AWS Account Secret Key + +## Set you tf states bucket + +1. On AWS create a new bucket where the terraform states will be stored. + +2. Change the name of the bucket in the backend s3 configuration on the `provider.tf` file. On `bucket` replace the existing value with your own bucket name. + +### Setting tfvars as Github Secrets + +Instead of using a `.tfvars` for storing the different variable values, Github environments secrets are used.The following steps cover how to do it: + +1. On your Github Repo `Settings`, in `Action` under `Secrets and variables` create a new environment. For example: `development` + +2. Create the following secrets and add the corresponding types of values for each one. These are the ones set for this project: + + * `AWS_REGION`: ex: us-east-1 + * `EKS_CLUSTER_EC2_INSTANCE_TYPE`: ex: m3.large + * `EKS_VPC_SECURITY_GROUP_ID`: ex: sg-062f05b98b1edfefaeasdadaedaed + * `NODE_GROUP_AUTOSCALING_POLICY_ARN`: ex: arn:aws:iam::23428842523567:policy/NameOFTHEPOLICY + * `EKS_CLUSTER_NAME`: ex: example-cluster + * `VPC_CIDR_BLOCK`: ex: 10.1.0.0/16 + * `VPC_ID`: ex: vpc-232fsr9fs9229frf + * `VPC_PRIVATE_SUBNETS_1`: ex: subnet-22938423489239" + * `VPC_PRIVATE_SUBNETS_2`: ex: subnet-22938423489224" + +## How to Deploy + +To deploy a new cluster with the given values just go to the `Actions` section of you repository and click on the `Deploy/update infrastructure`. There, go the `Run workflow` button and choose the environment you wish to deploy. The deployment will begin. It should take about 10 minutes for the cluster to be deployed on AWS EKS. + + +## Installing the cluster autoscaler + +For now the installation must be done after the cluster is created via helm using the following commands: + +Add the repo: +```sh +helm repo add autoscaler https://kubernetes.github.io/autoscaler +``` + +Install the chart on the cluster: + +```sh +helm install my-release autoscaler/cluster-autoscaler \ + --set autoDiscovery.clusterName= \ + --set awsRegion= +``` \ No newline at end of file diff --git a/terraform/eks.tf b/terraform/eks.tf index 8d43bff..fab5801 100644 --- a/terraform/eks.tf +++ b/terraform/eks.tf @@ -24,9 +24,9 @@ module "eks" { eks_managed_node_groups = { general = { - min_size = 2 + min_size = 1 max_size = 10 - desired_size = 2 + desired_size = 1 instance_types = ["${var.eks_cluster_ec2_instance_type}"] capacity_type = "ON_DEMAND"