diff --git a/api/disaggregated/v1/types.go b/api/disaggregated/v1/types.go index 7cc8a7fe..54b3285d 100644 --- a/api/disaggregated/v1/types.go +++ b/api/disaggregated/v1/types.go @@ -172,12 +172,20 @@ type CommonSpec struct { //EnvVars is a slice of environment variables that are added to the pods, the default is empty. EnvVars []corev1.EnvVar `json:"envVars,omitempty"` + //EnvFrom is a list of sources to populate environment variables in the container, the default is empty. + //+optional + EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty"` + //SystemInitialization for fe, be setting system parameters. SystemInitialization *SystemInitialization `json:"systemInitialization,omitempty"` // Multi Secret for pod. // +optional Secrets []Secret `json:"secrets,omitempty"` + + // InitContainers is a list of containers that should be run before the app containers are started. + // +optional + InitContainers []corev1.Container `json:"initContainers,omitempty"` } type SystemInitialization struct { diff --git a/api/doris/v1/types.go b/api/doris/v1/types.go index f6d5a2b6..e95a3a2e 100644 --- a/api/doris/v1/types.go +++ b/api/doris/v1/types.go @@ -207,6 +207,10 @@ type BaseSpec struct { //cnEnvVars is a slice of environment variables that are added to the pods, the default is empty. EnvVars []corev1.EnvVar `json:"envVars,omitempty"` + //EnvFrom is a list of sources to populate environment variables in the container, the default is empty. + //+optional + EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty"` + //+optional //If specified, the pod's scheduling constraints. Affinity *corev1.Affinity `json:"affinity,omitempty"` @@ -240,6 +244,10 @@ type BaseSpec struct { // Multi Secret for pod. // +optional Secrets []Secret `json:"secrets,omitempty"` + + // InitContainers is a list of containers that should be run before the app containers are started. + // +optional + InitContainers []corev1.Container `json:"initContainers,omitempty"` } type SystemInitialization struct { diff --git a/pkg/common/utils/resource/pod.go b/pkg/common/utils/resource/pod.go index 8c923fc0..3f3fd245 100644 --- a/pkg/common/utils/resource/pod.go +++ b/pkg/common/utils/resource/pod.go @@ -96,7 +96,7 @@ func NewPodTemplateSpec(dcr *v1.DorisCluster, config map[string]interface{}, com var volumes []corev1.Volume var si *v1.SystemInitialization var dcrAffinity *corev1.Affinity - var defaultInitContainers []corev1.Container + var InitContainers []corev1.Container var SecurityContext *corev1.PodSecurityContext var skipInit bool switch componentType { @@ -105,21 +105,25 @@ func NewPodTemplateSpec(dcr *v1.DorisCluster, config map[string]interface{}, com si = dcr.Spec.FeSpec.BaseSpec.SystemInitialization dcrAffinity = dcr.Spec.FeSpec.BaseSpec.Affinity SecurityContext = dcr.Spec.FeSpec.BaseSpec.SecurityContext + InitContainers = dcr.Spec.FeSpec.InitContainers case v1.Component_BE: volumes = newVolumesFromBaseSpec(dcr.Spec.BeSpec.BaseSpec, config, componentType) si = dcr.Spec.BeSpec.BaseSpec.SystemInitialization dcrAffinity = dcr.Spec.BeSpec.BaseSpec.Affinity SecurityContext = dcr.Spec.BeSpec.BaseSpec.SecurityContext skipInit = dcr.Spec.BeSpec.SkipDefaultSystemInit + InitContainers = dcr.Spec.BeSpec.InitContainers case v1.Component_CN: si = dcr.Spec.CnSpec.BaseSpec.SystemInitialization dcrAffinity = dcr.Spec.CnSpec.BaseSpec.Affinity SecurityContext = dcr.Spec.CnSpec.BaseSpec.SecurityContext skipInit = dcr.Spec.CnSpec.SkipDefaultSystemInit + InitContainers = dcr.Spec.CnSpec.InitContainers case v1.Component_Broker: si = dcr.Spec.BrokerSpec.BaseSpec.SystemInitialization dcrAffinity = dcr.Spec.BrokerSpec.BaseSpec.Affinity SecurityContext = dcr.Spec.BrokerSpec.BaseSpec.SecurityContext + InitContainers = dcr.Spec.BrokerSpec.InitContainers default: klog.Errorf("NewPodTemplateSpec dorisClusterName %s, namespace %s componentType %s not supported.", dcr.Name, dcr.Namespace, componentType) } @@ -170,7 +174,7 @@ func NewPodTemplateSpec(dcr *v1.DorisCluster, config map[string]interface{}, com Affinity: spec.Affinity.DeepCopy(), Tolerations: spec.Tolerations, HostAliases: spec.HostAliases, - InitContainers: defaultInitContainers, + InitContainers: InitContainers, SecurityContext: SecurityContext, }, } @@ -185,7 +189,7 @@ func NewPodTemplateSpec(dcr *v1.DorisCluster, config map[string]interface{}, com func NewPodTemplateSpecWithCommonSpec(cs *dv1.CommonSpec, componentType dv1.DisaggregatedComponentType) corev1.PodTemplateSpec { var vs []corev1.Volume si := cs.SystemInitialization - var defaultInitContainers []corev1.Container + var InitContainers []corev1.Container vs, _ = appendPodInfoVolumesVolumeMounts(vs, nil) pts := corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ @@ -201,7 +205,7 @@ func NewPodTemplateSpecWithCommonSpec(cs *dv1.CommonSpec, componentType dv1.Disa Affinity: cs.Affinity.DeepCopy(), Tolerations: cs.Tolerations, HostAliases: cs.HostAliases, - InitContainers: defaultInitContainers, + InitContainers: InitContainers, SecurityContext: cs.SecurityContext, Volumes: vs, }, @@ -219,6 +223,7 @@ func NewContainerWithCommonSpec(cs *dv1.CommonSpec) corev1.Container { SecurityContext: cs.ContainerSecurityContext, Resources: cs.ResourceRequirements, VolumeMounts: vms, + EnvFrom: cs.EnvFrom, } return c }