From d7d7a55c4101ba4eac129afec426b79ee775a2ae Mon Sep 17 00:00:00 2001 From: Jesse Haka Date: Sat, 3 Jun 2023 15:47:47 +0300 Subject: [PATCH] add additional config for node local dns --- k8s/crds/kops.k8s.io_clusters.yaml | 5 +++++ pkg/apis/kops/cluster.go | 2 ++ pkg/apis/kops/v1alpha2/cluster.go | 2 ++ pkg/apis/kops/v1alpha2/zz_generated.conversion.go | 2 ++ pkg/apis/kops/v1alpha3/cluster.go | 2 ++ pkg/apis/kops/v1alpha3/zz_generated.conversion.go | 2 ++ .../data/aws_s3_object_cluster-completed.spec_content | 5 +++++ ...s_s3_object_minimal.example.com-addons-bootstrap_content | 2 +- ...e.com-addons-nodelocaldns.addons.k8s.io-k8s-1.12_content | 6 +++++- .../update_cluster/many-addons-ccm-irsa26/in-v1alpha2.yaml | 5 +++++ .../nodelocaldns.addons.k8s.io/k8s-1.12.yaml.template | 1 + 11 files changed, 32 insertions(+), 2 deletions(-) diff --git a/k8s/crds/kops.k8s.io_clusters.yaml b/k8s/crds/kops.k8s.io_clusters.yaml index 260176e010..7dc2cca116 100644 --- a/k8s/crds/kops.k8s.io_clusters.yaml +++ b/k8s/crds/kops.k8s.io_clusters.yaml @@ -3224,6 +3224,11 @@ spec: description: NodeLocalDNS specifies the configuration for the node-local-dns addon properties: + additionalConfig: + description: AdditionalConfig is used to provide additional + config for node local dns by the user - it will include + the original CoreFile made by kOps. + type: string cpuRequest: anyOf: - type: integer diff --git a/pkg/apis/kops/cluster.go b/pkg/apis/kops/cluster.go index 70af056f80..450d93457e 100644 --- a/pkg/apis/kops/cluster.go +++ b/pkg/apis/kops/cluster.go @@ -585,6 +585,8 @@ type NodeLocalDNSConfig struct { Enabled *bool `json:"enabled,omitempty"` // ExternalCoreFile is used to provide a complete NodeLocalDNS CoreFile by the user - ignores other provided flags which modify the CoreFile. ExternalCoreFile string `json:"externalCoreFile,omitempty"` + // AdditionalConfig is used to provide additional config for node local dns by the user - it will include the original CoreFile made by kOps. + AdditionalConfig string `json:"additionalConfig,omitempty"` // Image overrides the default docker image used for node-local-dns addon. Image *string `json:"image,omitempty"` // Local listen IP address. It can be any IP in the 169.254.20.0/16 space or any other IP address that can be guaranteed to not collide with any existing IP. diff --git a/pkg/apis/kops/v1alpha2/cluster.go b/pkg/apis/kops/v1alpha2/cluster.go index 3d4d5c6470..ac37cbf89e 100644 --- a/pkg/apis/kops/v1alpha2/cluster.go +++ b/pkg/apis/kops/v1alpha2/cluster.go @@ -572,6 +572,8 @@ type NodeLocalDNSConfig struct { Enabled *bool `json:"enabled,omitempty"` // ExternalCoreFile is used to provide a complete NodeLocalDNS CoreFile by the user - ignores other provided flags which modify the CoreFile. ExternalCoreFile string `json:"externalCoreFile,omitempty"` + // AdditionalConfig is used to provide additional config for node local dns by the user - it will include the original CoreFile made by kOps. + AdditionalConfig string `json:"additionalConfig,omitempty"` // Image overrides the default docker image used for node-local-dns addon. Image *string `json:"image,omitempty"` // Local listen IP address. It can be any IP in the 169.254.20.0/16 space or any other IP address that can be guaranteed to not collide with any existing IP. diff --git a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go index b8fbaa7bd0..16c26c283e 100644 --- a/pkg/apis/kops/v1alpha2/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha2/zz_generated.conversion.go @@ -6277,6 +6277,7 @@ func Convert_kops_NodeAuthorizerSpec_To_v1alpha2_NodeAuthorizerSpec(in *kops.Nod func autoConvert_v1alpha2_NodeLocalDNSConfig_To_kops_NodeLocalDNSConfig(in *NodeLocalDNSConfig, out *kops.NodeLocalDNSConfig, s conversion.Scope) error { out.Enabled = in.Enabled out.ExternalCoreFile = in.ExternalCoreFile + out.AdditionalConfig = in.AdditionalConfig out.Image = in.Image out.LocalIP = in.LocalIP out.ForwardToKubeDNS = in.ForwardToKubeDNS @@ -6294,6 +6295,7 @@ func Convert_v1alpha2_NodeLocalDNSConfig_To_kops_NodeLocalDNSConfig(in *NodeLoca func autoConvert_kops_NodeLocalDNSConfig_To_v1alpha2_NodeLocalDNSConfig(in *kops.NodeLocalDNSConfig, out *NodeLocalDNSConfig, s conversion.Scope) error { out.Enabled = in.Enabled out.ExternalCoreFile = in.ExternalCoreFile + out.AdditionalConfig = in.AdditionalConfig out.Image = in.Image out.LocalIP = in.LocalIP out.ForwardToKubeDNS = in.ForwardToKubeDNS diff --git a/pkg/apis/kops/v1alpha3/cluster.go b/pkg/apis/kops/v1alpha3/cluster.go index d9e029fdd9..3de7374bee 100644 --- a/pkg/apis/kops/v1alpha3/cluster.go +++ b/pkg/apis/kops/v1alpha3/cluster.go @@ -554,6 +554,8 @@ type NodeLocalDNSConfig struct { Enabled *bool `json:"enabled,omitempty"` // ExternalCoreFile is used to provide a complete NodeLocalDNS CoreFile by the user - ignores other provided flags which modify the CoreFile. ExternalCoreFile string `json:"externalCoreFile,omitempty"` + // AdditionalConfig is used to provide additional config for node local dns by the user - it will include the original CoreFile made by kOps. + AdditionalConfig string `json:"additionalConfig,omitempty"` // Image overrides the default docker image used for node-local-dns addon. Image *string `json:"image,omitempty"` // Local listen IP address. It can be any IP in the 169.254.20.0/16 space or any other IP address that can be guaranteed to not collide with any existing IP. diff --git a/pkg/apis/kops/v1alpha3/zz_generated.conversion.go b/pkg/apis/kops/v1alpha3/zz_generated.conversion.go index abfcefc706..eae3dd680f 100644 --- a/pkg/apis/kops/v1alpha3/zz_generated.conversion.go +++ b/pkg/apis/kops/v1alpha3/zz_generated.conversion.go @@ -6496,6 +6496,7 @@ func Convert_kops_NetworkingSpec_To_v1alpha3_NetworkingSpec(in *kops.NetworkingS func autoConvert_v1alpha3_NodeLocalDNSConfig_To_kops_NodeLocalDNSConfig(in *NodeLocalDNSConfig, out *kops.NodeLocalDNSConfig, s conversion.Scope) error { out.Enabled = in.Enabled out.ExternalCoreFile = in.ExternalCoreFile + out.AdditionalConfig = in.AdditionalConfig out.Image = in.Image out.LocalIP = in.LocalIP out.ForwardToKubeDNS = in.ForwardToKubeDNS @@ -6513,6 +6514,7 @@ func Convert_v1alpha3_NodeLocalDNSConfig_To_kops_NodeLocalDNSConfig(in *NodeLoca func autoConvert_kops_NodeLocalDNSConfig_To_v1alpha3_NodeLocalDNSConfig(in *kops.NodeLocalDNSConfig, out *NodeLocalDNSConfig, s conversion.Scope) error { out.Enabled = in.Enabled out.ExternalCoreFile = in.ExternalCoreFile + out.AdditionalConfig = in.AdditionalConfig out.Image = in.Image out.LocalIP = in.LocalIP out.ForwardToKubeDNS = in.ForwardToKubeDNS diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_cluster-completed.spec_content b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_cluster-completed.spec_content index e3b33489f6..4a66467730 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_cluster-completed.spec_content +++ b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_cluster-completed.spec_content @@ -155,6 +155,11 @@ spec: memoryLimit: 170Mi memoryRequest: 70Mi nodeLocalDNS: + additionalConfig: | + googleapis.com:53 { + bind 169.254.20.10 + forward . 10.238.1.130 + } cpuRequest: 25m enabled: true forwardToKubeDNS: false diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-bootstrap_content b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-bootstrap_content index 85461cc6cb..55e437a775 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-bootstrap_content +++ b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-bootstrap_content @@ -41,7 +41,7 @@ spec: version: 9.99.0 - id: k8s-1.12 manifest: nodelocaldns.addons.k8s.io/k8s-1.12.yaml - manifestHash: fabeb460a56eda2aa329fe1f932a98f60de82f54bb4baedcdf9d5b2393557d73 + manifestHash: 0d1c36564e406cde717c45ea59f8a89f2990a6f1c105d97295d0e1612e570114 name: nodelocaldns.addons.k8s.io needsRollingUpdate: all selector: diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-nodelocaldns.addons.k8s.io-k8s-1.12_content b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-nodelocaldns.addons.k8s.io-k8s-1.12_content index 4a5b842fc9..f96fe93cf2 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-nodelocaldns.addons.k8s.io-k8s-1.12_content +++ b/tests/integration/update_cluster/many-addons-ccm-irsa26/data/aws_s3_object_minimal.example.com-addons-nodelocaldns.addons.k8s.io-k8s-1.12_content @@ -44,7 +44,7 @@ spec: apiVersion: v1 data: - Corefile: |- + Corefile: | cluster.local:53 { errors cache { @@ -91,6 +91,10 @@ data: forward . __PILLAR__UPSTREAM__SERVERS__ prometheus :9253 } + googleapis.com:53 { + bind 169.254.20.10 + forward . 10.238.1.130 + } kind: ConfigMap metadata: creationTimestamp: null diff --git a/tests/integration/update_cluster/many-addons-ccm-irsa26/in-v1alpha2.yaml b/tests/integration/update_cluster/many-addons-ccm-irsa26/in-v1alpha2.yaml index 618ead34aa..0f9382ed86 100644 --- a/tests/integration/update_cluster/many-addons-ccm-irsa26/in-v1alpha2.yaml +++ b/tests/integration/update_cluster/many-addons-ccm-irsa26/in-v1alpha2.yaml @@ -38,6 +38,11 @@ spec: kubeDNS: nodeLocalDNS: enabled: true + additionalConfig: | + googleapis.com:53 { + bind 169.254.20.10 + forward . 10.238.1.130 + } kubernetesVersion: v1.26.0-alpha.0 masterPublicName: api.minimal.example.com networkCIDR: 172.20.0.0/16 diff --git a/upup/models/cloudup/resources/addons/nodelocaldns.addons.k8s.io/k8s-1.12.yaml.template b/upup/models/cloudup/resources/addons/nodelocaldns.addons.k8s.io/k8s-1.12.yaml.template index e84d2fac69..a53d1cbf48 100644 --- a/upup/models/cloudup/resources/addons/nodelocaldns.addons.k8s.io/k8s-1.12.yaml.template +++ b/upup/models/cloudup/resources/addons/nodelocaldns.addons.k8s.io/k8s-1.12.yaml.template @@ -107,6 +107,7 @@ data: {{- end }} } {{- end }} +{{ KubeDNS.NodeLocalDNS.AdditionalConfig | indent 4 }} {{- end }} --- apiVersion: apps/v1