Skip to content

Grant fake-workersync the controller authz role so it can manage Workers - #2885

Merged
Max Smythe (maxsmythe) merged 1 commit into
agent-substrate:mainfrom
haiyanmeng:fake-data-plane-controller-authz
Oct 19, 2026
Merged

Max Smythe (maxsmythe) merged 1 commit into
agent-substrate:mainfrom
haiyanmeng:fake-data-plane-controller-authz

Conversation

@haiyanmeng

@haiyanmeng haiyanmeng commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

ate-api-server grants the controller role (list, register and delete Workers) only to --controller-spiffe-id, which by default is ate-controller's identity. On a --fake-data-plane install, fake-workersync manages Workers in place of ate-controller, using its own identity. With authorization enforced, it was denied listing Workers and exited, so the install never became ready.

The fake-data-plane kustomize component now sets fake-workersync as the controller identity.

  • Tests pass
  • Appropriate changes to documentation are included in the PR (none needed)

ate-api-server grants the controller role, which lists, registers and
deletes Workers, only to --controller-spiffe-id, ate-controller's
identity by default. On a --fake-data-plane install fake-workersync
manages Workers in ate-controller's place under its own identity, so
under enforced authorization it was denied listing Workers and exited,
and the install never became ready. The fake-data-plane component now
names fake-workersync as the controller.
@haiyanmeng
haiyanmeng force-pushed the fake-data-plane-controller-authz branch from edb7efe to 71b1057 Compare October 19, 2026 17:48
@haiyanmeng haiyanmeng changed the title Fake data plane installs become ready with authorization enforced Grant fake-workersync the controller authz role so it can manage Workers Oct 19, 2026
@haiyanmeng haiyanmeng added kind/bug Something isn't working / bugfixes area/benchmarking labels Oct 19, 2026
patch: |-
- op: add
path: /spec/template/spec/containers/0/args/-
value: --controller-spiffe-id=spiffe://cluster.local/ns/ate-system/sa/fake-workersync

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 should-fix 🟡 – The controller role doesn't cover every RPC fake-workersync calls. When a pool scales down, retire (cmd/benchmarking/isolate/fake-workersync/controller.go:519) calls ListWorkerActorAssignments, which needs can_list_actor_assignments. In model.fga only viewer has that permission, not controller. Under enforced authorization the call is denied, so retired Workers stay drained and are never deleted. The real ate-controller never makes this call. I'd drop the call from retire rather than widen the production controller role: delete the Worker after drainGrace, since DeleteWorker already releases any Actors still assigned.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Julian Gutierrez Oschmann (@juli4n) , Max Smythe (@maxsmythe) , I will drop the ListWorkerActorAssignments call from fake-workersync in a followup PR.

@maxsmythe Max Smythe (maxsmythe) left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@maxsmythe
Max Smythe (maxsmythe) added this pull request to the merge queue Oct 19, 2026
Merged via the queue into agent-substrate:main with commit cf89fe3 Oct 19, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/benchmarking kind/bug Something isn't working / bugfixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants