@@ -33,6 +33,7 @@ import (
3333
3434 appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
3535 parametersv1alpha1 "github.com/apecloud/kubeblocks/apis/parameters/v1alpha1"
36+ workloadsv1 "github.com/apecloud/kubeblocks/apis/workloads/v1"
3637 cfgcm "github.com/apecloud/kubeblocks/pkg/configuration/config_manager"
3738 "github.com/apecloud/kubeblocks/pkg/configuration/core"
3839 cfgutil "github.com/apecloud/kubeblocks/pkg/configuration/util"
@@ -46,7 +47,8 @@ import (
4647
4748// BuildReloadActionContainer build the configmgr sidecar container and update it
4849// into PodSpec if configuration reload option is on
49- func BuildReloadActionContainer (resourceCtx * render.ResourceCtx , cluster * appsv1.Cluster , synthesizedComp * component.SynthesizedComponent , cmpd * appsv1.ComponentDefinition ) error {
50+ func BuildReloadActionContainer (resourceCtx * render.ResourceCtx , cluster * appsv1.Cluster ,
51+ synthesizedComp * component.SynthesizedComponent , cmpd * appsv1.ComponentDefinition , itsObj client.Object ) error {
5052 var (
5153 err error
5254 buildParams * cfgcm.CfgManagerBuildParams
@@ -99,6 +101,32 @@ func BuildReloadActionContainer(resourceCtx *render.ResourceCtx, cluster *appsv1
99101 if len (buildParams .ToolsContainers ) > 0 {
100102 podSpec .InitContainers = append (podSpec .InitContainers , buildParams .ToolsContainers ... )
101103 }
104+
105+ getRunningIts := func () * workloadsv1.InstanceSet {
106+ if itsObj == nil {
107+ return nil
108+ }
109+ return itsObj .(* workloadsv1.InstanceSet )
110+ }
111+
112+ // Update the runningITS container in advance to prevent it from being rollback.
113+ if runningITS := getRunningIts (); runningITS != nil {
114+ for i , c := range runningITS .Spec .Template .Spec .Containers {
115+ if c .Name == container .Name {
116+ runningITS .Spec .Template .Spec .Containers [i ].Image = container .Image
117+ break
118+ }
119+ }
120+ for _ , tc := range buildParams .ToolsContainers {
121+ for j , ic := range runningITS .Spec .Template .Spec .InitContainers {
122+ if ic .Name == tc .Name {
123+ runningITS .Spec .Template .Spec .InitContainers [j ].Image = tc .Image
124+ break
125+ }
126+ }
127+ }
128+ }
129+
102130 filter := func (c * corev1.Container ) bool {
103131 names := []string {container .Name }
104132 for _ , cc := range buildParams .ToolsContainers {
0 commit comments