Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

- Helm deployed RBAC permissions documented, with unnecessary permissions removed ([#916]).
Comment thread
NickLarsenNZ marked this conversation as resolved.
Outdated

[#916]: https://github.com/stackabletech/nifi-operator/pull/916

## [26.3.0] - 2026-03-16

## [26.3.0-rc1] - 2026-03-16
Expand Down
70 changes: 46 additions & 24 deletions deploy/helm/nifi-operator/templates/roles.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,55 @@ metadata:
labels:
{{- include "operator.labels" . | nindent 4 }}
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- watch
# For automatic cluster domain detection
- apiGroups:
- ""
resources:
- nodes/proxy
verbs:
- get
# Manage core workload resources created per NifiCluster.
# All resources are applied via Server-Side Apply (create + patch), fetched when
# reconciliation is paused (get), and tracked for orphan cleanup (list + delete).
# configmaps: rolegroup configuration; watched by the controller via .owns()/.watches()
# services: rolegroup headless/metrics services and optional reporting-task service;
# watched by the controller via .owns()
- apiGroups:
- ""
resources:
- pods
- configmaps
- services
- endpoints
- secrets
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
# serviceaccounts: one ServiceAccount per NifiCluster (built by build_rbac_resources);
# applied via SSA + orphan cleanup; not watched by the controller
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- delete
- get
- list
- patch
# secrets: sensitive-properties key and (when OIDC) admin-password secret;
# looked up with get_opt and created with client.create() — not tracked by
# cluster_resources, so no list/delete needed
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- create
# rolebindings: one RoleBinding per NifiCluster (built by build_rbac_resources);
# applied via SSA + orphan cleanup; not watched by the controller
- apiGroups:
- rbac.authorization.k8s.io
resources:
Expand All @@ -46,20 +64,21 @@ rules:
- get
- list
- patch
- update
- watch
# statefulsets: one StatefulSet per role group; applied via SSA + orphan cleanup;
# watched by the controller via .owns()
- apiGroups:
- apps
resources:
- statefulsets
verbs:
- get
- create
- delete
- get
- list
- patch
- update
- watch
# jobs: optional reporting-task Job created when spec.clusterConfig.createReportingTaskJob
# is enabled (NiFi 1.x only); applied via SSA + orphan cleanup; not watched by the controller
- apiGroups:
- batch
resources:
Expand All @@ -70,8 +89,8 @@ rules:
- get
- list
- patch
- update
- watch
# poddisruptionbudgets: one PDB per NifiCluster role (when pdb.enabled);
# applied via SSA + orphan cleanup; not watched by the controller
- apiGroups:
- policy
resources:
Expand All @@ -82,8 +101,6 @@ rules:
- get
- list
- patch
- update
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
Expand All @@ -99,39 +116,43 @@ rules:
- list
- watch
{{- end }}
# For reporting controller reconciliation results as Kubernetes Events
- apiGroups:
- events.k8s.io
resources:
- events
verbs:
- create
- patch
# listeners: one Listener per NifiCluster role (via build_group_listener);
# applied via SSA + orphan cleanup; not watched by the controller
- apiGroups:
- listeners.stackable.tech
resources:
- listeners
verbs:
- create
- delete
- get
- list
- watch
- patch
- create
- delete
# Primary CRD: list + watch for the controller, get for direct lookups
- apiGroups:
- {{ include "operator.name" . }}.stackable.tech
resources:
- {{ include "operator.name" . }}clusters
verbs:
- get
- list
- patch
- watch
# Status subresource: patched via client.apply_patch_status() after each reconciliation
- apiGroups:
- {{ include "operator.name" . }}.stackable.tech
resources:
- {{ include "operator.name" . }}clusters/status
verbs:
- patch
# AuthenticationClass: read for resolving authentication configuration
- apiGroups:
- authentication.stackable.tech
resources:
Expand All @@ -140,6 +161,7 @@ rules:
- get
- list
- watch
# Required to bind the product ClusterRole to per-cluster ServiceAccounts
- apiGroups:
- rbac.authorization.k8s.io
resources:
Expand Down
Loading