diff --git a/pkg/config/transform.go b/pkg/config/transform.go index a1c08bd2..3abdcb16 100644 --- a/pkg/config/transform.go +++ b/pkg/config/transform.go @@ -25,6 +25,8 @@ package config import ( "context" "fmt" + "io/ioutil" + "os" "github.com/docker/go-connections/nat" cliutil "github.com/rancher/k3d/v4/cmd/util" // TODO: move parseapiport to pkg @@ -252,11 +254,24 @@ func TransformSimpleToClusterConfig(ctx context.Context, runtime runtimes.Runtim log.Tracef("Parsed registry reference: %+v", reg) clusterCreateOpts.Registries.Use = append(clusterCreateOpts.Registries.Use, reg) } - var k3sRegistry *k3s.Registry - if err := yaml.Unmarshal([]byte(simpleConfig.Registries.Config), k3sRegistry); err != nil { - return nil, fmt.Errorf("Failed to read registry configuration: %+v", err) + + if simpleConfig.Registries.Config != "" { + var k3sRegistry *k3s.Registry + registryConfigFile, err := os.Open(simpleConfig.Registries.Config) + if err != nil { + return nil, fmt.Errorf("Failed to open registry config file at %s: %+v", simpleConfig.Registries.Config, err) + } + configBytes, err := ioutil.ReadAll(registryConfigFile) + if err != nil { + return nil, fmt.Errorf("Failed to read registry config file at %s: %+v", registryConfigFile.Name(), err) + } + + if err := yaml.Unmarshal(configBytes, &k3sRegistry); err != nil { + return nil, fmt.Errorf("Failed to read registry configuration: %+v", err) + } + log.Tracef("Registry: read config from input:\n%+v", k3sRegistry) + clusterCreateOpts.Registries.Config = k3sRegistry } - log.Tracef("Registry: read config from input:\n%+v", k3sRegistry) /********************** * Kubeconfig Options *