@@ -36,6 +36,7 @@ import (
3636
3737 appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
3838 parametersv1alpha1 "github.com/apecloud/kubeblocks/apis/parameters/v1alpha1"
39+ workloadsv1 "github.com/apecloud/kubeblocks/apis/workloads/v1"
3940 "github.com/apecloud/kubeblocks/pkg/constant"
4041 "github.com/apecloud/kubeblocks/pkg/controller/component"
4142 "github.com/apecloud/kubeblocks/pkg/controller/factory"
@@ -333,7 +334,8 @@ func ReloadStaticParameters(pd *parametersv1alpha1.ParametersDefinitionSpec) boo
333334
334335// BuildReloadActionContainer build the configmgr sidecar container and update it
335336// into PodSpec if configuration reload option is on
336- func BuildReloadActionContainer (resourceCtx * render.ResourceCtx , cluster * appsv1.Cluster , synthesizedComp * component.SynthesizedComponent , cmpd * appsv1.ComponentDefinition ) error {
337+ func BuildReloadActionContainer (resourceCtx * render.ResourceCtx , cluster * appsv1.Cluster ,
338+ synthesizedComp * component.SynthesizedComponent , cmpd * appsv1.ComponentDefinition , itsObj client.Object ) error {
337339 var (
338340 err error
339341 buildParams * cfgcm.CfgManagerBuildParams
@@ -384,6 +386,32 @@ func BuildReloadActionContainer(resourceCtx *render.ResourceCtx, cluster *appsv1
384386 if len (buildParams .ToolsContainers ) > 0 {
385387 podSpec .InitContainers = append (podSpec .InitContainers , buildParams .ToolsContainers ... )
386388 }
389+
390+ getRunningIts := func () * workloadsv1.InstanceSet {
391+ if itsObj == nil {
392+ return nil
393+ }
394+ return itsObj .(* workloadsv1.InstanceSet )
395+ }
396+
397+ // Update the runningITS container in advance to prevent it from being rollback.
398+ if runningITS := getRunningIts (); runningITS != nil {
399+ for i , c := range runningITS .Spec .Template .Spec .Containers {
400+ if c .Name == container .Name {
401+ runningITS .Spec .Template .Spec .Containers [i ].Image = container .Image
402+ break
403+ }
404+ }
405+ for _ , tc := range buildParams .ToolsContainers {
406+ for j , ic := range runningITS .Spec .Template .Spec .InitContainers {
407+ if ic .Name == tc .Name {
408+ runningITS .Spec .Template .Spec .InitContainers [j ].Image = tc .Image
409+ break
410+ }
411+ }
412+ }
413+ }
414+
387415 filter := func (c * corev1.Container ) bool {
388416 names := []string {container .Name }
389417 for _ , cc := range buildParams .ToolsContainers {
0 commit comments