Skip to content

fix(k8s): make helm test pods schedulable and probe CubeProxy healthz - #1388

Open
fslongjin wants to merge 1 commit into
masterfrom
fix/helm-test-schedule-and-probe
Open

fix(k8s): make helm test pods schedulable and probe CubeProxy healthz#1388
fslongjin wants to merge 1 commit into
masterfrom
fix/helm-test-schedule-and-probe

Conversation

@fslongjin

Copy link
Copy Markdown
Member

Summary

Supersedes #1272 (contributor went silent after review). Rebased onto current master and simplified the placement model.

helm test pods that only talk to Services / the API now share cube.testPlacement: the union of control-plane and compute taint tolerations, with no nodeSelector. That is what actually unsticks Pending pods on tainted nodes, without pinning a plane that the other topologies do not have.

  • health / cubemastercli / mysql / redis / proxy / dns / node-imagetestPlacement (schedulable on control-only, compute-only, and mixed).
  • node-runtime-testcomputePlacement (hostPath sockets only exist on cube-node hosts). Skipped when cubeNode.enabled=false. Pins runAsUser: 0 / runAsGroup: 0 so a non-root image override cannot silently fail stat().
  • proxy-control-test → probe /admin/healthz with X-Cube-Admin-Token from the release Secret; capture curl exit; assert HTTP 200. No --retry-all-errors.
  • dns-testhelmTest.image (curlimages/curl) + getent ahostsv4 with retries and diagnostics. helmTest.dnsImage stays busybox for node-runtime-test only.

Addresses the #1272 review blockers: missing runAsUser: 0, overstated topology claims, health-test Pending on control-only, cubemastercli-test Pending on compute-only.

Original probe/DNS diagnosis is from #1272 (@try-agaaain).

Test plan

  • helm lint + deploy/kubernetes/chart/scripts/test-helm-test-guards.sh (default, cubeNode.enabled=false, compute-only externalControlPlane, values-single-node.yaml)
  • helm test on a control-plane-tainted single-node cluster with values-single-node.yaml
  • helm test on a multi-node cluster with compute nodes
  • Not yet run on a live cluster beyond chart render guards

Assisted-by: Cursor:Grok-4.6

Made with Cursor

Test pods that only talk to Services/the API now share cube.testPlacement
(both plane taint tolerations, no nodeSelector) so they stay schedulable
on control-only, compute-only, and mixed topologies. node-runtime-test
keeps computePlacement and pins runAsUser 0 for hostPath sockets.
proxy-control-test probes /admin/healthz; dns-test uses getent ahostsv4.

Assisted-by: Cursor:Grok-4.6
Co-authored-by: Cursor <cursoragent@cursor.com>
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.

1 participant