Skip to content

fix(charts): grant the operator the RBAC its own feature flags need - #36

Merged
pigri merged 1 commit into
mainfrom
fix/operator-rbac-gaps
Sep 17, 2026
Merged

pigri merged 1 commit into
mainfrom
fix/operator-rbac-gaps

Conversation

@pigri

@pigri pigri commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Enabling an operator feature via values did not grant the permissions that
feature needs, so the east-west producers came up silently non-functional on a
default install — the controller starts, the list/watch is forbidden, and it
reconciles nothing.

Each new ClusterRole rule is gated on the same value that turns the feature
on
, so the flag and the grant cannot drift apart.

synapse-operator (1.5.1 → 1.6.0)

  • ingresses/status (get/update/patch) — --publish-status-address writes
    .status.loadBalancer.ingress; without it the write is forbidden and
    kubectl get ingress never shows an address.
  • New operator.gatewayAPI value drives both the --gateway-api flag and its
    Gateway API RBAC (read + status on gatewayclasses/gateways/httproutes).

synapse-stack (0.9.2 → 0.10.0)

  • operator.ingress.gatewayAPI, mirroring the standalone chart. Gated on
    and ingress.enabled gatewayAPI, since --gateway-api is only passed to the
    ingress-mode Deployment.
  • pods for IdentityProducer; namespaces + networkpolicies for
    EdgeProducer, gated on identityProducer.enabled / edgeProducer.enabled.

Gateway API stays opt-in and off by default: its CRDs are not present on every
cluster, and an unconditional grant is misleading in an RBAC audit.

Notes

  • No operator version change. Both charts already target 0.1.11, and both
    --gateway-api and --publish-status-address exist in that release, so no
    chart passes a flag its pinned image would reject.
  • The stack chart already granted ingresses / ingressclasses /
    ingresses/status unconditionally, so only the genuinely-new rules are added
    there rather than duplicating those.

Testing

  • helm lint passes on both charts.
  • helm template with gatewayAPI=true renders the --gateway-api arg and
    the Gateway API rules; at default values both are absent from the output.

Enabling a feature without its permissions left ingress-mode and the
east-west producers silently non-functional on a default install. Gate
each ClusterRole rule on the same value that turns the feature on, so
the flag and the grant cannot drift apart:

  - ingresses/status, needed by --publish-status-address
  - Gateway API read + status, behind a new operator.gatewayAPI value
    that also drives the --gateway-api flag
  - pods for IdentityProducer, namespaces/networkpolicies for
    EdgeProducer

Gateway API stays opt-in because its CRDs are not present on every
cluster and an unconditional grant misleads an RBAC audit.
@pigri
pigri merged commit cc2683d into main Sep 17, 2026
2 checks passed
@pigri
pigri deleted the fix/operator-rbac-gaps branch September 17, 2026 08:23
@linear-code

linear-code Bot commented Sep 17, 2026

Copy link
Copy Markdown

SYN-223

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