@@ -28,6 +28,7 @@ import (
2828 "math/big"
2929 "net"
3030 "os"
31+ "reflect"
3132 "sort"
3233 "strconv"
3334 "strings"
@@ -2181,6 +2182,51 @@ func (r *ValkeyReconciler) upsertStatefulSet(ctx context.Context, valkey *hyperv
21812182 if valkey .Spec .Image != "" {
21822183 image = valkey .Spec .Image
21832184 }
2185+
2186+ podEnv := []corev1.EnvVar {
2187+ {
2188+ Name : "POD_NAME" ,
2189+ ValueFrom : & corev1.EnvVarSource {
2190+ FieldRef : & corev1.ObjectFieldSelector {
2191+ FieldPath : "metadata.name" ,
2192+ },
2193+ },
2194+ },
2195+ {
2196+ Name : "VALKEY_NODES" ,
2197+ Value : getNodeNames (valkey ),
2198+ },
2199+ {
2200+ Name : "VALKEY_CLUSTER_PREFERRED_ENDPOINT_TYPE" ,
2201+ Value : endpointType ,
2202+ },
2203+ {
2204+ Name : "VALKEY_AOF_ENABLED" ,
2205+ Value : "yes" ,
2206+ },
2207+ {
2208+ Name : "VALKEY_TLS_ENABLED" ,
2209+ Value : tls ,
2210+ },
2211+ {
2212+ Name : "VALKEY_PORT_NUMBER" ,
2213+ Value : "6379" ,
2214+ },
2215+ {
2216+ Name : "POD_IP" ,
2217+ ValueFrom : & corev1.EnvVarSource {
2218+ FieldRef : & corev1.ObjectFieldSelector {
2219+ FieldPath : "status.podIP" ,
2220+ },
2221+ },
2222+ },
2223+ }
2224+ podCommand := []string {
2225+ "sh" ,
2226+ "-c" ,
2227+ "exec valkey-server /valkey/etc/valkey.conf --protected-mode no --cluster-announce-ip $POD_IP" ,
2228+ }
2229+
21842230 sts := & appsv1.StatefulSet {
21852231 ObjectMeta : metav1.ObjectMeta {
21862232 Name : valkey .Name ,
@@ -2252,49 +2298,8 @@ func (r *ValkeyReconciler) upsertStatefulSet(ctx context.Context, valkey *hyperv
22522298 },
22532299 Name : Valkey ,
22542300 ImagePullPolicy : "IfNotPresent" ,
2255- Command : []string {
2256- "sh" ,
2257- "-c" ,
2258- "exec valkey-server /valkey/etc/valkey.conf --protected-mode no --cluster-announce-ip $POD_IP" ,
2259- },
2260- Env : []corev1.EnvVar {
2261- {
2262- Name : "POD_NAME" ,
2263- ValueFrom : & corev1.EnvVarSource {
2264- FieldRef : & corev1.ObjectFieldSelector {
2265- FieldPath : "metadata.name" ,
2266- },
2267- },
2268- },
2269- {
2270- Name : "VALKEY_NODES" ,
2271- Value : getNodeNames (valkey ),
2272- },
2273- {
2274- Name : "VALKEY_CLUSTER_PREFERRED_ENDPOINT_TYPE" ,
2275- Value : endpointType ,
2276- },
2277- {
2278- Name : "VALKEY_AOF_ENABLED" ,
2279- Value : "yes" ,
2280- },
2281- {
2282- Name : "VALKEY_TLS_ENABLED" ,
2283- Value : tls ,
2284- },
2285- {
2286- Name : "VALKEY_PORT_NUMBER" ,
2287- Value : "6379" ,
2288- },
2289- {
2290- Name : "POD_IP" ,
2291- ValueFrom : & corev1.EnvVarSource {
2292- FieldRef : & corev1.ObjectFieldSelector {
2293- FieldPath : "status.podIP" ,
2294- },
2295- },
2296- },
2297- },
2301+ Command : podCommand ,
2302+ Env : podEnv ,
22982303 Ports : []corev1.ContainerPort {
22992304 {
23002305 Name : "tcp-valkey" ,
@@ -2571,6 +2576,15 @@ func (r *ValkeyReconciler) upsertStatefulSet(ctx context.Context, valkey *hyperv
25712576 }
25722577 r .Recorder .Event (valkey , "Normal" , "Updated" , fmt .Sprintf ("StatefulSet %s/%s is updated (exporter image)" , valkey .Namespace , valkey .Name ))
25732578 }
2579+ if ! reflect .DeepEqual (sts .Spec .Template .Spec .Containers [0 ].Command , podCommand ) || ! reflect .DeepEqual (sts .Spec .Template .Spec .Containers [0 ].Env , podEnv ) {
2580+ sts .Spec .Template .Spec .Containers [0 ].Command = podCommand
2581+ sts .Spec .Template .Spec .Containers [0 ].Env = podEnv
2582+ if err := r .Update (ctx , sts ); err != nil {
2583+ logger .Error (err , "failed to update statefulset command/env" )
2584+ return err
2585+ }
2586+ r .Recorder .Event (valkey , "Normal" , "Updated" , fmt .Sprintf ("StatefulSet %s/%s is updated (command/env)" , valkey .Namespace , valkey .Name ))
2587+ }
25742588
25752589 return nil
25762590}
0 commit comments