Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

### Changed

- Helm deployed RBAC permissions documented, with unnecessary permissions removed ([#869]).

[#869]: https://github.com/stackabletech/trino-operator/pull/869

## [26.3.0] - 2026-03-16

## [26.3.0-rc1] - 2026-03-16
Expand Down
86 changes: 45 additions & 41 deletions deploy/helm/trino-operator/templates/roles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,49 +6,57 @@ metadata:
labels:
{{- include "operator.labels" . | nindent 4 }}
rules:
# For OPA dependents. Note that OPA it's self is listed here because it's own resource name
# doesn't follow the *clusters convention
# For automatic cluster domain detection (reads kubelet /configz via the proxy subresource)
- apiGroups:
- opa.stackable.tech
- ""
resources:
- regorules
- nodes/proxy
verbs:
- create
- get
- list
- watch
- patch
# Manage core workload resources created per TrinoCluster.
# All are applied via Server-Side Apply (create + patch), tracked for orphan cleanup
# (list + delete), and watched via .owns() in the controller (watch).
# get is required by the ReconciliationPaused strategy, which calls client.get()
# instead of apply_patch().
# - configmaps: role-group config maps and catalog config maps
# - services: role-group headless services and metrics services
- apiGroups:
- ""
resources:
- nodes
- configmaps
- services
verbs:
- create
- delete
- get
- list
- patch
- watch
# For automatic cluster domain detection
# ServiceAccounts are applied via SSA and tracked for orphan cleanup, but are not
# watched by the controller.
- apiGroups:
- ""
resources:
- nodes/proxy
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
# Internal Secrets (shared internal communication key and spooling secret) are created
# via direct client.get_opt() + client.apply_patch() calls, not via cluster_resources.
# They are not tracked for orphan cleanup and not watched by the controller.
- apiGroups:
- ""
resources:
- pods
- configmaps
- secrets
- services
- endpoints
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
# RoleBindings are applied via SSA and tracked for orphan cleanup, but are not
# watched by the controller.
- apiGroups:
- rbac.authorization.k8s.io
resources:
Expand All @@ -59,32 +67,21 @@ rules:
- get
- list
- patch
- update
- watch
# StatefulSets are applied via SSA, tracked for orphan cleanup, and watched via
# .owns() in the controller.
- apiGroups:
- apps
resources:
- statefulsets
verbs:
- get
- create
- delete
- list
- patch
- update
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
# PodDisruptionBudgets are applied via SSA and tracked for orphan cleanup, but are
# not watched by the controller.
- apiGroups:
- policy
resources:
Expand All @@ -95,8 +92,6 @@ rules:
- get
- list
- patch
- update
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
Expand All @@ -112,39 +107,43 @@ rules:
- list
- watch
{{- end }}
# Listeners are applied via SSA and tracked for orphan cleanup, but are not watched
# by the controller.
- apiGroups:
- listeners.stackable.tech
resources:
- listeners
verbs:
- create
- delete
- get
- list
- watch
- patch
- create
- delete
# For publishing Kubernetes events on reconciliation errors and status changes
- apiGroups:
- events.k8s.io
resources:
- events
verbs:
- create
- patch
# The primary TrinoCluster CRD: watched by Controller::new(), reconciled on changes
- apiGroups:
- {{ include "operator.name" . }}.stackable.tech
resources:
- {{ include "operator.name" . }}clusters
verbs:
- get
- list
- patch
- watch
# For writing reconciliation status back to the TrinoCluster via apply_patch_status()
- apiGroups:
- {{ include "operator.name" . }}.stackable.tech
resources:
- {{ include "operator.name" . }}clusters/status
verbs:
- patch
# Read-only access to S3Connection resources referenced in catalog definitions
- apiGroups:
- s3.stackable.tech
resources:
Expand All @@ -153,6 +152,8 @@ rules:
- get
- list
- watch
# TrinoCatalog resources are watched via .watches() to trigger reconciliation of any
# TrinoCluster that references the changed catalog
- apiGroups:
- trino.stackable.tech
resources:
Expand All @@ -161,6 +162,8 @@ rules:
- get
- list
- watch
# AuthenticationClass resources are watched via .watches() to trigger reconciliation
# of any TrinoCluster that references the changed AuthenticationClass
- apiGroups:
- authentication.stackable.tech
resources:
Expand All @@ -169,6 +172,7 @@ rules:
- get
- list
- watch
# For binding the product ClusterRole to per-cluster ServiceAccounts via RoleBindings
- apiGroups:
- rbac.authorization.k8s.io
resources:
Expand Down
Loading