From ede25a38589f02641835bad7c36215d572e0d462 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Tue, 26 May 2026 23:41:54 +1000 Subject: [PATCH] feat(platform): add priority-classes app with low/power/medium/high classes (#174) ## Summary - New `apps/base/priority-classes/` app with four `PriorityClass` objects managed via the `platform` ArgoCD project - Adds `apps/overlays/*/priority-classes` to the platform ApplicationSet generator - Adds `priority-classes` namespace to platform AppProject destinations (required even for cluster-scoped resources) | Class | Value | PreemptionPolicy | Intent | |---|---|---|---| | `low` | 100 | Never | Background work; evictable, won't preempt others | | `power` | 100 | Never | Compute-heavy but expendable (e.g. AI/ML workloads) | | `medium` | 10000 | PreemptLowerPriority | Standard services | | `high` | 100000 | PreemptLowerPriority | Critical services; preempts lower-priority pods | `PriorityClass` is already in the platform project's `clusterResourceWhitelist` so no project policy changes were needed. ## Test plan - ArgoCD syncs `platform-priority-classes` successfully - `kubectl get priorityclasses low power medium high` shows all four classes Reviewed-on: https://git.unkin.net/unkin/argocd-apps/pulls/174 --- apps/base/priority-classes/kustomization.yaml | 6 ++++ .../priority-classes/priorityclasses.yaml | 36 +++++++++++++++++++ .../priority-classes/kustomization.yaml | 6 ++++ argocd/applicationsets/platform.yaml | 1 + argocd/projects/platform.yaml | 2 ++ 5 files changed, 51 insertions(+) create mode 100644 apps/base/priority-classes/kustomization.yaml create mode 100644 apps/base/priority-classes/priorityclasses.yaml create mode 100644 apps/overlays/au-syd1/priority-classes/kustomization.yaml diff --git a/apps/base/priority-classes/kustomization.yaml b/apps/base/priority-classes/kustomization.yaml new file mode 100644 index 0000000..e831aca --- /dev/null +++ b/apps/base/priority-classes/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - priorityclasses.yaml diff --git a/apps/base/priority-classes/priorityclasses.yaml b/apps/base/priority-classes/priorityclasses.yaml new file mode 100644 index 0000000..057883d --- /dev/null +++ b/apps/base/priority-classes/priorityclasses.yaml @@ -0,0 +1,36 @@ +--- +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: low +value: 100 +preemptionPolicy: Never +globalDefault: false +description: "Low-importance workloads. Can be evicted under pressure but will not preempt other pods." +--- +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: power +value: 100 +preemptionPolicy: Never +globalDefault: false +description: "Compute-heavy workloads with low scheduling importance. Evictable under pressure." +--- +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: medium +value: 10000 +preemptionPolicy: PreemptLowerPriority +globalDefault: false +description: "Standard workloads. Will preempt low-priority pods if the cluster is under pressure." +--- +apiVersion: scheduling.k8s.io/v1 +kind: PriorityClass +metadata: + name: high +value: 100000 +preemptionPolicy: PreemptLowerPriority +globalDefault: false +description: "High-importance services. Will preempt medium- and low-priority pods if necessary." diff --git a/apps/overlays/au-syd1/priority-classes/kustomization.yaml b/apps/overlays/au-syd1/priority-classes/kustomization.yaml new file mode 100644 index 0000000..0de8a0c --- /dev/null +++ b/apps/overlays/au-syd1/priority-classes/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../base/priority-classes diff --git a/argocd/applicationsets/platform.yaml b/argocd/applicationsets/platform.yaml index 9b538c9..7023960 100644 --- a/argocd/applicationsets/platform.yaml +++ b/argocd/applicationsets/platform.yaml @@ -22,6 +22,7 @@ spec: - path: apps/overlays/*/jfrog - path: apps/overlays/*/kanidm - path: apps/overlays/*/node-feature-discovery + - path: apps/overlays/*/priority-classes - path: apps/overlays/*/puppet - path: apps/overlays/*/purelb - path: apps/overlays/*/reflector-system diff --git a/argocd/projects/platform.yaml b/argocd/projects/platform.yaml index 67d125c..ceaa1d7 100644 --- a/argocd/projects/platform.yaml +++ b/argocd/projects/platform.yaml @@ -31,6 +31,8 @@ spec: server: https://kubernetes.default.svc - namespace: 'node-feature-discovery' server: https://kubernetes.default.svc + - namespace: 'priority-classes' + server: https://kubernetes.default.svc - namespace: 'purelb' server: https://kubernetes.default.svc - namespace: 'puppet'