feat: enable forwardKubeDNSToHost by default

And ensure that it works.

Signed-off-by: Dmitriy Matrenichev <dmitry.matrenichev@siderolabs.com>
This commit is contained in:
Dmitriy Matrenichev 2024-05-07 23:06:26 +03:00
parent 2e64e9e4e0
commit fcd65ff65c
No known key found for this signature in database
GPG Key ID: 94B473337258BFD5
9 changed files with 46 additions and 2 deletions

View File

@ -31,6 +31,23 @@ Talos is built with Go 1.22.3.
description = """\ description = """\
Talos Linux now compresses kernel and initramfs using ZSTD. Talos Linux now compresses kernel and initramfs using ZSTD.
Linux arm64 kernel is now compressed (previously it was uncompressed). Linux arm64 kernel is now compressed (previously it was uncompressed).
"""
[notes.forward-kube-dns-to-host]
title = "DNS Forwarding for CoreDNS pods"
description = """\
Usage of the host DNS resolver as upstream for Kubernetes CoreDNS pods is now enabled by default. You can disable it
with:
```yaml
machine:
features:
hostDNS:
enabled: true
forwardKubeDNSToHost: false
```
Please note that on running cluster you will have to kill CoreDNS pods for this change to apply.
""" """
[make_deps] [make_deps]

View File

@ -149,3 +149,8 @@ func (contract *VersionContract) UseRSAServiceAccountKey() bool {
func (contract *VersionContract) ClusterNameForWorkers() bool { func (contract *VersionContract) ClusterNameForWorkers() bool {
return contract.Greater(TalosVersion1_7) return contract.Greater(TalosVersion1_7)
} }
// HostDNSForwardKubeDNSToHost returns true if version of Talos forces host dns router to be used as upstream for Kubernetes CoreDNS pods.
func (contract *VersionContract) HostDNSForwardKubeDNSToHost() bool {
return contract.Greater(TalosVersion1_7)
}

View File

@ -61,6 +61,7 @@ func TestContractCurrent(t *testing.T) {
assert.True(t, contract.HostDNSEnabled()) assert.True(t, contract.HostDNSEnabled())
assert.True(t, contract.UseRSAServiceAccountKey()) assert.True(t, contract.UseRSAServiceAccountKey())
assert.True(t, contract.ClusterNameForWorkers()) assert.True(t, contract.ClusterNameForWorkers())
assert.True(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_8(t *testing.T) { func TestContract1_8(t *testing.T) {
@ -81,6 +82,7 @@ func TestContract1_8(t *testing.T) {
assert.True(t, contract.HostDNSEnabled()) assert.True(t, contract.HostDNSEnabled())
assert.True(t, contract.UseRSAServiceAccountKey()) assert.True(t, contract.UseRSAServiceAccountKey())
assert.True(t, contract.ClusterNameForWorkers()) assert.True(t, contract.ClusterNameForWorkers())
assert.True(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_7(t *testing.T) { func TestContract1_7(t *testing.T) {
@ -101,6 +103,7 @@ func TestContract1_7(t *testing.T) {
assert.True(t, contract.HostDNSEnabled()) assert.True(t, contract.HostDNSEnabled())
assert.True(t, contract.UseRSAServiceAccountKey()) assert.True(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_6(t *testing.T) { func TestContract1_6(t *testing.T) {
@ -121,6 +124,7 @@ func TestContract1_6(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_5(t *testing.T) { func TestContract1_5(t *testing.T) {
@ -141,6 +145,7 @@ func TestContract1_5(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_4(t *testing.T) { func TestContract1_4(t *testing.T) {
@ -161,6 +166,7 @@ func TestContract1_4(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_3(t *testing.T) { func TestContract1_3(t *testing.T) {
@ -181,6 +187,7 @@ func TestContract1_3(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_2(t *testing.T) { func TestContract1_2(t *testing.T) {
@ -201,6 +208,7 @@ func TestContract1_2(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_1(t *testing.T) { func TestContract1_1(t *testing.T) {
@ -221,6 +229,7 @@ func TestContract1_1(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }
func TestContract1_0(t *testing.T) { func TestContract1_0(t *testing.T) {
@ -241,4 +250,5 @@ func TestContract1_0(t *testing.T) {
assert.False(t, contract.HostDNSEnabled()) assert.False(t, contract.HostDNSEnabled())
assert.False(t, contract.UseRSAServiceAccountKey()) assert.False(t, contract.UseRSAServiceAccountKey())
assert.False(t, contract.ClusterNameForWorkers()) assert.False(t, contract.ClusterNameForWorkers())
assert.False(t, contract.HostDNSForwardKubeDNSToHost())
} }

View File

@ -96,7 +96,7 @@ func (in *Input) init() ([]config.Document, error) {
if in.Options.VersionContract.HostDNSEnabled() { if in.Options.VersionContract.HostDNSEnabled() {
machine.MachineFeatures.HostDNSSupport = &v1alpha1.HostDNSConfig{ machine.MachineFeatures.HostDNSSupport = &v1alpha1.HostDNSConfig{
HostDNSEnabled: pointer.To(true), HostDNSEnabled: pointer.To(true),
HostDNSForwardKubeDNSToHost: in.Options.HostDNSForwardKubeDNSToHost.Ptr(), HostDNSForwardKubeDNSToHost: ptrOrNil(in.Options.HostDNSForwardKubeDNSToHost.ValueOrZero() || in.Options.VersionContract.HostDNSForwardKubeDNSToHost()),
} }
} }
@ -229,3 +229,11 @@ func (in *Input) init() ([]config.Document, error) {
return []config.Document{v1alpha1Config}, nil return []config.Document{v1alpha1Config}, nil
} }
func ptrOrNil(b bool) *bool {
if b {
return &b
}
return nil
}

View File

@ -97,7 +97,7 @@ func (in *Input) worker() ([]config.Document, error) {
if in.Options.VersionContract.HostDNSEnabled() { if in.Options.VersionContract.HostDNSEnabled() {
machine.MachineFeatures.HostDNSSupport = &v1alpha1.HostDNSConfig{ machine.MachineFeatures.HostDNSSupport = &v1alpha1.HostDNSConfig{
HostDNSEnabled: pointer.To(true), HostDNSEnabled: pointer.To(true),
HostDNSForwardKubeDNSToHost: in.Options.HostDNSForwardKubeDNSToHost.Ptr(), HostDNSForwardKubeDNSToHost: ptrOrNil(in.Options.HostDNSForwardKubeDNSToHost.ValueOrZero() || in.Options.VersionContract.HostDNSForwardKubeDNSToHost()),
} }
} }

View File

@ -25,6 +25,7 @@ machine:
port: 7445 port: 7445
hostDNS: hostDNS:
enabled: true enabled: true
forwardKubeDNSToHost: true
cluster: cluster:
id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w= id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w=
secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic= secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic=

View File

@ -25,6 +25,7 @@ machine:
port: 7445 port: 7445
hostDNS: hostDNS:
enabled: true enabled: true
forwardKubeDNSToHost: true
cluster: cluster:
id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w= id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w=
secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic= secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic=

View File

@ -44,6 +44,7 @@ machine:
port: 7445 port: 7445
hostDNS: hostDNS:
enabled: true enabled: true
forwardKubeDNSToHost: true
cluster: cluster:
id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w= id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w=
secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic= secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic=

View File

@ -44,6 +44,7 @@ machine:
port: 7445 port: 7445
hostDNS: hostDNS:
enabled: true enabled: true
forwardKubeDNSToHost: true
cluster: cluster:
id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w= id: 0raF93qnkMvF-FZNuvyGozXNdLiT2FOWSlyBaW4PR-w=
secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic= secret: pofHbABZq7VXuObsdLdy/bHmz6hlMHZ3p8+6WKrv1ic=