@@ -12,6 +12,7 @@ import (
1212 "strings"
1313 "time"
1414
15+ k0sv1beta1 "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1"
1516 "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster"
1617 "github.com/k0sproject/rig"
1718 "github.com/k0sproject/rig/log"
@@ -24,6 +25,7 @@ import (
2425
2526 "github.com/replicatedhq/embedded-cluster/pkg/addons"
2627 "github.com/replicatedhq/embedded-cluster/pkg/config"
28+ "github.com/replicatedhq/embedded-cluster/pkg/customization"
2729 "github.com/replicatedhq/embedded-cluster/pkg/defaults"
2830 "github.com/replicatedhq/embedded-cluster/pkg/goods"
2931 "github.com/replicatedhq/embedded-cluster/pkg/metrics"
@@ -153,18 +155,6 @@ func updateConfig(c *cli.Context) error {
153155 if err != nil {
154156 return fmt .Errorf ("unable to read cluster config: %w" , err )
155157 }
156- cfg .Spec .K0s .Version = k0sversion .MustParse (defaults .K0sVersion )
157- if c .String ("overrides" ) != "" {
158- eucfg , err := parseEndUserConfig (c .String ("overrides" ))
159- if err != nil {
160- return fmt .Errorf ("unable to process overrides file: %w" , err )
161- }
162- if err := config .ApplyEmbeddedUnsupportedOverrides (
163- cfg , eucfg .Spec .UnsupportedOverrides .K0s ,
164- ); err != nil {
165- return fmt .Errorf ("unable to apply overrides: %w" , err )
166- }
167- }
168158 opts := []addons.Option {}
169159 if c .Bool ("no-prompt" ) {
170160 opts = append (opts , addons .WithoutPrompt ())
@@ -175,6 +165,10 @@ func updateConfig(c *cli.Context) error {
175165 if err := config .UpdateHelmConfigs (cfg , opts ... ); err != nil {
176166 return fmt .Errorf ("unable to update helm configs: %w" , err )
177167 }
168+ cfg .Spec .K0s .Version = k0sversion .MustParse (defaults .K0sVersion )
169+ if err := applyUnsupportedOverrides (c , cfg ); err != nil {
170+ return fmt .Errorf ("unable to apply unsupported overrides: %w" , err )
171+ }
178172 fp , err := os .OpenFile (cfgpath , os .O_RDWR | os .O_CREATE | os .O_TRUNC , 0600 )
179173 if err != nil {
180174 return fmt .Errorf ("unable to create config file: %w" , err )
@@ -186,6 +180,31 @@ func updateConfig(c *cli.Context) error {
186180 return nil
187181}
188182
183+ // applyUnsupportedOverrides applies overrides to the k0s configuration. Applies first the
184+ // overrides embedded into the binary and after the ones provided by the user (--overrides).
185+ func applyUnsupportedOverrides (c * cli.Context , cfg * k0sv1beta1.Cluster ) error {
186+ if embcfg , err := customization .GetEmbeddedClusterConfig (); err != nil {
187+ return fmt .Errorf ("unable to get embedded cluster config: %w" , err )
188+ } else if embcfg != nil {
189+ overrides := embcfg .Spec .UnsupportedOverrides .K0s
190+ if err := config .ApplyEmbeddedUnsupportedOverrides (cfg , overrides ); err != nil {
191+ return fmt .Errorf ("unable to apply embedded overrides: %w" , err )
192+ }
193+ }
194+ if c .String ("overrides" ) == "" {
195+ return nil
196+ }
197+ eucfg , err := parseEndUserConfig (c .String ("overrides" ))
198+ if err != nil {
199+ return fmt .Errorf ("unable to process overrides file: %w" , err )
200+ }
201+ overrides := eucfg .Spec .UnsupportedOverrides .K0s
202+ if err := config .ApplyEmbeddedUnsupportedOverrides (cfg , overrides ); err != nil {
203+ return fmt .Errorf ("unable to apply overrides: %w" , err )
204+ }
205+ return nil
206+ }
207+
189208// copyUserProvidedConfig copies the user provided configuration to the config dir.
190209func copyUserProvidedConfig (c * cli.Context ) error {
191210 usercfg := c .String ("config" )
@@ -249,17 +268,6 @@ func ensureK0sctlConfig(c *cli.Context, useprompt bool) error {
249268 if err != nil {
250269 return fmt .Errorf ("unable to render config: %w" , err )
251270 }
252- if c .String ("overrides" ) != "" {
253- eucfg , err := parseEndUserConfig (c .String ("overrides" ))
254- if err != nil {
255- return fmt .Errorf ("unable to process overrides file: %w" , err )
256- }
257- if err := config .ApplyEmbeddedUnsupportedOverrides (
258- cfg , eucfg .Spec .UnsupportedOverrides .K0s ,
259- ); err != nil {
260- return fmt .Errorf ("unable to apply overrides: %w" , err )
261- }
262- }
263271 opts := []addons.Option {}
264272 if c .Bool ("no-prompt" ) {
265273 opts = append (opts , addons .WithoutPrompt ())
@@ -270,6 +278,9 @@ func ensureK0sctlConfig(c *cli.Context, useprompt bool) error {
270278 if err := config .UpdateHelmConfigs (cfg , opts ... ); err != nil {
271279 return fmt .Errorf ("unable to update helm configs: %w" , err )
272280 }
281+ if err := applyUnsupportedOverrides (c , cfg ); err != nil {
282+ return fmt .Errorf ("unable to apply unsupported overrides: %w" , err )
283+ }
273284 fp , err := os .OpenFile (cfgpath , os .O_RDWR | os .O_CREATE | os .O_TRUNC , 0600 )
274285 if err != nil {
275286 return fmt .Errorf ("unable to create config file: %w" , err )
0 commit comments