Skip to content

fix: give ArgoCD real resource requests/limits - #54

Merged
nbrieussel merged 2 commits into
mainfrom
feature/platform-resource-requests
Aug 11, 2026
Merged

fix: give ArgoCD real resource requests/limits#54
nbrieussel merged 2 commits into
mainfrom
feature/platform-resource-requests

Conversation

@nbrieussel

@nbrieussel nbrieussel commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • ArgoCD's own components (controller, repoServer, server, redis, applicationSet, notifications) ship resources: {} by default in argo-helm — this root's helm_release.argocd never overrode that.
  • Confirmed live 2026-08-11 on a fresh scaleway-homelab boot: without real requests anywhere in the platform, kube-scheduler has no signal to balance the pool's 2 nodes, and Cluster Autoscaler never sees a Pending pod to justify reaching for the 3rd node — one node ended up with 31 pods vs 12, hit MemoryPressure, and started evicting/crashlooping workloads.
  • Companion PR in gitops: fix: give every requestless platform chart real resource requests/limits gitops#23 — same fix applied to every other platform chart (cert-manager, external-dns, external-secrets, openbao, velero, wireguard).

controller/repoServer get the widest limit-over-request headroom: controller tracks the live state of everything this GitOps repo manages, and repo-server's footprint scales with whatever chart it's rendering (kube-prometheus-stack being the largest synced here).

Test plan

  • terraform fmt -check / terraform validate pass on 10-cluster/scaleway
  • Embedded YAML values heredoc extracted and parsed standalone (valid, all 6 component keys present with expected values)
  • Apply on next scaleway-up and confirm pod distribution across nodes evens out (tracked alongside the gitops PR)

🤖 Generated with Claude Code

https://claude.ai/code/session_01Mqgrku7T7sfPYHvg9fmBMB

Confirmed live 2026-08-11: none of argo-cd's components declare
resources, so kube-scheduler has nothing to balance the pool's 2 nodes
on and Cluster Autoscaler never sees a reason to reach for the 3rd —
a fresh boot piles ~30 pods onto one node and OOMs. Companion fix to
the same problem across the rest of the platform (gitops repo).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mqgrku7T7sfPYHvg9fmBMB
kubectl top pods -n argocd (2026-08-11, two samples ~15min apart)
showed the first pass was anchored on generic sizing rather than this
cluster's reality: argocd-application-controller's limit (512Mi) sat
barely above its observed 405-471Mi, giving it essentially no OOM
headroom — the exact failure mode this fix exists to remove, just
moved from "no request" to "a limit too close to actual usage". CPU
requests were also oversized fleet-wide relative to observed 1-10m
idle usage. Re-derived every value from the live numbers instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mqgrku7T7sfPYHvg9fmBMB
@nbrieussel
nbrieussel marked this pull request as ready for review August 11, 2026 10:21
@nbrieussel
nbrieussel merged commit f8f6ec3 into main Aug 11, 2026
1 check failed
@nbrieussel
nbrieussel deleted the feature/platform-resource-requests branch August 11, 2026 10:21
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