@@ -1045,7 +1045,15 @@ func (f *RisingWaveObjectFactory) setupMetaContainer(container *corev1.Container
1045
1045
container .Name = "meta"
1046
1046
container .Args = []string {"meta-node" }
1047
1047
container .Ports = f .portsForMetaContainer ()
1048
- container .Env = append (container .Env , f .envsForMetaArgs ()... )
1048
+
1049
+ // merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1050
+ mergedVars := f .envsForMetaArgs ()
1051
+ for _ , env := range container .Env {
1052
+ mergedVars = mergeListWhenKeyEquals (mergedVars , env , func (a , b * corev1.EnvVar ) bool {
1053
+ return a .Name == b .Name
1054
+ })
1055
+ }
1056
+ container .Env = mergedVars
1049
1057
1050
1058
for _ , env := range f .envsForStateStore () {
1051
1059
container .Env = mergeListWhenKeyEquals (container .Env , env , func (a , b * corev1.EnvVar ) bool {
@@ -1364,7 +1372,15 @@ func (f *RisingWaveObjectFactory) portsForFrontendContainer() []corev1.Container
1364
1372
func (f * RisingWaveObjectFactory ) setupFrontendContainer (container * corev1.Container ) {
1365
1373
container .Name = "frontend"
1366
1374
container .Args = []string {"frontend-node" }
1367
- container .Env = append (container .Env , f .envsForFrontendArgs ()... )
1375
+
1376
+ // merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1377
+ mergedVars := f .envsForFrontendArgs ()
1378
+ for _ , env := range container .Env {
1379
+ mergedVars = mergeListWhenKeyEquals (mergedVars , env , func (a , b * corev1.EnvVar ) bool {
1380
+ return a .Name == b .Name
1381
+ })
1382
+ }
1383
+ container .Env = mergedVars
1368
1384
container .Ports = f .portsForFrontendContainer ()
1369
1385
1370
1386
container .VolumeMounts = mergeListWhenKeyEquals (container .VolumeMounts , f .volumeMountForConfig (), func (a , b * corev1.VolumeMount ) bool {
@@ -1393,7 +1409,15 @@ func (f *RisingWaveObjectFactory) setupComputeContainer(container *corev1.Contai
1393
1409
1394
1410
cpuLimit := int64 (math .Ceil (container .Resources .Limits .Cpu ().AsApproximateFloat64 ()))
1395
1411
memLimit , _ := container .Resources .Limits .Memory ().AsInt64 ()
1396
- container .Env = append (container .Env , f .envsForComputeArgs (cpuLimit , memLimit )... )
1412
+
1413
+ // merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1414
+ mergedVars := f .envsForComputeArgs (cpuLimit , memLimit )
1415
+ for _ , env := range container .Env {
1416
+ mergedVars = mergeListWhenKeyEquals (mergedVars , env , func (a , b * corev1.EnvVar ) bool {
1417
+ return a .Name == b .Name
1418
+ })
1419
+ }
1420
+ container .Env = mergedVars
1397
1421
container .Ports = f .portsForComputeContainer ()
1398
1422
1399
1423
for _ , env := range f .envsForStateStore () {
@@ -1425,7 +1449,15 @@ func (f *RisingWaveObjectFactory) portsForCompactorContainer() []corev1.Containe
1425
1449
func (f * RisingWaveObjectFactory ) setupCompactorContainer (container * corev1.Container ) {
1426
1450
container .Name = "compactor"
1427
1451
container .Args = []string {"compactor-node" }
1428
- container .Env = append (container .Env , f .envsForCompactorArgs ()... )
1452
+
1453
+ // merge the vars, and use the container env vars(set in template) to replace the generated default vars, if key equals.
1454
+ mergedVars := f .envsForCompactorArgs ()
1455
+ for _ , env := range container .Env {
1456
+ mergedVars = mergeListWhenKeyEquals (mergedVars , env , func (a , b * corev1.EnvVar ) bool {
1457
+ return a .Name == b .Name
1458
+ })
1459
+ }
1460
+ container .Env = mergedVars
1429
1461
container .Ports = f .portsForCompactorContainer ()
1430
1462
1431
1463
for _ , env := range f .envsForStateStore () {
@@ -1468,14 +1500,26 @@ func (f *RisingWaveObjectFactory) setupConnectorContainer(container *corev1.Cont
1468
1500
1469
1501
memLimits := container .Resources .Limits .Memory ().Value ()
1470
1502
if memLimits != 0 {
1471
- container .Env = append (container .Env , corev1.EnvVar {
1472
- Name : envs .JavaOpts ,
1473
- Value : fmt .Sprintf ("-Xmx%d" , memLimits ),
1474
- })
1475
- container .Env = append (container .Env , corev1.EnvVar {
1476
- Name : envs .RWConnectorNodePrometheusPort ,
1477
- Value : fmt .Sprintf ("%d" , consts .ConnectorMetricsPort ),
1478
- })
1503
+
1504
+ var mergedVars = []corev1.EnvVar {
1505
+ {
1506
+ Name : envs .JavaOpts ,
1507
+ Value : fmt .Sprintf ("-Xmx%d" , memLimits ),
1508
+ },
1509
+ {
1510
+ Name : envs .RWConnectorNodePrometheusPort ,
1511
+ Value : fmt .Sprintf ("%d" , consts .ConnectorMetricsPort ),
1512
+ },
1513
+ }
1514
+
1515
+ // ensure the container env not override by generated env.
1516
+ for _ , env := range container .Env {
1517
+ mergedVars = mergeListWhenKeyEquals (mergedVars , env , func (a , b * corev1.EnvVar ) bool {
1518
+ return a .Name == b .Name
1519
+ })
1520
+ }
1521
+
1522
+ container .Env = mergedVars
1479
1523
}
1480
1524
1481
1525
container .VolumeMounts = mergeListWhenKeyEquals (container .VolumeMounts , f .volumeMountForConfig (), func (a , b * corev1.VolumeMount ) bool {
0 commit comments