From bfc0134a20c69aa05849466173d998e25755da90 Mon Sep 17 00:00:00 2001 From: Bret Mogilefsky Date: Mon, 2 May 2022 23:05:04 -0700 Subject: [PATCH 1/4] feat: Karpenter update Karpenter now handles pods with affinity, anti-affinity, and the Helm chart can handle topologySpreadConstraints --- terraform/modules/provision-aws/managed-node-groups.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terraform/modules/provision-aws/managed-node-groups.tf b/terraform/modules/provision-aws/managed-node-groups.tf index 8c275e46..bf85f0d6 100644 --- a/terraform/modules/provision-aws/managed-node-groups.tf +++ b/terraform/modules/provision-aws/managed-node-groups.tf @@ -61,7 +61,7 @@ resource "helm_release" "karpenter" { name = "karpenter" repository = "https://charts.karpenter.sh" chart = "karpenter" - version = "v0.8.0" + version = "v0.9.1" dynamic "set" { for_each = { From 25023a0d4d144b53fe046544fd217ea25c65ca13 Mon Sep 17 00:00:00 2001 From: Nicholas Kumia Date: Fri, 13 May 2022 14:39:22 -0400 Subject: [PATCH 2/4] fix: reconnect missing links The resources seem to already exist, they just weren't being substituted in --- terraform/modules/provision-k8s/k8s-autoscaler.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/terraform/modules/provision-k8s/k8s-autoscaler.tf b/terraform/modules/provision-k8s/k8s-autoscaler.tf index 47605714..f8267e8c 100644 --- a/terraform/modules/provision-k8s/k8s-autoscaler.tf +++ b/terraform/modules/provision-k8s/k8s-autoscaler.tf @@ -21,9 +21,9 @@ resource "helm_release" "autoscaler-provisioner" { resources: cpu: 1000 provider: - launchTemplate: + launchTemplate: ${local.launch_template_name} subnetSelector: - karpenter.sh/discovery: + karpenter.sh/discovery: ${local.cluster_name} ttlSecondsAfterEmpty: 30 EOF ] From 2ef90fd0744234c29af6249ac43a4b236e10c05c Mon Sep 17 00:00:00 2001 From: Nicholas Kumia Date: Fri, 13 May 2022 14:39:59 -0400 Subject: [PATCH 3/4] new: add test for autoscaling I thought we had one, but apparently not --- test.sh | 13 +++++++++++++ test_specs/autoscaling/pod.yml | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 test_specs/autoscaling/pod.yml diff --git a/test.sh b/test.sh index b6a17394..a184256d 100755 --- a/test.sh +++ b/test.sh @@ -219,6 +219,19 @@ else echo FAIL fi +# Test 4 - autoscaling works +echo -n "Provisioning a resource too big for m4.xlarge" +kubectl apply -f test_specs/autoscaling/pod.yml + +echo -n "Waiting for Pod to start..." +if (kubectl wait --for=condition=ready --timeout=600s pod large-app); then + echo PASS +else + retval=1 + echo FAIL +fi + + ####### ## From here down, tests need a KUBECONFIG with an admin user to complete correctly, so let's make a new one # Grab the name of the cluster for use with the aws CLI diff --git a/test_specs/autoscaling/pod.yml b/test_specs/autoscaling/pod.yml new file mode 100644 index 00000000..53fb7fd0 --- /dev/null +++ b/test_specs/autoscaling/pod.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: large-app +spec: + containers: + - name: large-app + image: busybox + resources: + requests: + cpu: "5000m" + limits: + cpu: "6000m" From 0b4cedbc542ddcdcd91a133c81b6aa165b82911e Mon Sep 17 00:00:00 2001 From: Nicholas Kumia Date: Fri, 13 May 2022 14:51:20 -0400 Subject: [PATCH 4/4] fix: attribute reference for aws_launch_template --- terraform/modules/provision-aws/locals/k8s-locals.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terraform/modules/provision-aws/locals/k8s-locals.tf b/terraform/modules/provision-aws/locals/k8s-locals.tf index d60cf574..fe18bc2b 100644 --- a/terraform/modules/provision-aws/locals/k8s-locals.tf +++ b/terraform/modules/provision-aws/locals/k8s-locals.tf @@ -4,5 +4,5 @@ locals { server = data.aws_eks_cluster.main.endpoint zone_id = aws_route53_zone.cluster.zone_id zone_role_arn = aws_iam_role.external_dns.arn - launch_template_name = data.aws_launch_template.eks_launch_template.name + launch_template_name = data.aws_launch_template.eks_launch_template.id }