Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
35 changes: 35 additions & 0 deletions pkg/apis/k0s/v1beta1/clusterconfig_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 8 additions & 2 deletions pkg/apis/k0s/v1beta1/konnectivity.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
}

Expand Down
1 change: 1 addition & 0 deletions pkg/component/controller/konnectivityagent.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
5 changes: 5 additions & 0 deletions static/_crds/k0s/k0s.k0sproject.io_clusterconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down