From 278440bf5cd55a38de2ebf657f6caca8d3eddc3c Mon Sep 17 00:00:00 2001 From: insukim1994 Date: Thu, 2 Oct 2025 22:07:48 +0900 Subject: [PATCH 1/3] feat: Add konnectivity host network configuration Co-authored-by: hhk7734 Signed-off-by: insukim1994 --- pkg/apis/k0s/v1beta1/konnectivity.go | 10 ++++++++-- pkg/component/controller/konnectivityagent.go | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/apis/k0s/v1beta1/konnectivity.go b/pkg/apis/k0s/v1beta1/konnectivity.go index 300a8f6483b8..e636f88f18b2 100644 --- a/pkg/apis/k0s/v1beta1/konnectivity.go +++ b/pkg/apis/k0s/v1beta1/konnectivity.go @@ -27,13 +27,19 @@ type KonnectivitySpec struct { // external address to advertise for the konnectivity agent to connect to // +optional ExternalAddress string `json:"externalAddress,omitempty"` + + // HostNetwork controls whether the konnectivity agent should use host networking + // +kubebuilder:default=false + // +optional + HostNetwork bool `json:"hostNetwork,omitempty"` } // DefaultKonnectivitySpec builds default KonnectivitySpec func DefaultKonnectivitySpec() *KonnectivitySpec { return &KonnectivitySpec{ - AgentPort: 8132, - AdminPort: 8133, + AgentPort: 8132, + AdminPort: 8133, + HostNetwork: false, } } diff --git a/pkg/component/controller/konnectivityagent.go b/pkg/component/controller/konnectivityagent.go index 32bacaad9eca..f2203139eefa 100644 --- a/pkg/component/controller/konnectivityagent.go +++ b/pkg/component/controller/konnectivityagent.go @@ -111,6 +111,7 @@ func (k *KonnectivityAgent) writeKonnectivityAgent(clusterConfig *v1beta1.Cluste Image: clusterConfig.Spec.Images.Konnectivity.URI(), ServerCount: serverCount, PullPolicy: clusterConfig.Spec.Images.DefaultPullPolicy, + HostNetwork: clusterConfig.Spec.Konnectivity.HostNetwork, } if clusterConfig.Spec.Network != nil { From 5b87bf23ab2a816c0518e951c0058575758358fd Mon Sep 17 00:00:00 2001 From: insukim1994 Date: Thu, 2 Oct 2025 22:51:00 +0900 Subject: [PATCH 2/3] feat: Added updated CRD Co-authored-by: hhk7734 Signed-off-by: insukim1994 --- static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml index 1a4181bddaed..825e589b3aa4 100644 --- a/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml +++ b/static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml @@ -462,6 +462,11 @@ spec: description: external address to advertise for the konnectivity agent to connect to type: string + hostNetwork: + default: false + description: HostNetwork controls whether the konnectivity agent + should use host networking + type: boolean type: object network: description: Network defines the network related config options From bbeed0c24fe255f0d842ef158eb1d53c31c49276 Mon Sep 17 00:00:00 2001 From: insukim1994 Date: Thu, 2 Oct 2025 23:06:25 +0900 Subject: [PATCH 3/3] feat: Added unit test logic for hostNetwork Co-authored-by: hhk7734 Signed-off-by: insukim1994 --- .../k0s/v1beta1/clusterconfig_types_test.go | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/pkg/apis/k0s/v1beta1/clusterconfig_types_test.go b/pkg/apis/k0s/v1beta1/clusterconfig_types_test.go index 2933ae3795e1..f33fa013793d 100644 --- a/pkg/apis/k0s/v1beta1/clusterconfig_types_test.go +++ b/pkg/apis/k0s/v1beta1/clusterconfig_types_test.go @@ -127,6 +127,41 @@ spec: assert.Equal(t, addr, c.Spec.Storage.Etcd.PeerAddress) } +func TestKonnectivityDefaults(t *testing.T) { + // Test default values + defaultSpec := DefaultKonnectivitySpec() + assert.Equal(t, int32(8132), defaultSpec.AgentPort) + assert.Equal(t, int32(8133), defaultSpec.AdminPort) + assert.False(t, defaultSpec.HostNetwork) // New field should default to false + + // Test that defaults are applied in cluster config + yamlData := []byte(` +apiVersion: k0s.k0sproject.io/v1beta1 +kind: ClusterConfig +metadata: + name: test +`) + + c, err := ConfigFromBytes(yamlData) + assert.NoError(t, err) + assert.False(t, c.Spec.Konnectivity.HostNetwork) + + // Test explicit HostNetwork configuration + yamlDataWithHostNetwork := []byte(` +apiVersion: k0s.k0sproject.io/v1beta1 +kind: ClusterConfig +metadata: + name: test +spec: + konnectivity: + hostNetwork: true +`) + + c2, err := ConfigFromBytes(yamlDataWithHostNetwork) + assert.NoError(t, err) + assert.True(t, c2.Spec.Konnectivity.HostNetwork) +} + func TestNetworkValidation_Custom(t *testing.T) { yamlData := []byte(` apiVersion: k0s.k0sproject.io/v1beta1