nebari-dev / nebari-dev/rayserve-pack

README: ArgoCD example silently drops Helm pod-spec changes (orgCABundle, sidecars, env, volumes)

Open Beginner friendly
#17 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Makefile
Stars
1
Forks
4
Avg merge
3d 14h
Merged PRs (30d)
5

Description

Summary

The README's On a Nebari cluster (via ArgoCD) section recommends an Argo Application configuration that combines two settings whose interaction silently drops Helm-rendered changes to head/worker pod specs:

  • syncOptions: [..., RespectIgnoreDifferences=true]
  • ignoreDifferences: [{ group: ray.io, kind: RayService, jsonPointers: [/spec/rayClusterConfig, /status] }]

When both are set, Argo's server-side apply skips every field under /spec/rayClusterConfig on the patch path. That includes the head and worker pod templates, where:

  • orgCABundle initContainers / volumes / env / volumeMounts (introduced in #16) live
  • Any head.containerEnv / worker.containerEnv the user sets via values lives
  • Any sidecar / runtimeClassName / nodeSelector / tolerations / resources override lives

Net effect: Argo reports Synced, the rendered chart looks right under helm template, but the live RayService head template has only containers — none of the Helm-set additions reach the cluster.

How we hit it

Just integrated #16 into an Argo gitops deployment using the README's recommended ignoreDifferences block verbatim. The CA ConfigMap mounted fine, the chart re-rendered cleanly with orgCABundle.configMapName: org-ca-bundle, but the head/worker pods never picked up SSL_CERT_FILE. Running:

kubectl get rayservice -o json | jq '.items[0].spec.rayClusterConfig.headGroupSpec.template.spec | keys'

returned ["containers"] — no initContainers, no volumes — despite Argo being on the correct chart SHA and showing Synced.

Took an hour of bisecting (Argo App status, chart re-render verification, live spec inspection) to land on the syncOptions × ignoreDifferences interaction. Dropping RespectIgnoreDifferences=true immediately fixed it — Argo now applies the full rayClusterConfig, drift detection still honors the ignore rules, no permanent OutOfSync.

Background on the trap

ArgoCD docs make this explicit but easy to miss: with SSA, RespectIgnoreDifferences=true extends ignoreDifferences from a comparison-time concept (don't flag drift on this field) to an apply-time concept (don't actually push this field to the server). The README's example sets both — which is the foot-gun.

Proposed fix

Cheapest possible: add a warning to the Important: bullet list immediately below the example, around README.md line ~120:

  • Do not combine RespectIgnoreDifferences=true (in syncOptions) with the broad /spec/rayClusterConfig entry in ignoreDifferences. That combination tells Argo's server-side apply to skip every field under rayClusterConfig on the patch path, silently dropping Helm-rendered changes to head/worker pod templates (env vars, volumes, initContainers, sidecars, orgCABundle, runtimeClassName, etc.). Argo will report Synced and the chart will render correctly under helm template, but the live RayService will not contain the changes. The example above omits RespectIgnoreDifferences=true for this reason — keep it omitted unless you have scoped the ignoreDifferences jsonPointers to specific sub-paths that KubeRay actually mutates (typically only /status and child resources).

…and remove - RespectIgnoreDifferences=true from the recommended syncOptions block in the YAML example.

Stretch (separate issue/PR — not blocking the warning)

The current ignoreDifferences entry of /spec/rayClusterConfig is broader than necessary. KubeRay's controller doesn't typically mutate fields under /spec/rayClusterConfig — its mutations land on /status (already ignored) and on child resources (Service, Pod, RayCluster), some of which are covered by the Service rule. If someone can enumerate the actual mutation set, the rule can be tightened to specific paths — and RespectIgnoreDifferences=true becomes safe to add back if needed for stricter SSA semantics.

Acceptance

  • README's ArgoCD example no longer sets RespectIgnoreDifferences=true
  • Important: bullet list includes the warning above (or equivalent)
  • Optional: link from the warning to ArgoCD's diffing docs section

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Open README.md and find the “On a Nebari cluster (via ArgoCD)” example and its Important bullet list. Remove RespectIgnoreDifferences=true from syncOptions and add the warning described in the issue, optionally linking the ArgoCD diffing documentation. Done means the acceptance checklist is satisfied and the example clearly explains why the broad rayClusterConfig ignore rule must not be combined with that option.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, kubernetes
Domain
documentation
Issue type
Documentation
Difficulty
1/5
Estimated time
Under an hour
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
88/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.