@@ -33,6 +33,7 @@ import (
3333 "github.com/open-telemetry/opentelemetry-operator/internal/autodetect/prometheus"
3434 "github.com/open-telemetry/opentelemetry-operator/internal/config"
3535 "github.com/open-telemetry/opentelemetry-operator/internal/manifests/targetallocator"
36+ "github.com/open-telemetry/opentelemetry-operator/internal/rbac"
3637 taStatus "github.com/open-telemetry/opentelemetry-operator/internal/status/targetallocator"
3738 "github.com/open-telemetry/opentelemetry-operator/pkg/constants"
3839)
@@ -44,6 +45,7 @@ type TargetAllocatorReconciler struct {
4445 scheme * runtime.Scheme
4546 log logr.Logger
4647 config config.Config
48+ reviewer * rbac.Reviewer
4749}
4850
4951// TargetAllocatorReconcilerParams is the set of options to build a new TargetAllocatorReconciler.
@@ -60,8 +62,18 @@ func (r *TargetAllocatorReconciler) getParams(ctx context.Context, instance v1al
6062 if err != nil {
6163 return targetallocator.Params {}, err
6264 }
65+
66+ // Recheck cert-manager RBAC on each reconciliation to handle late-added permissions.
67+ // Only attempt to upgrade from NotAvailable → Available
68+ if r .reviewer != nil && r .config .CertManagerAvailability != certmanager .Available {
69+ if warnings , err := certmanager .CheckCertManagerPermissions (ctx , r .reviewer ); err == nil && warnings == nil {
70+ r .log .V (2 ).Info ("cert-manager permissions detected during reconciliation, upgrading availability" )
71+ r .config .CertManagerAvailability = certmanager .Available
72+ }
73+ }
74+ cfg := r .config
6375 p := targetallocator.Params {
64- Config : r . config ,
76+ Config : cfg ,
6577 Client : r .Client ,
6678 Log : r .log ,
6779 Scheme : r .scheme ,
@@ -124,13 +136,15 @@ func NewTargetAllocatorReconciler(
124136 recorder events.EventRecorder ,
125137 config config.Config ,
126138 logger logr.Logger ,
139+ reviewer * rbac.Reviewer ,
127140) * TargetAllocatorReconciler {
128141 return & TargetAllocatorReconciler {
129142 Client : client ,
130143 log : logger ,
131144 scheme : scheme ,
132145 config : config ,
133146 recorder : recorder ,
147+ reviewer : reviewer ,
134148 }
135149}
136150
0 commit comments