@@ -503,9 +503,9 @@ func setSharedVolume(addon *extensionsv1alpha1.Addon, helmJobPodSpec *corev1.Pod
503503}
504504
505505// setInitContainer sets init containers to copy dependent charts to shared volume
506- func setInitContainer (addon * extensionsv1alpha1.Addon , helmJobPodSpec * corev1.PodSpec ) {
506+ func setInitContainer (addon * extensionsv1alpha1.Addon , helmJobPodSpec * corev1.PodSpec ) error {
507507 if ! useLocalCharts (addon ) {
508- return
508+ return nil
509509 }
510510
511511 fromPath := addon .Spec .Helm .ChartsPathInImage
@@ -515,7 +515,7 @@ func setInitContainer(addon *extensionsv1alpha1.Addon, helmJobPodSpec *corev1.Po
515515 copyChartsContainer := corev1.Container {
516516 Name : "copy-charts" ,
517517 Image : intctrlutil .ReplaceImageRegistry (addon .Spec .Helm .ChartsImage ),
518- ImagePullPolicy : corev1 .PullPolicy (viper .GetString (constant .CfgAddonChartsImgPullPolicy )),
518+ ImagePullPolicy : corev1 .PullPolicy (viper .GetString (constant .CfgKeyAddonChartsImgPullPolicy )),
519519 Command : []string {"sh" , "-c" , fmt .Sprintf ("cp %s/* /mnt/charts" , fromPath )},
520520 VolumeMounts : []corev1.VolumeMount {
521521 {
@@ -524,8 +524,11 @@ func setInitContainer(addon *extensionsv1alpha1.Addon, helmJobPodSpec *corev1.Po
524524 },
525525 },
526526 }
527- intctrlutil .InjectZeroResourcesLimitsIfEmpty (& copyChartsContainer )
527+ if err := setAddonJobResourcesOrZero (& copyChartsContainer ); err != nil {
528+ return err
529+ }
528530 helmJobPodSpec .InitContainers = append (helmJobPodSpec .InitContainers , copyChartsContainer )
531+ return nil
529532}
530533
531534func (r * helmTypeInstallStage ) Handle (ctx context.Context ) {
@@ -687,7 +690,10 @@ func (r *helmTypeInstallStage) Handle(ctx context.Context) {
687690 // we will copy the charts from charts image to shared volume. Addon container will use the
688691 // charts from shared volume to install the addon.
689692 setSharedVolume (addon , helmJobPodSpec )
690- setInitContainer (addon , helmJobPodSpec )
693+ if err := setInitContainer (addon , helmJobPodSpec ); err != nil {
694+ r .setRequeueWithErr (err , "" )
695+ return
696+ }
691697
692698 if err := r .reconciler .Create (ctx , helmInstallJob ); err != nil {
693699 r .setRequeueWithErr (err , "" )
@@ -914,7 +920,7 @@ func createHelmJobProto(addon *extensionsv1alpha1.Addon) (*batchv1.Job, error) {
914920 container := corev1.Container {
915921 Name : getJobMainContainerName (addon ),
916922 Image : viper .GetString (constant .KBToolsImage ),
917- ImagePullPolicy : corev1 .PullPolicy (viper .GetString (constant .CfgAddonJobImgPullPolicy )),
923+ ImagePullPolicy : corev1 .PullPolicy (viper .GetString (constant .CfgKeyAddonJobImgPullPolicy )),
918924 Command : []string {"helm" },
919925 Env : []corev1.EnvVar {
920926 {
@@ -932,7 +938,9 @@ func createHelmJobProto(addon *extensionsv1alpha1.Addon) (*batchv1.Job, error) {
932938 },
933939 VolumeMounts : []corev1.VolumeMount {},
934940 }
935- intctrlutil .InjectZeroResourcesLimitsIfEmpty (& container )
941+ if err := setAddonJobResourcesOrZero (& container ); err != nil {
942+ return nil , err
943+ }
936944
937945 helmProtoJob := & batchv1.Job {
938946 ObjectMeta : metav1.ObjectMeta {
@@ -1003,6 +1011,31 @@ func createHelmJobProto(addon *extensionsv1alpha1.Addon) (*batchv1.Job, error) {
10031011 return helmProtoJob , nil
10041012}
10051013
1014+ func getAddonJobResources () (* corev1.ResourceRequirements , error ) {
1015+ value := viper .GetString (constant .CfgKeyAddonJobResources )
1016+ if value == "" {
1017+ return nil , nil
1018+ }
1019+ resources := & corev1.ResourceRequirements {}
1020+ if err := json .Unmarshal ([]byte (value ), resources ); err != nil {
1021+ return nil , err
1022+ }
1023+ return resources , nil
1024+ }
1025+
1026+ func setAddonJobResourcesOrZero (container * corev1.Container ) error {
1027+ resources , err := getAddonJobResources ()
1028+ if err != nil {
1029+ return err
1030+ }
1031+ if resources != nil {
1032+ container .Resources = * resources
1033+ return nil
1034+ }
1035+ intctrlutil .InjectZeroResourcesLimitsIfEmpty (container )
1036+ return nil
1037+ }
1038+
10061039func enabledAddonWithDefaultValues (ctx context.Context , stageCtx * stageCtx ,
10071040 addon * extensionsv1alpha1.Addon , reason , message string ) {
10081041 setInstallSpec := func (di * extensionsv1alpha1.AddonDefaultInstallSpecItem ) {
0 commit comments