Skip to content

fix(spectre): add watch verb to spectre-test Role for kubectl logs -f [sc-17583]#288

Open
devkoriel wants to merge 1 commit intomainfrom
sc-17583-spectre-role-watch-verb
Open

fix(spectre): add watch verb to spectre-test Role for kubectl logs -f [sc-17583]#288
devkoriel wants to merge 1 commit intomainfrom
sc-17583-spectre-role-watch-verb

Conversation

@devkoriel
Copy link
Copy Markdown
Contributor

Summary

Add watch verb to the spectre-test Role. One-line change plus chart version bump (0.3.5 → 0.3.6).

Why

ArgoCD Sync hooks in app-of-apps use

kubectl logs --tail=0 -f \$POD_NAME | grep -m 1 "tag=DATA_POINT_STORE"

to gate progressive rollouts. The follow-mode stream (-f) needs watch verb on pods/pods/log for RBAC-strict clusters / newer kubectl. The bundled spectre-test Role was ["get", "list"] only.

The app-of-apps layer currently works around this by duplicating a custom check-logs SA + Role + RoleBinding (with watch) inside extraObjects — that's dead-code bloat. Once this lands, app-of-apps can delete all that and use the chart-provided SA directly. Context: Discord thread with @WesleyCharlesBlake 2026-04-21.

Diff

 rules:
 - apiGroups: [""]
   resources: ["pods", "pods/log"]
-  verbs: ["get", "list"]
+  verbs: ["get", "list", "watch"]
  • version: 0.3.50.3.6 in Chart.yaml.

Not in scope

  • validator chart already has watch on its own Role (charts/validator/templates/role.yaml:8,11). No change needed.
  • app-of-apps cleanup of legacy check-logs extraObjects — follow-up PR, depends on this version being published.

Test plan

  • ct lint passes
  • ct install passes in kind cluster
  • After merge, chart-releaser publishes spectre-0.3.6 to GHCR + chronicleprotocol.github.io/charts
  • Follow-up app-of-apps PR can then reference the new chart version via the existing targetRevision: '*.*.*'

Refs:

  • sc-17583
  • app-of-apps PR #1239 (closing — superseded by this approach per @WesleyCharlesBlake's review)

…f` [sc-17583]

ArgoCD Sync hooks in app-of-apps (`check-logs`) use
`kubectl logs --tail=0 -f $POD_NAME | grep -m 1 ...` to gate progressive
rollouts. The bundled `spectre-test` ServiceAccount binds to a Role with
verbs ["get", "list"] on pods and pods/log — missing `watch`, which the
follow-mode stream depends on in newer kubectl clients and RBAC-strict
clusters.

Adds `watch` so the hook works against spectre-test without the app-of-apps
layer having to duplicate a custom SA/Role/RoleBinding in extraObjects.

Bumps chart version 0.3.5 -> 0.3.6.

Validator chart already has this verb on its own Role (see
charts/validator/templates/role.yaml:8,11). No change needed there.

Companion work: app-of-apps PR (forthcoming) removes the legacy check-logs
SA/Role/RoleBinding bloat from prod-relay / prod-vao-relay / staging-relay /
staging-feed / stage-vao-relay appsets once this chart version is published.
@devkoriel devkoriel self-assigned this Apr 21, 2026
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