aws-samples / aws-samples/appmod-blueprints
kro: changing analysis extraArgs does not trigger a new Argo Rollout
- Dominant language
- Shell
- Stars
- 105
- Forks
- 62
- Avg merge
- 11h 17m
- Merged PRs (30d)
- 76
Description
## Summary
In the progressive-delivery flow (functional/performance gates), the **kro path** does not trigger a new Argo Rollout when the user changes `functionalGate.extraArgs` (e.g. `red` → `orange`) in the `AppmodService` manifest. The KubeVela path works because it bumps `app.oam.dev/publishVersion`, but the kro `AppmodService` has no equivalent trigger.
## Symptom
User changes the analysis arg, commits, and runs `argocd app sync java-dev-cd`, but **no new rollout starts**, so the updated gate never re-runs. Workaround currently required:
```bash
kubectl argo rollouts retry rollout java-webservice -n team-java
# or
kubectl argo rollouts restart java-webservice -n team-java
```
(Reported by a workshop participant on the kro path.)
## Root cause
In `gitops/addons/charts/kro/resource-groups/manifests/appmod-service.yaml`, `schema.spec.functionalGate.extraArgs` is injected **only into the `AnalysisTemplate`** (around line 727), never into the **Rollout** pod template. Changing only `extraArgs` updates the AnalysisTemplate but leaves the Rollout pod spec byte-identical, so Argo Rollouts detects no change and creates no new revision.
## Proposed fixes
1. **RGD fix (preferred, GitOps-native):** propagate a hash/value of `functionalGate.extraArgs` (and `performanceGate.extraArgs`) into a Rollout pod-template annotation, so any analysis-arg change produces a new Rollout revision automatically — no manual kubectl needed.
2. **Content/workshop fix (quick mitigation):** in the kro tab of `content/30_ProgressiveApplicationDelivery/30_function-performance-test-java/`, add an explicit `kubectl argo rollouts restart java-webservice -n team-java` step after the sync, with a note explaining the kro-specific behavior.
## Affected files
- `gitops/addons/charts/kro/resource-groups/manifests/appmod-service.yaml` (RGD)
- `content/30_ProgressiveApplicationDelivery/30_function-performance-test-java/` (workshop content, kro tab)
Contributor guide
Research direction
Start with gitops/addons/charts/kro/resource-groups/manifests/appmod-service.yaml, especially the functionalGate.extraArgs handling around line 727, and compare it with the Rollout pod template. Then inspect the kro tab under content/30_ProgressiveApplicationDelivery/30_function-performance-test-java/. Done means changing either analysis extraArgs and syncing creates a new rollout, or the kro instructions clearly document the required restart workaround.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kubernetes
- Domain
- devops, release
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100