Skip to content

http proxy: apply mission node affinity + tolerations to the proxy pod#413

Merged
sisuresh merged 2 commits into
stellar:mainfrom
Jonathan-Eid:jonathan/http-proxy-node-constraints
Jul 20, 2026
Merged

http proxy: apply mission node affinity + tolerations to the proxy pod#413
sisuresh merged 2 commits into
stellar:mainfrom
Jonathan-Eid:jonathan/http-proxy-node-constraints

Conversation

@Jonathan-Eid

@Jonathan-Eid Jonathan-Eid commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

What

  • Apply the mission's node affinity + tolerations to the HTTP proxy Deployment's pod (ToHttpProxyDeployment), matching the core pods it fronts.

Why

  • Proxy pods were getting provisioned on the ASG nodes, now they run on the same karpenter nodes as the core/catchup pods

Fix

V1PodSpec(
    containers = [| container |],
    volumes = [| volume |],
    ?affinity = self.Affinity(),
    tolerations = self.Tolerations()
)

Testing

Validation after merge

  • A large mission (e.g. LoadGenerationWithTxSetLimit) runs its proxy pod on the mission's tainted node pool; no proxy not ready timeouts under concurrent load.

🤖 Generated with Claude Code

The scalable nginx HTTP proxy Deployment's pod carried no affinity/tolerations,
so it could only schedule on untainted capacity. On a busy cluster where the
mission's node pool is tainted/dedicated (e.g. --require-node-labels=purpose:largetests
--tolerate-node-taints=largetests), the proxy stayed Pending -> 'proxy not ready
after 60 attempts' -> formation build failed. Mirror the core pods' placement
(self.Affinity() + self.Tolerations()) so the proxy lands on the same pool it fronts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 20, 2026 19:41

Copilot AI 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.

Pull request overview

Applies mission scheduling constraints to HTTP proxy pods so they can run on the same dedicated node pool as core pods.

Changes:

  • Adds mission affinity and tolerations to the proxy pod specification.
  • Documents the scheduling rationale.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/FSLibrary/StellarKubeSpecs.fs
Regression guard for the placement fix -- existing tests only exercise the core
pod template, so they would not catch the proxy dropping affinity/tolerations
again. Builds a config with require-node-labels + tolerate-node-taints and
asserts ToHttpProxyDeployment().Spec.Template.Spec carries both.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sisuresh
sisuresh merged commit fc3814a into stellar:main Jul 20, 2026
3 checks passed
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.

3 participants