From 6ed4e21e8b89e4094888e0a8e47fb2191f6391b1 Mon Sep 17 00:00:00 2001 From: Colin Adler Date: Wed, 18 Jan 2023 11:01:00 -0600 Subject: [PATCH] feat(examples): add labels and antiAffinity to k8s example (#5763) --- examples/templates/kubernetes/main.tf | 43 +++++++++++++++++++++++++++ helm/templates/_helpers.tpl | 1 + 2 files changed, 44 insertions(+) diff --git a/examples/templates/kubernetes/main.tf b/examples/templates/kubernetes/main.tf index bc6de7913e..9f1ca5b9be 100644 --- a/examples/templates/kubernetes/main.tf +++ b/examples/templates/kubernetes/main.tf @@ -89,6 +89,17 @@ 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 + "com.coder.user.id" = data.coder_workspace.me.owner_id + "com.coder.user.username" = data.coder_workspace.me.owner + } } wait_until_bound = false spec { @@ -106,6 +117,17 @@ 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" + // 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.id" = data.coder_workspace.me.owner_id + "com.coder.user.username" = data.coder_workspace.me.owner + } } spec { security_context { @@ -137,5 +159,26 @@ resource "kubernetes_pod" "main" { read_only = false } } + + + 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 { + 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 f92f798df3..8b96852f8d 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 }} {{/*