From 5d6b8f4b12e33e43f955fdb99754361ef71af76b Mon Sep 17 00:00:00 2001 From: Florian Piesche Date: Wed, 11 Aug 2021 16:36:39 +0100 Subject: [PATCH] [Charts] Add option to pass in topology pod constraints (#262) --- charts/woodpecker-agent/Chart.yaml | 4 ++-- charts/woodpecker-agent/templates/deployment.yaml | 6 ++++++ charts/woodpecker-agent/values.yaml | 12 ++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/charts/woodpecker-agent/Chart.yaml b/charts/woodpecker-agent/Chart.yaml index c71bbf1fa..007480115 100644 --- a/charts/woodpecker-agent/Chart.yaml +++ b/charts/woodpecker-agent/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: woodpecker-agent -description: A Helm chart for Woodpecker a fork of the Drone CI system +description: A Helm chart for Woodpecker, a fork of the Drone CI system type: application -version: 0.1.0 +version: 0.1.1 appVersion: "v0.13.0-rc.3" keywords: - continuous-delivery diff --git a/charts/woodpecker-agent/templates/deployment.yaml b/charts/woodpecker-agent/templates/deployment.yaml index f4f615437..8271fdc24 100644 --- a/charts/woodpecker-agent/templates/deployment.yaml +++ b/charts/woodpecker-agent/templates/deployment.yaml @@ -18,6 +18,12 @@ spec: labels: {{- include "woodpecker-agent.selectorLabels" . | nindent 8 }} spec: + {{- if and (semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion) (.Values.topologySpreadConstraints) }} + {{- with .Values.topologySpreadConstraints }} + topologySpreadConstraints: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} diff --git a/charts/woodpecker-agent/values.yaml b/charts/woodpecker-agent/values.yaml index ac7ce060b..3071157f3 100644 --- a/charts/woodpecker-agent/values.yaml +++ b/charts/woodpecker-agent/values.yaml @@ -56,3 +56,15 @@ nodeSelector: {} tolerations: [] affinity: {} + +## Using topology spread constraints, you can ensure that there is at least one agent +## pod for each topology zone, e.g. one per arch for for multi-architecture clusters +## or one for each region for geographically distributed cloud-hosted clusters. +## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +topologySpreadConstraints: [] +# - maxSkew: 1 +# topologyKey: "beta.kubernetes.io/arch" +# whenUnsatisfiable: "DoNotSchedule" +# labelSelector: +# matchLabels: +# "app.kubernetes.io/name": woodpecker-agent