From b580e5197df0aeecdec867ddfa4f9a2ea9b0de9a Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Tue, 17 Jan 2023 16:39:22 -0600 Subject: [PATCH 1/4] feat(examples): add labels and antiAffinity to k8s example --- examples/templates/kubernetes/main.tf | 23 +++++++++++++++++++++++ helm/templates/_helpers.tpl | 1 + 2 files changed, 24 insertions(+) diff --git a/examples/templates/kubernetes/main.tf b/examples/templates/kubernetes/main.tf index bc6de7913e2c8..4a2d8ae51b911 100644 --- a/examples/templates/kubernetes/main.tf +++ b/examples/templates/kubernetes/main.tf @@ -106,6 +106,11 @@ resource "kubernetes_pod" "main" { metadata { name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}" namespace = var.namespace + labels = { + "app.kubernetes.io/name" = "coder-workspace" + "app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}" + "app.kubernetes.io/part-of" = "coder" + } } spec { security_context { @@ -137,5 +142,23 @@ resource "kubernetes_pod" "main" { read_only = false } } + + affinity { + pod_anti_affinity { + preferred_during_scheduling_ignored_during_execution { + weight = 1 + pod_affinity_term { + topology_key = "kubernetes.io/hostname" + label_selector { + match_expressions { + key = "app.kubernetes.io/name" + operator = "In" + values = ["coder-workspace"] + } + } + } + } + } + } } } diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index f92f798df3211..8b96852f8d7d5 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -18,6 +18,7 @@ Selector labels {{- define "coder.selectorLabels" -}} app.kubernetes.io/name: {{ include "coder.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/part-of: {{ include "coder.name" . }} {{- end }} {{/* From 3e277484ffd196e3012d659d920ca0f34a9aeeeb Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Tue, 17 Jan 2023 17:57:22 -0600 Subject: [PATCH 2/4] fixup! feat(examples): add labels and antiAffinity to k8s example --- examples/templates/kubernetes/main.tf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/templates/kubernetes/main.tf b/examples/templates/kubernetes/main.tf index 4a2d8ae51b911..3b3a457be7b89 100644 --- a/examples/templates/kubernetes/main.tf +++ b/examples/templates/kubernetes/main.tf @@ -143,8 +143,11 @@ resource "kubernetes_pod" "main" { } } + affinity { pod_anti_affinity { + // This affinity attempts to spread out all workspace pods evenly across + // nodes. preferred_during_scheduling_ignored_during_execution { weight = 1 pod_affinity_term { From 94256543754d606674c3e8e4d62ea15e01f4378f Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Tue, 17 Jan 2023 18:10:10 -0600 Subject: [PATCH 3/4] additional labels --- examples/templates/kubernetes/main.tf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/examples/templates/kubernetes/main.tf b/examples/templates/kubernetes/main.tf index 3b3a457be7b89..ed0dd9b5e2812 100644 --- a/examples/templates/kubernetes/main.tf +++ b/examples/templates/kubernetes/main.tf @@ -89,6 +89,15 @@ resource "kubernetes_persistent_volume_claim" "home" { metadata { name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-home" namespace = var.namespace + labels = { + "app.kubernetes.io/name" = "coder-pvc" + "app.kubernetes.io/instance" = "coder-pvc-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}" + "app.kubernetes.io/part-of" = "coder" + // Coder specific labels. + "com.coder.resource" = "true" + "com.coder.workspace.id" = data.coder_workspace.me.id + "com.coder.workspace.name" = data.coder_workspace.me.name + } } wait_until_bound = false spec { @@ -110,6 +119,12 @@ resource "kubernetes_pod" "main" { "app.kubernetes.io/name" = "coder-workspace" "app.kubernetes.io/instance" = "coder-workspace-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}" "app.kubernetes.io/part-of" = "coder" + // Coder specific labels. + "com.coder.resource" = "true" + "com.coder.workspace.id" = data.coder_workspace.me.id + "com.coder.workspace.name" = data.coder_workspace.me.name + "com.coder.user" = data.coder_workspace.me.owner_id + "com.coder.username" = data.coder_workspace.me.owner } } spec { From ed4dcd305a444733a4e7801c8fc627c3f1839974 Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Wed, 18 Jan 2023 10:55:32 -0600 Subject: [PATCH 4/4] fixup! additional labels --- examples/templates/kubernetes/main.tf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/templates/kubernetes/main.tf b/examples/templates/kubernetes/main.tf index ed0dd9b5e2812..9f1ca5b9be297 100644 --- a/examples/templates/kubernetes/main.tf +++ b/examples/templates/kubernetes/main.tf @@ -97,6 +97,8 @@ resource "kubernetes_persistent_volume_claim" "home" { "com.coder.resource" = "true" "com.coder.workspace.id" = data.coder_workspace.me.id "com.coder.workspace.name" = data.coder_workspace.me.name + "com.coder.user.id" = data.coder_workspace.me.owner_id + "com.coder.user.username" = data.coder_workspace.me.owner } } wait_until_bound = false @@ -123,8 +125,8 @@ resource "kubernetes_pod" "main" { "com.coder.resource" = "true" "com.coder.workspace.id" = data.coder_workspace.me.id "com.coder.workspace.name" = data.coder_workspace.me.name - "com.coder.user" = data.coder_workspace.me.owner_id - "com.coder.username" = data.coder_workspace.me.owner + "com.coder.user.id" = data.coder_workspace.me.owner_id + "com.coder.user.username" = data.coder_workspace.me.owner } } spec {