Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

worker profiles (#1915) #1974

Merged
merged 53 commits into from
Mar 26, 2025
Merged
Changes from 1 commit
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
63a6a04
worker profiles investigation (#1915)
laverya Mar 17, 2025
e4afc3e
schemas
hedge-sparrow Mar 17, 2025
4c3a43b
Merge remote-tracking branch 'origin/main' into ash/worker-profiles
hedge-sparrow Mar 17, 2025
4c7540c
schemas
hedge-sparrow Mar 17, 2025
f2f88bf
try and get first defined profile from kots join command response
hedge-sparrow Mar 19, 2025
f9fb7ac
Merge branch 'main' into ash/worker-profiles
hedge-sparrow Mar 19, 2025
0b80627
fix outdated release.GetEmbeddedClusterConfig calls
hedge-sparrow Mar 19, 2025
6035ebb
remove unneeded check for profile name
hedge-sparrow Mar 19, 2025
014ea09
change workerprofiles position in test config
hedge-sparrow Mar 19, 2025
1041615
reverse selection of join profile
hedge-sparrow Mar 19, 2025
28e35a2
kots image override
hedge-sparrow Mar 19, 2025
daadf03
test print spec
hedge-sparrow Mar 20, 2025
7d23c91
test print spec
hedge-sparrow Mar 20, 2025
b24198d
move worker profiles back to k0s override config
hedge-sparrow Mar 20, 2025
b7768be
no custom kots
hedge-sparrow Mar 20, 2025
4af0dfe
move test config worker profiles
hedge-sparrow Mar 20, 2025
eb68fee
don't care about profiles key here
hedge-sparrow Mar 20, 2025
8c2c25c
oops
hedge-sparrow Mar 20, 2025
8ae806f
more safety
hedge-sparrow Mar 20, 2025
b35da65
print debug
hedge-sparrow Mar 20, 2025
e1f7ce1
extract k0s config from installation object properly
hedge-sparrow Mar 20, 2025
6c79ac9
uh
hedge-sparrow Mar 20, 2025
33512a0
generate
hedge-sparrow Mar 20, 2025
8bbb894
manifests
hedge-sparrow Mar 20, 2025
3ddbe2b
load profiles from config on disk
hedge-sparrow Mar 20, 2025
f53b899
manifests
hedge-sparrow Mar 20, 2025
76f9952
remove unused err check
hedge-sparrow Mar 20, 2025
87a7c83
vibe coding
hedge-sparrow Mar 20, 2025
8cb65b4
also include worker profiles when patching config
hedge-sparrow Mar 21, 2025
3a1fac1
debug loggin
hedge-sparrow Mar 21, 2025
d290c1e
debug loggin
hedge-sparrow Mar 21, 2025
490a601
more debug logging
hedge-sparrow Mar 21, 2025
6209ad6
more debug logging
hedge-sparrow Mar 21, 2025
024304e
try Dig over DigMapping
hedge-sparrow Mar 21, 2025
11a3b2c
log patched config
hedge-sparrow Mar 21, 2025
980ac37
make sure config is synced to disk before reading back to get profiles
hedge-sparrow Mar 21, 2025
89f65c8
verbose logging of config loading?
hedge-sparrow Mar 21, 2025
71fee40
try k0s own config reader
hedge-sparrow Mar 21, 2025
a2662dc
proper debug logging
hedge-sparrow Mar 21, 2025
4c39791
debug not error
hedge-sparrow Mar 21, 2025
3b85722
Merge remote-tracking branch 'origin/main' into ash/worker-profiles
hedge-sparrow Mar 21, 2025
a98d1ee
PR comments
hedge-sparrow Mar 24, 2025
0ff20de
Remove unused config from other function sigs
hedge-sparrow Mar 24, 2025
05cf032
add worker profiles to e2e apps
hedge-sparrow Mar 24, 2025
1a4eadc
add check for worker profiles
hedge-sparrow Mar 24, 2025
4dd7f33
Merge remote-tracking branch 'origin/main' into ash/worker-profiles
laverya Mar 25, 2025
b8de1bf
rework worker profile checking
laverya Mar 25, 2025
83cd7eb
previous-stable is not the current version
laverya Mar 25, 2025
a19a6d4
fix check for profile on worker nodes
laverya Mar 25, 2025
25dcebd
remove worker profile check from check-installation-state due to old-…
laverya Mar 25, 2025
51b3ee7
pass errors when relevant
laverya Mar 25, 2025
0233f9a
fix dryrun join test, add more nil checking
laverya Mar 25, 2025
dca3b06
Merge remote-tracking branch 'origin/main' into ash/worker-profiles
laverya Mar 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
don't care about profiles key here
hedge-sparrow committed Mar 20, 2025
commit eb68feed157d1257b9215a028e2110df8f262dd1
43 changes: 7 additions & 36 deletions cmd/installer/cli/join.go
Original file line number Diff line number Diff line change
@@ -8,7 +8,6 @@ import (
"strings"
"syscall"

k0sv1beta1 "github.com/k0sproject/k0s/pkg/apis/k0s/v1beta1"
ecv1beta1 "github.com/replicatedhq/embedded-cluster/kinds/apis/v1beta1"
"github.com/replicatedhq/embedded-cluster/pkg/addons"
"github.com/replicatedhq/embedded-cluster/pkg/airgap"
@@ -326,11 +325,6 @@ func installAndJoinCluster(ctx context.Context, jcmd *kotsadm.JoinCommandRespons
return fmt.Errorf("unable to apply network configuration: %w", err)
}

logrus.Debugf("applying worker profiles")
if err := applyWorkerProfiles(jcmd); err != nil {
return fmt.Errorf("unable to apply worker profiles: %w", err)
}

logrus.Debugf("applying configuration overrides")
if err := applyJoinConfigurationOverrides(jcmd); err != nil {
return fmt.Errorf("unable to apply configuration overrides: %w", err)
@@ -424,28 +418,6 @@ func startAndWaitForK0s(ctx context.Context, name string, jcmd *kotsadm.JoinComm
return nil
}

func applyWorkerProfiles(jcmd *kotsadm.JoinCommandResponse) error {
if jcmd.InstallationSpec.Config != nil && jcmd.InstallationSpec.Config.UnsupportedOverrides.K0s != "" {
var k0sConfig k0sv1beta1.ClusterConfig
if err := yaml.Unmarshal([]byte(jcmd.InstallationSpec.Config.UnsupportedOverrides.K0s), &k0sConfig); err != nil {
logrus.Debugf("unable to parse k0s config: %v", err)
return nil
}
if len(k0sConfig.Spec.WorkerProfiles) > 0 {
cfg := k0sv1beta1.ClusterConfig{}
cfg.Spec.WorkerProfiles = k0sConfig.Spec.WorkerProfiles
data, err := k8syaml.Marshal(cfg)
if err != nil {
return fmt.Errorf("unable to marshal cluster config: %w", err)
}
if err := k0s.PatchK0sConfig(runtimeconfig.PathToK0sConfig(), string(data)); err != nil {
return fmt.Errorf("unable to patch config with embedded data: %w", err)
}
}
}
return nil
}

// applyJoinConfigurationOverrides applies both config overrides received from the kots api.
// Applies first the EmbeddedOverrides and then the EndUserOverrides.
func applyJoinConfigurationOverrides(jcmd *kotsadm.JoinCommandResponse) error {
@@ -480,14 +452,13 @@ func applyJoinConfigurationOverrides(jcmd *kotsadm.JoinCommandResponse) error {
// getFirstDefinedProfileFlag returns the name of the first defined worker profile
// from the returned join command config
func getFirstDefinedProfileFlag(jcmd *kotsadm.JoinCommandResponse) string {
if jcmd.InstallationSpec.Config != nil && jcmd.InstallationSpec.Config.UnsupportedOverrides.K0s != "" {
var k0sConfig k0sv1beta1.ClusterConfig
if err := yaml.Unmarshal([]byte(jcmd.InstallationSpec.Config.UnsupportedOverrides.K0s), &k0sConfig); err != nil {
logrus.Debugf("unable to parse k0s config: %v", err)
return ""
}
if len(k0sConfig.Spec.WorkerProfiles) > 0 {
return k0sConfig.Spec.WorkerProfiles[0].Name
if jcmd.InstallationSpec.Config != nil {
fmt.Printf("%+v\n", jcmd.InstallationSpec.Config)
fmt.Printf("%+v\n", jcmd.InstallationSpec.Config.UnsupportedOverrides)
fmt.Printf("%+v\n", jcmd.InstallationSpec.Config.UnsupportedOverrides.WorkerProfiles)
cfgProfiles := jcmd.InstallationSpec.Config.UnsupportedOverrides.WorkerProfiles
if len(cfgProfiles) > 0 {
return cfgProfiles[0].Name
}
}
return ""
22 changes: 10 additions & 12 deletions pkg/config/testdata/override-setting-ip-forward.yaml
Original file line number Diff line number Diff line change
@@ -14,12 +14,11 @@ config: |-
override: |-
config:
spec:
unsupportedOverrides
workerProfiles:
- name: ip-forward
values:
allowedUnsafeSysctls:
- net.ipv4.ip_forward
workerProfiles:
- name: ip-forward
values:
allowedUnsafeSysctls:
- net.ipv4.ip_forward
expected: |-
apiVersion: k0s.k0sproject.io/v1beta1
kind: ClusterConfig
@@ -33,9 +32,8 @@ expected: |-
provider: calico
telemetry:
enabled: false
unsupportedOverrides
workerProfiles:
- name: ip-forward
values:
allowedUnsafeSysctls:
- net.ipv4.ip_forward
workerProfiles:
- name: ip-forward
values:
allowedUnsafeSysctls:
- net.ipv4.ip_forward