@@ -23,6 +23,7 @@ import (
2323 "fmt"
2424 "io"
2525 "io/fs"
26+ "maps"
2627 "os"
2728 "path/filepath"
2829 "strings"
@@ -184,9 +185,7 @@ func (a *applier) loadAddonsManifests(
184185 res = strings .ReplaceAll (res , "}}" , "}}^" )
185186 manifestBytes = []byte (res )
186187 }
187-
188- var manifest * bytes.Buffer
189- manifest = bytes .NewBuffer (manifestBytes )
188+ manifest := bytes .NewBuffer (manifestBytes )
190189
191190 if ! disableTemplating {
192191 overwriteRegistry := k1cluster .RegistryConfiguration .ImageRegistry ("" )
@@ -205,17 +204,14 @@ func (a *applier) loadAddonsManifests(
205204
206205 // Make a copy and merge Params
207206 tplDataParams := map [string ]string {}
208- for k , v := range a .TemplateData .Params {
209- tplDataParams [k ] = v
210- }
211- for k , v := range addonParams {
212- tplDataParams [k ] = v
213- }
207+ maps .Copy (tplDataParams , a .TemplateData .Params )
208+ maps .Copy (tplDataParams , addonParams )
209+
210+ defaultAddonParams (k1cluster , addonName , tplDataParams )
214211
215212 // Resolve environment variables in Params
216213 for k , v := range tplDataParams {
217- if strings .HasPrefix (v , ParamsEnvPrefix ) {
218- envName := strings .TrimPrefix (v , ParamsEnvPrefix )
214+ if envName , ok := strings .CutPrefix (v , ParamsEnvPrefix ); ok {
219215 if env , ok := os .LookupEnv (envName ); ok {
220216 tplDataParams [k ] = env
221217 } else {
@@ -274,6 +270,23 @@ func (a *applier) loadAddonsManifests(
274270 return manifests , nil
275271}
276272
273+ func defaultAddonParams (k1cluster * kubeoneapi.KubeOneCluster , addonName string , tplDataParams map [string ]string ) {
274+ if addonName == resources .AddonCNICanal {
275+ if k1cluster .CloudProvider .Hetzner != nil {
276+ // Customize cni-canal addon on hetzner
277+ defaultIfaceParam (tplDataParams , "^en" )
278+ }
279+ }
280+ }
281+
282+ func defaultIfaceParam (tplDataParams map [string ]string , reg string ) {
283+ _ , iface := tplDataParams ["IFACE" ]
284+ _ , ifaceregex := tplDataParams ["IFACE_REGEX" ]
285+ if ! iface && ! ifaceregex {
286+ tplDataParams ["IFACE_REGEX" ] = reg
287+ }
288+ }
289+
277290// ensureAddonsLabelsOnResources applies the addons label on all resources in the manifest
278291func ensureAddonsLabelsOnResources (manifests []runtime.RawExtension , addonName string ) ([]* bytes.Buffer , error ) {
279292 var rawManifests []* bytes.Buffer
0 commit comments