Skip to content

feat(sdm): support priorityClassName on the relay and proxy Pods - #98

Open
satdeveloping wants to merge 4 commits into
strongdm:mainfrom
satdeveloping:feat/sdm-relay-priorityclassname
Open

satdeveloping wants to merge 4 commits into
strongdm:mainfrom
satdeveloping:feat/sdm-relay-priorityclassname

Conversation

@satdeveloping

@satdeveloping satdeveloping commented Aug 18, 2026

Copy link
Copy Markdown

Summary

Adds an optional strongdm.deployment.priorityClassName value to the sdm-relay and sdm-proxy charts, rendered into the Deployment's pod spec next to the existing nodeSelector / tolerations.

Motivation

There's currently no way to set a PriorityClass on the relay or proxy Pod via the chart. On a busy cluster these Pods can be preempted or left Pending under node pressure — and because they broker access to in-cluster resources, losing one means losing that access exactly when you're most likely to need it (e.g. during a node roll or an incident). Being able to set e.g. system-cluster-critical (or a custom high-priority class) lets operators protect them.

Changes

Applied identically to both deployments/sdm-relay and deployments/sdm-proxy:

  • values.yaml — new strongdm.deployment.priorityClassName (with @schema description).
  • templates/deployment.yaml — renders priorityClassName only when set ({{- with … }}).
  • values.schema.json — added the matching string property under deployment.
  • values.test.yaml — exercises the new value.
  • Chart.yaml — relay 2.6.42.7.0, proxy 2.7.62.8.0 (minor: additive, opt-in feature).

Backward compatibility

Fully backward-compatible. The value defaults to "", and the template omits the field entirely when empty, so existing installs render byte-for-byte identically.

Testing

Both charts, e.g. for sdm-proxy:

# default: field absent
helm template t deployments/sdm-proxy --set strongdm.auth.clusterKey=x --set strongdm.auth.clusterSecret=y | grep -c priorityClassName        # -> 0

# set: field present on the pod spec
helm template t deployments/sdm-proxy --set strongdm.auth.clusterKey=x --set strongdm.auth.clusterSecret=y \
  --set strongdm.deployment.priorityClassName=system-cluster-critical | grep priorityClassName    # -> priorityClassName: system-cluster-critical

helm lint deployments/sdm-proxy --set strongdm.auth.clusterKey=x --set strongdm.auth.clusterSecret=y   # 0 charts failed

(Equivalent commands pass for sdm-relay with strongdm.auth.relayToken.) Values validate against the updated values.schema.json (helm enforces it during templating).

@satdeveloping
satdeveloping force-pushed the feat/sdm-relay-priorityclassname branch from 8460d2d to 1780e17 Compare August 18, 2026 09:39
@satdeveloping
satdeveloping marked this pull request as ready for review August 18, 2026 12:22
@satdeveloping
satdeveloping requested a review from a team as a code owner August 18, 2026 12:22

@kellenanker7 kellenanker7 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is great, thanks for the contribution!

at the risk of some minor scope creep, could you please make the same change to sdm-proxy as well?

reminder to bump the version in sdm-proxy/Chart.yaml like you did here (I often forget to myself).

@satdeveloping satdeveloping changed the title feat(sdm-relay): support priorityClassName on the relay Pod feat(sdm): support priorityClassName on the relay and proxy Pods Aug 19, 2026
@satdeveloping

Copy link
Copy Markdown
Author

Thanks! Done — mirrored the same change onto sdm-proxy (values.yaml + template + schema + test values), and bumped sdm-proxy/Chart.yaml 2.7.6 → 2.8.0. helm template/helm lint pass for both charts: absent by default, rendered when set.

Adds an optional strongdm.deployment.priorityClassName value, rendered into the Deployment pod spec alongside the existing nodeSelector/tolerations. Lets operators protect the relay from preemption/eviction under node pressure (e.g. system-cluster-critical), which matters because losing the relay means losing brokered cluster access. Empty by default, so existing installs are unchanged. values.schema.json and values.test.yaml updated; chart bumped 2.6.4 -> 2.7.0 (minor).
Mirrors the sdm-relay change for the proxy chart. Adds an optional strongdm.deployment.priorityClassName value, rendered into the Deployment pod spec alongside the existing nodeSelector/tolerations. Lets operators protect the proxy from preemption/eviction under node pressure (e.g. system-cluster-critical). Empty by default, so existing installs are unchanged. values.schema.json and values.test.yaml updated; chart bumped 2.7.6 -> 2.8.0 (minor).
@satdeveloping
satdeveloping force-pushed the feat/sdm-relay-priorityclassname branch from 4d0422d to c62ea8b Compare August 19, 2026 19:57
serviceAccountName: {{ include "strongdm.serviceAccountName" . }}
{{- end }}
terminationGracePeriodSeconds: 10
{{- with .Values.strongdm.deployment.priorityClassName }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry for the nit, but one last request for consistency with the other fields.

could you make these simply:

priorityClassName: {{ .Values.strongdm.deployment.priorityClassName }}

the default "" is valid if applied server-side 👍

{{- end }}
terminationGracePeriodSeconds: 10
{{- with .Values.strongdm.deployment.priorityClassName }}
priorityClassName: {{ . }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as the other comment!

@kellenanker7

Copy link
Copy Markdown
Contributor

@satdeveloping sorry for the delay. I resolved some merge conflicts and requested one last nitpick change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants