@@ -84,6 +84,30 @@ func Retry(backoffLimit int, sleep time.Duration, f func() error) (err error) {
8484 return fmt .Errorf ("retry failed after %d attempts (took %d seconds), last error: %s" , backoffLimit , int (elapsed .Seconds ()), err )
8585}
8686
87+ // CreateWorkerSpecificHelmChart merges global worker chart values with cluster-specific values
88+ func CreateWorkerSpecificHelmChart (globalChart HelmChart , cluster Cluster ) HelmChart {
89+ // Start with a copy of the global chart
90+ workerChart := HelmChart {
91+ ChartName : globalChart .ChartName ,
92+ Version : globalChart .Version ,
93+ Values : make (map [string ]interface {}),
94+ }
95+
96+ // Copy global values first
97+ for k , v := range globalChart .Values {
98+ workerChart .Values [k ] = v
99+ }
100+
101+ // Override with cluster-specific values if they exist
102+ if cluster .HelmValues != nil {
103+ for k , v := range cluster .HelmValues {
104+ workerChart .Values [k ] = v
105+ }
106+ }
107+
108+ return workerChart
109+ }
110+
87111func generateWorkerValuesFile (cluster Cluster , valuesFile string , config Configuration , insecureMetrics bool ) {
88112 var secrets map [string ]string
89113 err := Retry (3 , 1 * time .Second , func () (err error ) {
@@ -96,7 +120,11 @@ func generateWorkerValuesFile(cluster Cluster, valuesFile string, config Configu
96120 if err != nil {
97121 log .Fatalf ("Unable to fetch secrets\n %s" , err )
98122 }
99- err = generateValuesFile (kubesliceDirectory + "/" + valuesFile , & config .HelmChartConfiguration .WorkerChart , fmt .Sprintf (workerValuesTemplate + generateImagePullSecretsValue (config .HelmChartConfiguration .ImagePullSecret ), secrets ["namespace" ], secrets ["controllerEndpoint" ], secrets ["ca.crt" ], secrets ["token" ], insecureMetrics , cluster .Name , cluster .ControlPlaneAddress ))
123+
124+ // Create a worker-specific helm chart configuration
125+ workerChart := CreateWorkerSpecificHelmChart (config .HelmChartConfiguration .WorkerChart , cluster )
126+
127+ err = generateValuesFile (kubesliceDirectory + "/" + valuesFile , & workerChart , fmt .Sprintf (workerValuesTemplate + generateImagePullSecretsValue (config .HelmChartConfiguration .ImagePullSecret ), secrets ["namespace" ], secrets ["controllerEndpoint" ], secrets ["ca.crt" ], secrets ["token" ], insecureMetrics , cluster .Name , cluster .ControlPlaneAddress ))
100128 if err != nil {
101129 log .Fatalf ("%s %s" , util .Cross , err )
102130 }
0 commit comments