From 1f33fdbb79d46be81b2d60404f637b736b21ace6 Mon Sep 17 00:00:00 2001 From: catpineapple Date: Mon, 21 Apr 2025 18:02:58 +0800 Subject: [PATCH] ddc_work_load_group --- api/disaggregated/v1/types.go | 7 +++++++ .../computegroups/statefulset.go | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/api/disaggregated/v1/types.go b/api/disaggregated/v1/types.go index 7cc8a7fe..e79113b2 100644 --- a/api/disaggregated/v1/types.go +++ b/api/disaggregated/v1/types.go @@ -89,6 +89,13 @@ type ComputeGroup struct { //the unique identifier of compute group, first register in fe will use UniqueId as cluster name. UniqueId string `json:"uniqueId"` + // EnableWorkloadGroup is a switch that determines whether the doris cluster enables the workload group. + // Default value is 'false'. + // Enabling it means that the container must be started in privileged mode. + // Please confirm whether the host machine and k8s cluster allow it. + // Doris workloadgroup reference document: https://doris.apache.org/docs/admin-manual/resource-admin/workload-group + EnableWorkloadGroup bool `json:"enableWorkloadGroup,omitempty"` + CommonSpec `json:",inline"` } diff --git a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go index c37a2800..b0c83d2f 100644 --- a/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go +++ b/pkg/controller/sub_controller/disaggregated_cluster/computegroups/statefulset.go @@ -18,12 +18,14 @@ package computegroups import ( + "fmt" dv1 "github.com/apache/doris-operator/api/disaggregated/v1" "github.com/apache/doris-operator/pkg/common/utils/resource" sub "github.com/apache/doris-operator/pkg/controller/sub_controller" appv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/utils/pointer" "strconv" ) @@ -120,6 +122,14 @@ func (dcgs *DisaggregatedComputeGroupsController) NewPodTemplateSpec(ddc *dv1.Do } func (dcgs *DisaggregatedComputeGroupsController) NewCGContainer(ddc *dv1.DorisDisaggregatedCluster, cvs map[string]interface{}, cg *dv1.ComputeGroup) corev1.Container { + + if cg.EnableWorkloadGroup { + if cg.ContainerSecurityContext == nil { + cg.ContainerSecurityContext = &corev1.SecurityContext{} + } + cg.ContainerSecurityContext.Privileged = pointer.Bool(true) + } + c := resource.NewContainerWithCommonSpec(&cg.CommonSpec) c.Lifecycle = resource.LifeCycleWithPreStopScript(c.Lifecycle, sub.GetDisaggregatedPreStopScript(dv1.DisaggregatedBE)) cmd, args := sub.GetDisaggregatedCommand(dv1.DisaggregatedBE) @@ -183,5 +193,11 @@ func (dcgs *DisaggregatedComputeGroupsController) newSpecificEnvs(ddc *dv1.Doris ) } + if cg.EnableWorkloadGroup { + cgEnvs = append(cgEnvs, + corev1.EnvVar{Name: resource.ENABLE_WORKLOAD_GROUP, Value: fmt.Sprintf("%t", cg.EnableWorkloadGroup)}, + ) + } + return cgEnvs }