Repository navigation
fix(observability): let argocd replace the jaeger deployment - #251
Merged
Merged
Conversation
ArgoCD syncs server-side, and on eks-dev the Recreate strategy from #250 was rejected because the live Deployment kept its RollingUpdate defaults: Deployment.apps "jaeger" is invalid: spec.strategy.rollingUpdate: Forbidden: may not be specified when strategy type is 'Recreate'. The contract requires the per-resource sync option Replace=true and fails: FAIL: Jaeger's Deployment must carry argocd.argoproj.io/sync-options Replace=true
Juanmadiaz45
approved these changes
Sep 28, 2026
EstebanGZam
approved these changes
Sep 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
infrastructure/jaeger/jaeger-allinone.yamlcarriesargocd.argoproj.io/sync-options: Replace=true.tests/contract/observability.shrequires that sync option.Why
#250 set
strategy: Recreateso Jaeger can restart despite Badger's lock. ArgoCD synced it oneks-dev, and the API server rejected it:The Application syncs with
ServerSideApply=true. A server-side apply merges the manifest into the live object, which keeps therollingUpdatedefaults the API server filled in when the Deployment was created, and those are invalid next toRecreate. Replacing the object drops them. Jaeger therefore still runs the old pod listening on127.0.0.1:4317, beside a new pod that crash-loops on the Badger lock.Tasks
gitops specs/006-observability-platform-foundation T058 (added and delivered here).
How it is verified
microservice-app-ai-agents/scripts/check-mcp.sh gitops .passes. No MCP server covers Argo CD, so the source is Argo CD's own documentation at the vendored version,docs/user-guide/sync-options.mdatv3.5.0(read withgh api). The section "Replace Resource Instead Of Applying Changes" saysReplace=true"can also be configured at individual resource level" with this exact annotation, and line 358 says "Replace=truetakes precedence overServerSideApply=true."Risk and rollback
ArgoCD replaces the Deployment object once. Under
Recreate, the old pod stops and releases the Badger lock, and the new pod starts with the0.0.0.0OTLP endpoints from #248. The spans on the PVC are kept. The documentation warns thatReplacecan recreate resources; for a single-replica Deployment on a persistent volume that means the same short gapRecreatealready accepts. Rollback is a revert of the merge commit.What this PR does not do
Merge method: merge commit. This PR carries a Spec-Driven Development test/fix pair (docs #40).
Approval required: one maintainer approval (EstebanGZam or Juanmadiaz45).
🤖 Generated with Claude Code