Skip to content

Commit

Permalink
EKS: Transitional commit, migrate auto scaling group to node group
Browse files Browse the repository at this point in the history
  • Loading branch information
pst committed May 23, 2020
1 parent e6b68bc commit b208a14
Show file tree
Hide file tree
Showing 5 changed files with 81 additions and 37 deletions.
10 changes: 8 additions & 2 deletions aws/_modules/eks/node_pool.tf
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
module "node_pool" {
source = "./node_pool"

metadata_name = var.metadata_name
metadata_name = var.metadata_name
metadata_labels = var.metadata_labels

pool_name = "default"

eks_metadata_tags = local.eks_metadata_tags

cluster_name = aws_eks_cluster.current.name
cluster_endpoint = aws_eks_cluster.current.endpoint
cluster_version = aws_eks_cluster.current.version
cluster_ca = aws_eks_cluster.current.certificate_authority[0].data

iam_instance_profile_name = aws_iam_instance_profile.nodes.name
role_arn = aws_iam_role.node.arn

security_groups = [aws_security_group.nodes.id]

Expand All @@ -18,7 +24,7 @@ module "node_pool" {
min_size = var.min_size

root_device_volume_size = var.root_device_volume_size
root_device_encrypted = var.root_device_encrypted
root_device_encrypted = var.root_device_encrypted

vpc_zone_identifiers = aws_subnet.current.*.id
}
50 changes: 34 additions & 16 deletions aws/_modules/eks/node_pool/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,16 @@ USERDATA

resource "aws_launch_configuration" "nodes" {
associate_public_ip_address = true
iam_instance_profile = var.iam_instance_profile_name
image_id = data.aws_ami.eks_node.id
instance_type = var.instance_type
name_prefix = var.metadata_name
security_groups = var.security_groups
user_data_base64 = base64encode(local.node_userdata)
iam_instance_profile = var.iam_instance_profile_name
image_id = data.aws_ami.eks_node.id
instance_type = var.instance_type
name_prefix = var.metadata_name
security_groups = var.security_groups
user_data_base64 = base64encode(local.node_userdata)

root_block_device {
volume_size = var.root_device_volume_size
encrypted = var.root_device_encrypted
encrypted = var.root_device_encrypted
}

lifecycle {
Expand All @@ -37,23 +37,41 @@ resource "aws_launch_configuration" "nodes" {
}

resource "aws_autoscaling_group" "nodes" {
desired_capacity = var.desired_capacity
desired_capacity = var.desired_capacity
launch_configuration = aws_launch_configuration.nodes.id
max_size = var.max_size
min_size = var.min_size
name = var.metadata_name
vpc_zone_identifier = var.vpc_zone_identifiers
max_size = var.max_size
min_size = var.min_size
name = var.metadata_name
vpc_zone_identifier = var.vpc_zone_identifiers

tag {
key = "Name"
value = var.metadata_name
key = "Name"
value = var.metadata_name
propagate_at_launch = true
}

tag {
key = "kubernetes.io/cluster/${var.metadata_name}"
value = "owned"
key = "kubernetes.io/cluster/${var.metadata_name}"
value = "owned"
propagate_at_launch = true
}
}

resource "aws_eks_node_group" "nodes" {
cluster_name = var.cluster_name
node_group_name = var.pool_name
node_role_arn = var.role_arn
subnet_ids = var.vpc_zone_identifiers

scaling_config {
desired_size = var.desired_capacity
max_size = var.max_size
min_size = var.min_size
}

instance_types = [var.instance_type]
disk_size = var.root_device_volume_size

tags = var.eks_metadata_tags
labels = var.metadata_labels
}
29 changes: 24 additions & 5 deletions aws/_modules/eks/node_pool/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@ variable "metadata_name" {
description = "Metadata name to use."
}

variable "metadata_labels" {
type = map(string)
description = "Metadata labels to use."
}

variable "eks_metadata_tags" {
type = map
description = "EKS metadata tags to use."
}

variable "cluster_version" {
type = string
description = "Kubernetes version of the EKS cluster."
Expand All @@ -23,6 +33,16 @@ variable "cluster_name" {
description = "Cluster name of the EKS cluster."
}

variable "pool_name" {
type = string
description = "Name for this node pool."
}

variable "role_arn" {
type = string
description = "ARN of the IAM role for worker nodes."
}

variable "iam_instance_profile_name" {
type = string
description = "IAM instance profile to use for nodes."
Expand Down Expand Up @@ -54,19 +74,18 @@ variable "min_size" {
}

variable "root_device_encrypted" {
type = bool
default = true
type = bool
default = true
description = "Will encrypted the root device."
}

variable "root_device_volume_size" {
type = string
default = "20"
type = string
default = "20"
description = "Will set the volume size of the root device"
}

variable "vpc_zone_identifiers" {
type = list(string)
description = "List of VPC subnet IDs to use for nodes."
}

7 changes: 4 additions & 3 deletions aws/_modules/eks/vpc.tf
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ resource "aws_vpc" "current" {
resource "aws_subnet" "current" {
count = length(var.availability_zones)

availability_zone = var.availability_zones[count.index]
cidr_block = "10.0.${count.index}.0/24"
vpc_id = aws_vpc.current.id
availability_zone = var.availability_zones[count.index]
cidr_block = "10.0.${count.index}.0/24"
vpc_id = aws_vpc.current.id
map_public_ip_on_launch = true

tags = local.eks_metadata_tags
}
Expand Down
22 changes: 11 additions & 11 deletions tests/clusters.tf
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ module "eks_zero" {
configuration = var.clusters["eks_zero"]
}

module "gke_zero" {
source = "../google/cluster"

configuration = var.clusters["gke_zero"]
}

module "aks_zero" {
source = "../azurerm/cluster"

configuration = var.clusters["aks_zero"]
}
#module "gke_zero" {
# source = "../google/cluster"
#
# configuration = var.clusters["gke_zero"]
#}
#
#module "aks_zero" {
# source = "../azurerm/cluster"
#
# configuration = var.clusters["aks_zero"]
#}

0 comments on commit b208a14

Please sign in to comment.