feat(core): Support ServiceAccountName for broker/nameserver/console

Add setting of ServiceAccountName to support installment on OpenShift, because in OpenShift, it will set ServiceAccountName explicitly.
diff --git a/deploy/crds/rocketmq.apache.org_brokers.yaml b/deploy/crds/rocketmq.apache.org_brokers.yaml
index 0913285..783ed48 100644
--- a/deploy/crds/rocketmq.apache.org_brokers.yaml
+++ b/deploy/crds/rocketmq.apache.org_brokers.yaml
@@ -36,6 +36,9 @@
           spec:
             description: BrokerSpec defines the desired state of Broker
             properties:
+              ServiceAccountName:
+                description: ServiceAccountName
+                type: string
               affinity:
                 description: Affinity the pod's scheduling constraints
                 properties:
diff --git a/deploy/crds/rocketmq.apache.org_nameservices.yaml b/deploy/crds/rocketmq.apache.org_nameservices.yaml
index 3f9af7c..0877659 100644
--- a/deploy/crds/rocketmq.apache.org_nameservices.yaml
+++ b/deploy/crds/rocketmq.apache.org_nameservices.yaml
@@ -36,6 +36,9 @@
           spec:
             description: NameServiceSpec defines the desired state of NameService
             properties:
+              ServiceAccountName:
+                description: ServiceAccountName
+                type: string
               affinity:
                 description: Affinity the pod's scheduling constraints
                 properties:
diff --git a/pkg/apis/rocketmq/v1alpha1/broker_types.go b/pkg/apis/rocketmq/v1alpha1/broker_types.go
index 3a7332b..34876ba 100644
--- a/pkg/apis/rocketmq/v1alpha1/broker_types.go
+++ b/pkg/apis/rocketmq/v1alpha1/broker_types.go
@@ -70,6 +70,8 @@
 	NodeSelector map[string]string `json:"nodeSelector,omitempty"`
 	// PriorityClassName indicates the pod's priority
 	PriorityClassName string `json:"priorityClassName,omitempty"`
+	// ServiceAccountName
+	ServiceAccountName string `json:"ServiceAccountName,omitempty"`
 }
 
 // BrokerStatus defines the observed state of Broker
diff --git a/pkg/apis/rocketmq/v1alpha1/nameservice_types.go b/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
index d6ac017..41fd980 100644
--- a/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
+++ b/pkg/apis/rocketmq/v1alpha1/nameservice_types.go
@@ -63,6 +63,8 @@
 	NodeSelector map[string]string `json:"nodeSelector,omitempty"`
 	// PriorityClassName indicates the pod's priority
 	PriorityClassName string `json:"priorityClassName,omitempty"`
+	// ServiceAccountName
+	ServiceAccountName string `json:"ServiceAccountName,omitempty"`
 }
 
 // NameServiceStatus defines the observed state of NameService
diff --git a/pkg/controller/broker/broker_controller.go b/pkg/controller/broker/broker_controller.go
index ab0870d..8145263 100644
--- a/pkg/controller/broker/broker_controller.go
+++ b/pkg/controller/broker/broker_controller.go
@@ -426,11 +426,12 @@
 					Labels: ls,
 				},
 				Spec: corev1.PodSpec{
-					Affinity:          broker.Spec.Affinity,
-					Tolerations:       broker.Spec.Tolerations,
-					NodeSelector:      broker.Spec.NodeSelector,
-					PriorityClassName: broker.Spec.PriorityClassName,
-					ImagePullSecrets:  broker.Spec.ImagePullSecrets,
+					ServiceAccountName: broker.Spec.ServiceAccountName,
+					Affinity:           broker.Spec.Affinity,
+					Tolerations:        broker.Spec.Tolerations,
+					NodeSelector:       broker.Spec.NodeSelector,
+					PriorityClassName:  broker.Spec.PriorityClassName,
+					ImagePullSecrets:   broker.Spec.ImagePullSecrets,
 					Containers: []corev1.Container{{
 						Resources: broker.Spec.Resources,
 						Image:     broker.Spec.BrokerImage,
diff --git a/pkg/controller/console/console_controller.go b/pkg/controller/console/console_controller.go
index f97814e..2fa1313 100644
--- a/pkg/controller/console/console_controller.go
+++ b/pkg/controller/console/console_controller.go
@@ -201,7 +201,9 @@
 					Labels: cr.Spec.ConsoleDeployment.Spec.Template.ObjectMeta.Labels,
 				},
 				Spec: corev1.PodSpec{
-					ImagePullSecrets: cr.Spec.ConsoleDeployment.Spec.Template.Spec.ImagePullSecrets,
+					ServiceAccountName: cr.Spec.ConsoleDeployment.Spec.Template.Spec.ServiceAccountName,
+					Affinity:           cr.Spec.ConsoleDeployment.Spec.Template.Spec.Affinity,
+					ImagePullSecrets:   cr.Spec.ConsoleDeployment.Spec.Template.Spec.ImagePullSecrets,
 					Containers: []corev1.Container{{
 						Resources:       cr.Spec.ConsoleDeployment.Spec.Template.Spec.Containers[0].Resources,
 						Image:           cr.Spec.ConsoleDeployment.Spec.Template.Spec.Containers[0].Image,
diff --git a/pkg/controller/nameservice/nameservice_controller.go b/pkg/controller/nameservice/nameservice_controller.go
index 080a125..cb488bc 100644
--- a/pkg/controller/nameservice/nameservice_controller.go
+++ b/pkg/controller/nameservice/nameservice_controller.go
@@ -350,13 +350,14 @@
 					Labels: ls,
 				},
 				Spec: corev1.PodSpec{
-					Affinity:          nameService.Spec.Affinity,
-					Tolerations:       nameService.Spec.Tolerations,
-					NodeSelector:      nameService.Spec.NodeSelector,
-					PriorityClassName: nameService.Spec.PriorityClassName,
-					HostNetwork:       nameService.Spec.HostNetwork,
-					DNSPolicy:         nameService.Spec.DNSPolicy,
-					ImagePullSecrets:  nameService.Spec.ImagePullSecrets,
+					ServiceAccountName: nameService.Spec.ServiceAccountName,
+					Affinity:           nameService.Spec.Affinity,
+					Tolerations:        nameService.Spec.Tolerations,
+					NodeSelector:       nameService.Spec.NodeSelector,
+					PriorityClassName:  nameService.Spec.PriorityClassName,
+					HostNetwork:        nameService.Spec.HostNetwork,
+					DNSPolicy:          nameService.Spec.DNSPolicy,
+					ImagePullSecrets:   nameService.Spec.ImagePullSecrets,
 					Containers: []corev1.Container{{
 						Resources: nameService.Spec.Resources,
 						Image:     nameService.Spec.NameServiceImage,