diff --git a/api/v1beta1/doriscluster_types.go b/api/v1beta1/doriscluster_types.go index e7fec88..ee201d8 100644 --- a/api/v1beta1/doriscluster_types.go +++ b/api/v1beta1/doriscluster_types.go @@ -81,6 +81,10 @@ type DorisClusterSpec struct { // +optional Affinity *corev1.Affinity `json:"affinity,omitempty"` + // NodeSelector of the Doris cluster. + // +optional + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + // Tolerations are applied to Doris cluster pods, allowing pods to be scheduled onto nodes with matching taints. // +optional Tolerations []corev1.Toleration `json:"tolerations,omitempty"` @@ -206,6 +210,10 @@ type DorisComponentSpec struct { // +optional ServiceAccount string `json:"serviceAccount,omitempty"` + // NodeSelector of the component. + // +optional + NodeSelector map[string]string `json:"nodeSelector,omitempty"` + // Affinity for pod scheduling of Doris cluster. // +optional Affinity *corev1.Affinity `json:"affinity,omitempty"` diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go index d7ff339..a88562a 100644 --- a/api/v1beta1/zz_generated.deepcopy.go +++ b/api/v1beta1/zz_generated.deepcopy.go @@ -489,6 +489,13 @@ func (in *DorisClusterSpec) DeepCopyInto(out *DorisClusterSpec) { *out = new(v1.Affinity) (*in).DeepCopyInto(*out) } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } if in.Tolerations != nil { in, out := &in.Tolerations, &out.Tolerations *out = make([]v1.Toleration, len(*in)) @@ -572,6 +579,13 @@ func (in *DorisComponentSpec) DeepCopyInto(out *DorisComponentSpec) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } if in.Affinity != nil { in, out := &in.Affinity, &out.Affinity *out = new(v1.Affinity) diff --git a/config/crd/bases/al-assad.github.io_dorisclusters.yaml b/config/crd/bases/al-assad.github.io_dorisclusters.yaml index 416afad..9e3ba42 100644 --- a/config/crd/bases/al-assad.github.io_dorisclusters.yaml +++ b/config/crd/bases/al-assad.github.io_dorisclusters.yaml @@ -2210,6 +2210,10 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object + nodeSelector: + additionalProperties: + type: string + type: object priorityClassName: type: string replicas: @@ -4069,6 +4073,10 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object + nodeSelector: + additionalProperties: + type: string + type: object priorityClassName: type: string replicas: @@ -5928,6 +5936,10 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object + nodeSelector: + additionalProperties: + type: string + type: object priorityClassName: type: string replicas: @@ -7785,6 +7797,10 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object + nodeSelector: + additionalProperties: + type: string + type: object priorityClassName: type: string replicas: @@ -7871,6 +7887,10 @@ spec: type: object x-kubernetes-map-type: atomic type: array + nodeSelector: + additionalProperties: + type: string + type: object priorityClassName: type: string serviceAccount: diff --git a/internal/transformer/be_resources.go b/internal/transformer/be_resources.go index 127a0f4..19aef33 100644 --- a/internal/transformer/be_resources.go +++ b/internal/transformer/be_resources.go @@ -293,6 +293,7 @@ func MakeBeStatefulSet(cr *dapi.DorisCluster, scheme *runtime.Scheme) *appv1.Sta InitContainers: []corev1.Container{initContainer}, ImagePullSecrets: cr.Spec.ImagePullSecrets, ServiceAccountName: util.StringFallback(cr.Spec.BE.ServiceAccount, cr.Spec.ServiceAccount), + NodeSelector: util.MapFallback(cr.Spec.BE.NodeSelector, cr.Spec.NodeSelector), Affinity: util.PointerFallback(cr.Spec.BE.Affinity, cr.Spec.Affinity), Tolerations: util.ArrayFallback(cr.Spec.BE.Tolerations, cr.Spec.Tolerations), PriorityClassName: util.StringFallback(cr.Spec.BE.PriorityClassName, cr.Spec.PriorityClassName), diff --git a/internal/transformer/broker_resources.go b/internal/transformer/broker_resources.go index 9b32686..cf03280 100644 --- a/internal/transformer/broker_resources.go +++ b/internal/transformer/broker_resources.go @@ -201,6 +201,7 @@ func MakeBrokerStatefulSet(cr *dapi.DorisCluster, scheme *runtime.Scheme) *appv1 Containers: containers, ImagePullSecrets: cr.Spec.ImagePullSecrets, ServiceAccountName: util.StringFallback(cr.Spec.Broker.ServiceAccount, cr.Spec.ServiceAccount), + NodeSelector: util.MapFallback(cr.Spec.Broker.NodeSelector, cr.Spec.NodeSelector), Affinity: util.PointerFallback(cr.Spec.Broker.Affinity, cr.Spec.Affinity), Tolerations: util.ArrayFallback(cr.Spec.Broker.Tolerations, cr.Spec.Tolerations), PriorityClassName: util.StringFallback(cr.Spec.Broker.PriorityClassName, cr.Spec.PriorityClassName), diff --git a/internal/transformer/cn_resources.go b/internal/transformer/cn_resources.go index 68fad0c..fd12d04 100644 --- a/internal/transformer/cn_resources.go +++ b/internal/transformer/cn_resources.go @@ -270,6 +270,7 @@ func MakeCnStatefulSet(cr *dapi.DorisCluster, scheme *runtime.Scheme) *appv1.Sta InitContainers: []corev1.Container{initContainer}, ImagePullSecrets: cr.Spec.ImagePullSecrets, ServiceAccountName: util.StringFallback(cr.Spec.CN.ServiceAccount, cr.Spec.ServiceAccount), + NodeSelector: util.MapFallback(cr.Spec.CN.NodeSelector, cr.Spec.NodeSelector), Affinity: util.PointerFallback(cr.Spec.CN.Affinity, cr.Spec.Affinity), Tolerations: util.ArrayFallback(cr.Spec.CN.Tolerations, cr.Spec.Tolerations), PriorityClassName: util.StringFallback(cr.Spec.CN.PriorityClassName, cr.Spec.PriorityClassName), diff --git a/internal/transformer/fe_resources.go b/internal/transformer/fe_resources.go index b40bafa..d4fe34b 100644 --- a/internal/transformer/fe_resources.go +++ b/internal/transformer/fe_resources.go @@ -308,6 +308,7 @@ func MakeFeStatefulSet(cr *dapi.DorisCluster, scheme *runtime.Scheme) *appv1.Sta Containers: containers, ImagePullSecrets: cr.Spec.ImagePullSecrets, ServiceAccountName: util.StringFallback(cr.Spec.FE.ServiceAccount, cr.Spec.ServiceAccount), + NodeSelector: util.MapFallback(cr.Spec.FE.NodeSelector, cr.Spec.NodeSelector), Affinity: util.PointerFallback(cr.Spec.FE.Affinity, cr.Spec.Affinity), Tolerations: util.ArrayFallback(cr.Spec.FE.Tolerations, cr.Spec.Tolerations), PriorityClassName: util.StringFallback(cr.Spec.FE.PriorityClassName, cr.Spec.PriorityClassName),