diff --git a/helm-charts/doris-disaggregated/templates/dorisdisaggregatedcluster.yaml b/helm-charts/doris-disaggregated/templates/dorisdisaggregatedcluster.yaml index 9d5bb08f..76b5738f 100644 --- a/helm-charts/doris-disaggregated/templates/dorisdisaggregatedcluster.yaml +++ b/helm-charts/doris-disaggregated/templates/dorisdisaggregatedcluster.yaml @@ -21,7 +21,7 @@ metadata: name: {{ include "doris-disaggregated.name" . }} {{- if .Values.Labels }} labels: - {{- .Values.Labels | nindent 4 }} + {{- toYaml .Values.Labels | nindent 4 }} {{- end }} spec: {{- if .Values.adminUser }} diff --git a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go index 1d8dc359..7d920bf1 100644 --- a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go +++ b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go @@ -76,22 +76,26 @@ func (dcgs *DisaggregatedComputeGroupsController) NewStatefulset(ddc *dv1.DorisD st.Spec.Replicas = cg.Replicas st.Spec.VolumeClaimTemplates = vcts st.Spec.ServiceName = ddc.GetCGServiceName(cg) - pts := dcgs.NewPodTemplateSpec(ddc, matchLabels, cvs, cg) + pts := dcgs.NewPodTemplateSpec(ddc, cvs, cg) st.Spec.Template = pts }() return st } -func (dcgs *DisaggregatedComputeGroupsController) NewPodTemplateSpec(ddc *dv1.DorisDisaggregatedCluster, selector map[string]string, cvs map[string]interface{}, cg *dv1.ComputeGroup) corev1.PodTemplateSpec { +func (dcgs *DisaggregatedComputeGroupsController) getCGPodLabels(ddc *dv1.DorisDisaggregatedCluster, cg *dv1.ComputeGroup) resource.Labels { + selector := dcgs.newCGPodsSelector(ddc.Name, cg.UniqueId) + labels := (resource.Labels)(selector) + labels.AddLabel(cg.Labels) + return labels + +} + +func (dcgs *DisaggregatedComputeGroupsController) NewPodTemplateSpec(ddc *dv1.DorisDisaggregatedCluster, cvs map[string]interface{}, cg *dv1.ComputeGroup) corev1.PodTemplateSpec { pts := resource.NewPodTemplateSpecWithCommonSpec(cg.SkipDefaultSystemInit, &cg.CommonSpec, dv1.DisaggregatedBE) //pod template metadata. - func() { - l := (resource.Labels)(selector) - l.AddLabel(pts.Labels) - pts.Labels = l - }() - + labels := dcgs.getCGPodLabels(ddc, cg) + pts.Labels = labels c := dcgs.NewCGContainer(ddc, cvs, cg) pts.Spec.Containers = append(pts.Spec.Containers, c) @@ -118,7 +122,7 @@ func (dcgs *DisaggregatedComputeGroupsController) NewPodTemplateSpec(ddc *dv1.Do //add last supplementary spec. if add new config in ddc spec and the config need add in pod, use the follow function to add. dcgs.DisaggregatedSubDefaultController.AddClusterSpecForPodTemplate(dv1.DisaggregatedBE, cvs, &ddc.Spec, &pts) - cgUniqueId := selector[dv1.DorisDisaggregatedComputeGroupUniqueId] + cgUniqueId := labels[dv1.DorisDisaggregatedComputeGroupUniqueId] pts.Spec.Affinity = dcgs.ConstructDefaultAffinity(dv1.DorisDisaggregatedComputeGroupUniqueId, cgUniqueId, pts.Spec.Affinity) return pts diff --git a/pkg/controller/sub_controller/disaggregated_cluster/metaservice/statefulset.go b/pkg/controller/sub_controller/disaggregated_cluster/metaservice/statefulset.go index 167de4c9..67463c69 100644 --- a/pkg/controller/sub_controller/disaggregated_cluster/metaservice/statefulset.go +++ b/pkg/controller/sub_controller/disaggregated_cluster/metaservice/statefulset.go @@ -71,7 +71,7 @@ func (dms *DisaggregatedMSController) newStatefulset(ddc *v1.DorisDisaggregatedC st.Spec.Selector = &metav1.LabelSelector{ MatchLabels: matchLabels, } - st.Spec.Template = dms.NewPodTemplateSpec(ddc, matchLabels, confMap) + st.Spec.Template = dms.NewPodTemplateSpec(ddc, confMap) st.Spec.ServiceName = ddc.GetMSServiceName() st.Spec.VolumeClaimTemplates = vcts }() @@ -79,22 +79,25 @@ func (dms *DisaggregatedMSController) newStatefulset(ddc *v1.DorisDisaggregatedC return st } -func (dms *DisaggregatedMSController) NewPodTemplateSpec(ddc *v1.DorisDisaggregatedCluster, selector map[string]string, confMap map[string]interface{}) corev1.PodTemplateSpec { +func (dms *DisaggregatedMSController) getMSPodLabels(ddc *v1.DorisDisaggregatedCluster) resource.Labels { + selector := dms.newMSPodsSelector(ddc.Name) + labels := (resource.Labels)(selector) + labels.AddLabel(ddc.Spec.MetaService.Labels) + return labels +} + +func (dms *DisaggregatedMSController) NewPodTemplateSpec(ddc *v1.DorisDisaggregatedCluster, confMap map[string]interface{}) corev1.PodTemplateSpec { pts := resource.NewPodTemplateSpecWithCommonSpec(false, &ddc.Spec.MetaService.CommonSpec, v1.DisaggregatedMS) //pod template metadata. - func() { - l := (resource.Labels)(selector) - l.AddLabel(pts.Labels) - pts.Labels = l - }() - + labels := dms.getMSPodLabels(ddc) + pts.Labels = labels c := dms.NewMSContainer(ddc, confMap) pts.Spec.Containers = append(pts.Spec.Containers, c) vs, _, _ := dms.BuildVolumesVolumeMountsAndPVCs(confMap, v1.DisaggregatedMS, &ddc.Spec.MetaService.CommonSpec) configVolumes, _ := dms.BuildDefaultConfigMapVolumesVolumeMounts(ddc.Spec.MetaService.ConfigMaps) pts.Spec.Volumes = append(pts.Spec.Volumes, vs...) pts.Spec.Volumes = append(pts.Spec.Volumes, configVolumes...) - pts.Spec.Affinity = dms.ConstructDefaultAffinity(v1.DorisDisaggregatedClusterName, selector[v1.DorisDisaggregatedClusterName], ddc.Spec.MetaService.Affinity) + pts.Spec.Affinity = dms.ConstructDefaultAffinity(v1.DorisDisaggregatedClusterName, labels[v1.DorisDisaggregatedClusterName], ddc.Spec.MetaService.Affinity) if len(ddc.Spec.MetaService.Secrets) != 0 { secretVolumes, _ := resource.GetMultiSecretVolumeAndVolumeMountWithCommonSpec(&ddc.Spec.MetaService.CommonSpec)