summaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
authorLee Briggs <lee@leebriggs.co.uk>2025-07-28 07:12:44 -0700
committerLee Briggs <lee@leebriggs.co.uk>2025-07-28 07:12:44 -0700
commit968f3e9406c44fbd648aeacf85de71eca3cdb8e8 (patch)
tree1a57aabd0f091a61be8741f57eb957ba9f071dce /cmd
parent5dc11d50f787026055a0125f536e87287ce6899e (diff)
downloadtailscale-k8s_priority_class.tar.xz
tailscale-k8s_priority_class.zip
cmd/k8s-operator,k8s-operator: allow setting a `priorityClassName`k8s_priority_class
Fixes #16682 Signed-off-by: Lee Briggs <lee@leebriggs.co.uk>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml7
-rw-r--r--cmd/k8s-operator/deploy/manifests/operator.yaml7
-rw-r--r--cmd/k8s-operator/sts.go1
-rw-r--r--cmd/k8s-operator/sts_test.go2
4 files changed, 17 insertions, 0 deletions
diff --git a/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml b/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml
index fcf1b27aa..78ac72e16 100644
--- a/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml
+++ b/cmd/k8s-operator/deploy/crds/tailscale.com_proxyclasses.yaml
@@ -1093,6 +1093,13 @@ spec:
type: object
additionalProperties:
type: string
+ priorityClassName:
+ description: |-
+ PriorityClassName for the proxy Pod.
+ By default Tailscale Kubernetes operator does not apply any priority class.
+ https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v
+ 1/#scheduling
+ type: string
securityContext:
description: |-
Proxy Pod's security context.
diff --git a/cmd/k8s-operator/deploy/manifests/operator.yaml b/cmd/k8s-operator/deploy/manifests/operator.yaml
index 4f1faf104..80c753870 100644
--- a/cmd/k8s-operator/deploy/manifests/operator.yaml
+++ b/cmd/k8s-operator/deploy/manifests/operator.yaml
@@ -1567,6 +1567,13 @@ spec:
selector.
https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#scheduling
type: object
+ priorityClassName:
+ description: |-
+ PriorityClassName for the proxy Pod.
+ By default Tailscale Kubernetes operator does not apply any priority class.
+ https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v
+ 1/#scheduling
+ type: string
securityContext:
description: |-
Proxy Pod's security context.
diff --git a/cmd/k8s-operator/sts.go b/cmd/k8s-operator/sts.go
index 193acad87..3c79adfd0 100644
--- a/cmd/k8s-operator/sts.go
+++ b/cmd/k8s-operator/sts.go
@@ -800,6 +800,7 @@ func applyProxyClassToStatefulSet(pc *tsapi.ProxyClass, ss *appsv1.StatefulSet,
ss.Spec.Template.Spec.NodeSelector = wantsPod.NodeSelector
ss.Spec.Template.Spec.Affinity = wantsPod.Affinity
ss.Spec.Template.Spec.Tolerations = wantsPod.Tolerations
+ ss.Spec.Template.Spec.PriorityClassName = wantsPod.PriorityClassName
ss.Spec.Template.Spec.TopologySpreadConstraints = wantsPod.TopologySpreadConstraints
// Update containers.
diff --git a/cmd/k8s-operator/sts_test.go b/cmd/k8s-operator/sts_test.go
index 35c512c8c..47e75dbd4 100644
--- a/cmd/k8s-operator/sts_test.go
+++ b/cmd/k8s-operator/sts_test.go
@@ -75,6 +75,7 @@ func Test_applyProxyClassToStatefulSet(t *testing.T) {
NodeSelector: map[string]string{"beta.kubernetes.io/os": "linux"},
Affinity: &corev1.Affinity{NodeAffinity: &corev1.NodeAffinity{RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{}}},
Tolerations: []corev1.Toleration{{Key: "", Operator: "Exists"}},
+ PriorityClassName: "high-priority",
TopologySpreadConstraints: []corev1.TopologySpreadConstraint{
{
WhenUnsatisfiable: "DoNotSchedule",
@@ -197,6 +198,7 @@ func Test_applyProxyClassToStatefulSet(t *testing.T) {
wantSS.Spec.Template.Spec.Containers[0].ImagePullPolicy = "IfNotPresent"
wantSS.Spec.Template.Spec.InitContainers[0].Image = "ghcr.io/my-repo/tailscale:v0.01testsomething"
wantSS.Spec.Template.Spec.InitContainers[0].ImagePullPolicy = "IfNotPresent"
+ wantSS.Spec.Template.Spec.PriorityClassName = proxyClassAllOpts.Spec.StatefulSet.Pod.PriorityClassName
gotSS := applyProxyClassToStatefulSet(proxyClassAllOpts, nonUserspaceProxySS.DeepCopy(), new(tailscaleSTSConfig), zl.Sugar())
if diff := cmp.Diff(gotSS, wantSS); diff != "" {