From ad11fa71947529b35a7b058e6e88c4c2c44dd550 Mon Sep 17 00:00:00 2001 From: dhoover103 Date: Thu, 8 May 2025 11:58:30 -0400 Subject: [PATCH 1/4] Added reconcilers for service account, role, and role binding --- internal/reconcilers/role.go | 51 ++++++++++++++++++++++++ internal/reconcilers/rolebinding.go | 55 ++++++++++++++++++++++++++ internal/reconcilers/serviceaccount.go | 44 +++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 internal/reconcilers/role.go create mode 100644 internal/reconcilers/rolebinding.go create mode 100644 internal/reconcilers/serviceaccount.go diff --git a/internal/reconcilers/role.go b/internal/reconcilers/role.go new file mode 100644 index 0000000..293fb47 --- /dev/null +++ b/internal/reconcilers/role.go @@ -0,0 +1,51 @@ +package reconcilers + +import ( + "context" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/intstr" + rbacv1 "k8s.io/api/rbac/v1" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + logf "sigs.k8s.io/controller-runtime/pkg/log" +) + +type RoleReconciler struct { + client.Client + Scheme *runtime.Scheme +} + +func NewRoleReconciler(client client.Client, scheme *runtime.Scheme) *RoleReconciler { + return &RoleReconciler{ + Client: client, + Scheme: scheme, + } +} + +func (r *RoleReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { + log := logf.FromContext(ctx) + role := &rbacv1.Role{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-role", Namespace: doclingServe.Namespace,}} + _, err := controllerutil.CreateOrUpdate(ctx, r.Client, role, func() error { + labels := labelsForDocling(doclingServe.Name) + role.Labels = labels + role.Rules := []rbacv1.PolicyRule( + APIGroups: []string{"security.openshift.io"}, + Resources: []string{"securitycontextcontraints"}, + ResourceName: []string{"restricted-v2"}, + Verbs: []string{"use"}, + ) + _ = ctrl.SetControllerReference(doclingServe, role, r.Scheme) + return nil + }) + if err != nil { + log.Error(err, "Error creating Role", "Role.Namespace", role.Namespace, "Role.Name", role.Name) + return true, err + } + + log.Info("Successfully created Role", "Role.Namespace", role.Namespace, "Role.Name", Role.Name) + return false, nil +} \ No newline at end of file diff --git a/internal/reconcilers/rolebinding.go b/internal/reconcilers/rolebinding.go new file mode 100644 index 0000000..9df84cb --- /dev/null +++ b/internal/reconcilers/rolebinding.go @@ -0,0 +1,55 @@ +package reconcilers + +import ( + "context" + + "github.io/opdev/docling-operator/api/v1alpha1" + rbacv1 "k8s.io/api/rbac/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + logf "sigs.k8s.io/controller-runtime/pkg/log" +) + +type RoleBindingReconciler struct { + client.Client + Scheme *runtime.Scheme +} + +func NewRoleBindingReconciler(client client.Client, scheme *runtime.Scheme) *RoleBindingReconciler { + return &RoleBindingReconciler{ + Client: client, + Scheme: scheme, + } +} + +func (r *RoleBindingReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { + log := logf.FromContext(ctx) + rolebinding := &rbacv1.RoleBinding{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-roleBinding", Namespace: doclingServe.Namespace}} + _, err := controllerutil.CreateOrUpdate(ctx, r.Client, rolebinding, func() error { + labels := labelsForDocling(doclingServe.Name) + rolebinding.Labels = labels + rolebinding.RoleRef = rbacv1.RoleRef{ + APIGroup: "rbac.authorization.k8s.io", + Kind: "Role", + Name: doclingServe.Name + "-role", + } + rolebinding.Subjects = []rbacv1.Subject{ + Kind: "ServiceAccount", + Name: doclingServe.Name + "-serviceaccount", + Namespace: doclingServe.Namespace, + } + + _ = ctrl.SetControllerReference(doclingServe, rolebinding, r.Scheme) + return nil + }) + if err != nil { + log.Error(err, "Error creating RoleBinding", "RoleBinding.Namespace", rolebinding.Namespace, "RoleBinding.Name", rolebinding.Name) + return true, err + } + + log.Info("Successfully created RoleBinding", "RoleBinding.Namespace", rolebinding.Namespace, "RoleBinding.Name", rolebinding.Name) + return false, nil +} diff --git a/internal/reconcilers/serviceaccount.go b/internal/reconcilers/serviceaccount.go new file mode 100644 index 0000000..8f1f034 --- /dev/null +++ b/internal/reconcilers/serviceaccount.go @@ -0,0 +1,44 @@ +package reconcilers + +import ( + "context" + + "github.io/opdev/docling-operator/api/v1alpha1" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + logf "sigs.k8s.io/controller-runtime/pkg/log" +) + +type ServiceAccountReconciler struct { + client.Client + Scheme *runtime.Scheme +} + +func NewServiceAccountReconciler(client client.Client, scheme *runtime.Scheme) *ServiceAccountReconciler { + return &ServiceAccountReconciler{ + Client: client, + Scheme: scheme, + } +} + +func (r *ServiceAccountReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { + log := logf.FromContext(ctx) + serviceaccount := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-serviceaccount", Namespace: doclingServe.Namespace}} + _, err := controllerutil.CreateOrUpdate(ctx, r.Client, serviceaccount, func() error { + labels := labelsForDocling(doclingServe.Name) + serviceaccount.Labels = labels + _ = ctrl.SetControllerReference(doclingServe, serviceaccount, r.Scheme) + return nil + }) + if err != nil { + log.Error(err, "Error creating Service Account", "ServiceAccount.Namespace", serviceaccount.Namespace, "ServiceAccount.Name", serviceaccount.Name) + return true, err + } + + log.Info("Successfully created ServiceAccount", "ServiceAccount.Namespace", serviceaccount.Namespace, "ServiceAccount.Name", serviceaccount.Name) + return false, nil +} From a351836896244ea3fb622a8e77f02a3895838b6c Mon Sep 17 00:00:00 2001 From: dhoover103 Date: Thu, 8 May 2025 13:39:06 -0400 Subject: [PATCH 2/4] Added permissions for roles/rolebindings/serviceaccounts, added calls to create role/rolebinding/serviceaccount to controller, added service account to the deployment, and fixed syntax errors on the role and rolebinding reconsilers --- config/rbac/role.yaml | 14 +++++++++++ .../controller/doclingserve_controller.go | 3 +++ internal/reconcilers/deployment.go | 1 + internal/reconcilers/role.go | 25 +++++++++---------- internal/reconcilers/rolebinding.go | 4 +-- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 3b8dc07..3ea51d9 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -21,6 +21,7 @@ rules: resources: - pods - services + - serviceaccounts verbs: - create - get @@ -60,3 +61,16 @@ rules: - routes/custom-host verbs: - '*' +- apiGroups: + - rbac.authorization.k8s.io/v1 + resources: + - roles + - rolebindings + verbs: + - create + - delete + - get + - watch + - update + - list + - patch diff --git a/internal/controller/doclingserve_controller.go b/internal/controller/doclingserve_controller.go index 8f6b21b..cf649e6 100644 --- a/internal/controller/doclingserve_controller.go +++ b/internal/controller/doclingserve_controller.go @@ -73,6 +73,9 @@ func (r *DoclingServeReconciler) Reconcile(ctx context.Context, req ctrl.Request } resourceReconcilers := []reconcilers.Reconciler{ + reconcilers.NewServiceAccountReconciler(r.Client, r.Scheme), + reconcilers.NewRoleReconciler(r.Client, r.Scheme), + reconcilers.NewRoleBindingReconciler(r.Client, r.Scheme), reconcilers.NewDeploymentReconciler(r.Client, r.Scheme), reconcilers.NewServiceReconciler(r.Client, r.Scheme), reconcilers.NewRouteReconciler(r.Client, r.Scheme), diff --git a/internal/reconcilers/deployment.go b/internal/reconcilers/deployment.go index 7353f75..9a05f9c 100644 --- a/internal/reconcilers/deployment.go +++ b/internal/reconcilers/deployment.go @@ -46,6 +46,7 @@ func (r *DeploymentReconciler) Reconcile(ctx context.Context, doclingServe *v1al Labels: labels, }, Spec: corev1.PodSpec{ + ServiceAccountName: doclingServe.Name + "-serviceaccount", Containers: []corev1.Container{ { Image: doclingServe.Spec.APIServer.Image, diff --git a/internal/reconcilers/role.go b/internal/reconcilers/role.go index 293fb47..82ef143 100644 --- a/internal/reconcilers/role.go +++ b/internal/reconcilers/role.go @@ -3,11 +3,10 @@ package reconcilers import ( "context" - corev1 "k8s.io/api/core/v1" + "github.io/opdev/docling-operator/api/v1alpha1" + rbacv1 "k8s.io/api/rbac/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/util/intstr" - rbacv1 "k8s.io/api/rbac/v1" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" @@ -19,7 +18,7 @@ type RoleReconciler struct { Scheme *runtime.Scheme } -func NewRoleReconciler(client client.Client, scheme *runtime.Scheme) *RoleReconciler { +func NewRoleReconciler(client client.Client, scheme *runtime.Scheme) *RoleReconciler { return &RoleReconciler{ Client: client, Scheme: scheme, @@ -28,16 +27,16 @@ func NewRoleReconciler(client client.Client, scheme *runtime.Scheme) *Rol func (r *RoleReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { log := logf.FromContext(ctx) - role := &rbacv1.Role{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-role", Namespace: doclingServe.Namespace,}} + role := &rbacv1.Role{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-role", Namespace: doclingServe.Namespace}} _, err := controllerutil.CreateOrUpdate(ctx, r.Client, role, func() error { labels := labelsForDocling(doclingServe.Name) role.Labels = labels - role.Rules := []rbacv1.PolicyRule( - APIGroups: []string{"security.openshift.io"}, - Resources: []string{"securitycontextcontraints"}, - ResourceName: []string{"restricted-v2"}, - Verbs: []string{"use"}, - ) + role.Rules = []rbacv1.PolicyRule{{ + APIGroups: []string{"security.openshift.io"}, + Resources: []string{"securitycontextcontraints"}, + ResourceNames: []string{"restricted-v2"}, + Verbs: []string{"use"}, + }} _ = ctrl.SetControllerReference(doclingServe, role, r.Scheme) return nil }) @@ -46,6 +45,6 @@ func (r *RoleReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.D return true, err } - log.Info("Successfully created Role", "Role.Namespace", role.Namespace, "Role.Name", Role.Name) + log.Info("Successfully created Role", "Role.Namespace", role.Namespace, "Role.Name", role.Name) return false, nil -} \ No newline at end of file +} diff --git a/internal/reconcilers/rolebinding.go b/internal/reconcilers/rolebinding.go index 9df84cb..8fd4f0b 100644 --- a/internal/reconcilers/rolebinding.go +++ b/internal/reconcilers/rolebinding.go @@ -36,11 +36,11 @@ func (r *RoleBindingReconciler) Reconcile(ctx context.Context, doclingServe *v1a Kind: "Role", Name: doclingServe.Name + "-role", } - rolebinding.Subjects = []rbacv1.Subject{ + rolebinding.Subjects = []rbacv1.Subject{{ Kind: "ServiceAccount", Name: doclingServe.Name + "-serviceaccount", Namespace: doclingServe.Namespace, - } + }} _ = ctrl.SetControllerReference(doclingServe, rolebinding, r.Scheme) return nil From cfafbc8f39e9e11b92042a03d23ba154bb403549 Mon Sep 17 00:00:00 2001 From: dhoover103 Date: Fri, 9 May 2025 11:20:06 -0400 Subject: [PATCH 3/4] Made some simplifications and syntax changes to better align to proper go style, and added rbac changes to the rbac generation code --- config/rbac/role.yaml | 15 +---- .../controller/doclingserve_controller.go | 4 +- internal/reconcilers/deployment.go | 2 +- internal/reconcilers/role.go | 50 ----------------- internal/reconcilers/rolebinding.go | 55 ------------------- .../{serviceaccount.go => service_account.go} | 15 ++--- 6 files changed, 11 insertions(+), 130 deletions(-) delete mode 100644 internal/reconcilers/role.go delete mode 100644 internal/reconcilers/rolebinding.go rename internal/reconcilers/{serviceaccount.go => service_account.go} (66%) diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 3ea51d9..d5e695a 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -20,8 +20,8 @@ rules: - "" resources: - pods - - services - serviceaccounts + - services verbs: - create - get @@ -61,16 +61,3 @@ rules: - routes/custom-host verbs: - '*' -- apiGroups: - - rbac.authorization.k8s.io/v1 - resources: - - roles - - rolebindings - verbs: - - create - - delete - - get - - watch - - update - - list - - patch diff --git a/internal/controller/doclingserve_controller.go b/internal/controller/doclingserve_controller.go index cf649e6..48ffcdf 100644 --- a/internal/controller/doclingserve_controller.go +++ b/internal/controller/doclingserve_controller.go @@ -45,7 +45,7 @@ type DoclingServeReconciler struct { // +kubebuilder:rbac:groups=docling.github.io,resources=doclingserves/status,verbs=get;update;patch // +kubebuilder:rbac:groups=docling.github.io,resources=doclingserves/finalizers,verbs=update // +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=core,resources=pods;services,verbs=update;create;get;list;watch +// +kubebuilder:rbac:groups=core,resources=pods;services;serviceaccounts,verbs=update;create;get;list;watch // +kubebuilder:rbac:groups=route.openshift.io,resources=routes;routes/custom-host,verbs=* // Reconcile is part of the main kubernetes reconciliation loop which aims to @@ -74,8 +74,6 @@ func (r *DoclingServeReconciler) Reconcile(ctx context.Context, req ctrl.Request resourceReconcilers := []reconcilers.Reconciler{ reconcilers.NewServiceAccountReconciler(r.Client, r.Scheme), - reconcilers.NewRoleReconciler(r.Client, r.Scheme), - reconcilers.NewRoleBindingReconciler(r.Client, r.Scheme), reconcilers.NewDeploymentReconciler(r.Client, r.Scheme), reconcilers.NewServiceReconciler(r.Client, r.Scheme), reconcilers.NewRouteReconciler(r.Client, r.Scheme), diff --git a/internal/reconcilers/deployment.go b/internal/reconcilers/deployment.go index 9a05f9c..6fae9e4 100644 --- a/internal/reconcilers/deployment.go +++ b/internal/reconcilers/deployment.go @@ -46,7 +46,7 @@ func (r *DeploymentReconciler) Reconcile(ctx context.Context, doclingServe *v1al Labels: labels, }, Spec: corev1.PodSpec{ - ServiceAccountName: doclingServe.Name + "-serviceaccount", + ServiceAccountName: serviceAccountName, Containers: []corev1.Container{ { Image: doclingServe.Spec.APIServer.Image, diff --git a/internal/reconcilers/role.go b/internal/reconcilers/role.go deleted file mode 100644 index 82ef143..0000000 --- a/internal/reconcilers/role.go +++ /dev/null @@ -1,50 +0,0 @@ -package reconcilers - -import ( - "context" - - "github.io/opdev/docling-operator/api/v1alpha1" - rbacv1 "k8s.io/api/rbac/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - logf "sigs.k8s.io/controller-runtime/pkg/log" -) - -type RoleReconciler struct { - client.Client - Scheme *runtime.Scheme -} - -func NewRoleReconciler(client client.Client, scheme *runtime.Scheme) *RoleReconciler { - return &RoleReconciler{ - Client: client, - Scheme: scheme, - } -} - -func (r *RoleReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { - log := logf.FromContext(ctx) - role := &rbacv1.Role{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-role", Namespace: doclingServe.Namespace}} - _, err := controllerutil.CreateOrUpdate(ctx, r.Client, role, func() error { - labels := labelsForDocling(doclingServe.Name) - role.Labels = labels - role.Rules = []rbacv1.PolicyRule{{ - APIGroups: []string{"security.openshift.io"}, - Resources: []string{"securitycontextcontraints"}, - ResourceNames: []string{"restricted-v2"}, - Verbs: []string{"use"}, - }} - _ = ctrl.SetControllerReference(doclingServe, role, r.Scheme) - return nil - }) - if err != nil { - log.Error(err, "Error creating Role", "Role.Namespace", role.Namespace, "Role.Name", role.Name) - return true, err - } - - log.Info("Successfully created Role", "Role.Namespace", role.Namespace, "Role.Name", role.Name) - return false, nil -} diff --git a/internal/reconcilers/rolebinding.go b/internal/reconcilers/rolebinding.go deleted file mode 100644 index 8fd4f0b..0000000 --- a/internal/reconcilers/rolebinding.go +++ /dev/null @@ -1,55 +0,0 @@ -package reconcilers - -import ( - "context" - - "github.io/opdev/docling-operator/api/v1alpha1" - rbacv1 "k8s.io/api/rbac/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - ctrl "sigs.k8s.io/controller-runtime" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" - logf "sigs.k8s.io/controller-runtime/pkg/log" -) - -type RoleBindingReconciler struct { - client.Client - Scheme *runtime.Scheme -} - -func NewRoleBindingReconciler(client client.Client, scheme *runtime.Scheme) *RoleBindingReconciler { - return &RoleBindingReconciler{ - Client: client, - Scheme: scheme, - } -} - -func (r *RoleBindingReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { - log := logf.FromContext(ctx) - rolebinding := &rbacv1.RoleBinding{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-roleBinding", Namespace: doclingServe.Namespace}} - _, err := controllerutil.CreateOrUpdate(ctx, r.Client, rolebinding, func() error { - labels := labelsForDocling(doclingServe.Name) - rolebinding.Labels = labels - rolebinding.RoleRef = rbacv1.RoleRef{ - APIGroup: "rbac.authorization.k8s.io", - Kind: "Role", - Name: doclingServe.Name + "-role", - } - rolebinding.Subjects = []rbacv1.Subject{{ - Kind: "ServiceAccount", - Name: doclingServe.Name + "-serviceaccount", - Namespace: doclingServe.Namespace, - }} - - _ = ctrl.SetControllerReference(doclingServe, rolebinding, r.Scheme) - return nil - }) - if err != nil { - log.Error(err, "Error creating RoleBinding", "RoleBinding.Namespace", rolebinding.Namespace, "RoleBinding.Name", rolebinding.Name) - return true, err - } - - log.Info("Successfully created RoleBinding", "RoleBinding.Namespace", rolebinding.Namespace, "RoleBinding.Name", rolebinding.Name) - return false, nil -} diff --git a/internal/reconcilers/serviceaccount.go b/internal/reconcilers/service_account.go similarity index 66% rename from internal/reconcilers/serviceaccount.go rename to internal/reconcilers/service_account.go index 8f1f034..6bb37e0 100644 --- a/internal/reconcilers/serviceaccount.go +++ b/internal/reconcilers/service_account.go @@ -18,6 +18,8 @@ type ServiceAccountReconciler struct { Scheme *runtime.Scheme } +const serviceAccountName = "docling-serve" + func NewServiceAccountReconciler(client client.Client, scheme *runtime.Scheme) *ServiceAccountReconciler { return &ServiceAccountReconciler{ Client: client, @@ -27,18 +29,17 @@ func NewServiceAccountReconciler(client client.Client, scheme *runtime.Scheme) * func (r *ServiceAccountReconciler) Reconcile(ctx context.Context, doclingServe *v1alpha1.DoclingServe) (bool, error) { log := logf.FromContext(ctx) - serviceaccount := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: doclingServe.Name + "-serviceaccount", Namespace: doclingServe.Namespace}} - _, err := controllerutil.CreateOrUpdate(ctx, r.Client, serviceaccount, func() error { - labels := labelsForDocling(doclingServe.Name) - serviceaccount.Labels = labels - _ = ctrl.SetControllerReference(doclingServe, serviceaccount, r.Scheme) + serviceAccount := &corev1.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: serviceAccountName, Namespace: doclingServe.Namespace}} + _, err := controllerutil.CreateOrUpdate(ctx, r.Client, serviceAccount, func() error { + serviceAccount.Labels = labelsForDocling(doclingServe.Name) + _ = ctrl.SetControllerReference(doclingServe, serviceAccount, r.Scheme) return nil }) if err != nil { - log.Error(err, "Error creating Service Account", "ServiceAccount.Namespace", serviceaccount.Namespace, "ServiceAccount.Name", serviceaccount.Name) + log.Error(err, "Error creating Service Account", "ServiceAccount.Namespace", serviceAccount.Namespace, "ServiceAccount.Name", serviceAccount.Name) return true, err } - log.Info("Successfully created ServiceAccount", "ServiceAccount.Namespace", serviceaccount.Namespace, "ServiceAccount.Name", serviceaccount.Name) + log.Info("Successfully created ServiceAccount", "ServiceAccount.Namespace", serviceAccount.Namespace, "ServiceAccount.Name", serviceAccount.Name) return false, nil } From 2dc5893d3a5c072f38fc8f136862350a1bd10c39 Mon Sep 17 00:00:00 2001 From: dhoover103 <50597688+dhoover103@users.noreply.github.com> Date: Fri, 9 May 2025 14:36:18 -0400 Subject: [PATCH 4/4] Update internal/reconcilers/service_account.go Co-authored-by: Adam Cornett --- internal/reconcilers/service_account.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/reconcilers/service_account.go b/internal/reconcilers/service_account.go index 6bb37e0..57a64b1 100644 --- a/internal/reconcilers/service_account.go +++ b/internal/reconcilers/service_account.go @@ -36,7 +36,7 @@ func (r *ServiceAccountReconciler) Reconcile(ctx context.Context, doclingServe * return nil }) if err != nil { - log.Error(err, "Error creating Service Account", "ServiceAccount.Namespace", serviceAccount.Namespace, "ServiceAccount.Name", serviceAccount.Name) + log.Error(err, "Error creating ServiceAccount", "ServiceAccount.Namespace", serviceAccount.Namespace, "ServiceAccount.Name", serviceAccount.Name) return true, err }