diff --git a/images/base/files/usr/local/bin/entrypoint b/images/base/files/usr/local/bin/entrypoint index 277f70a6c2..d71738af2f 100755 --- a/images/base/files/usr/local/bin/entrypoint +++ b/images/base/files/usr/local/bin/entrypoint @@ -417,7 +417,20 @@ enable_network_magic(){ # now we can ensure that DNS is configured to use our IP cp /etc/resolv.conf /etc/resolv.conf.original - sed -e "s/${docker_embedded_dns_ip}/${docker_host_ip}/g" /etc/resolv.conf.original >/etc/resolv.conf + replaced="$(sed -e "s/${docker_embedded_dns_ip}/${docker_host_ip}/g" /etc/resolv.conf.original)" + if [[ "${KIND_DNS_SEARCH+x}" == "" ]]; then + # No DNS search set, just pass through as is + echo "$replaced" >/etc/resolv.conf + elif [[ -z "$KIND_DNS_SEARCH" ]]; then + # Empty search - remove all current search clauses + echo "$replaced" | grep -v "^search" >/etc/resolv.conf + else + # Search set - remove all current search clauses, and add the configured search + { + echo "search $KIND_DNS_SEARCH"; + echo "$replaced" | grep -v "^search"; + } >/etc/resolv.conf + fi local files_to_update=( /etc/kubernetes/manifests/etcd.yaml diff --git a/pkg/cluster/internal/providers/docker/provision.go b/pkg/cluster/internal/providers/docker/provision.go index 7b05b9d3a5..51a2e334ed 100644 --- a/pkg/cluster/internal/providers/docker/provision.go +++ b/pkg/cluster/internal/providers/docker/provision.go @@ -201,18 +201,7 @@ func commonArgs(cluster string, cfg *config.Cluster, networkName string, nodeNam } if cfg.Networking.DNSSearch != nil { - if len(*cfg.Networking.DNSSearch) == 0 { - return nil, errors.New("docker provider requires a non-empty dnsSearch") - } - for _, s := range *cfg.Networking.DNSSearch { - args = append(args, "--dns-search", s) - } - args = append(args, "--dns", "8.8.8.8") - args = append(args, "--dns", "8.8.4.4") - if config.ClusterHasIPv6(cfg) { - args = append(args, "--dns", "2001:4860:4860::8888") - args = append(args, "--dns", "2001:4860:4860::8844") - } + args = append(args, "-e", "KIND_DNS_SEARCH="+strings.Join(*cfg.Networking.DNSSearch, " ")) } return args, nil diff --git a/pkg/cluster/internal/providers/podman/provision.go b/pkg/cluster/internal/providers/podman/provision.go index 3a5b2943df..a63cda333b 100644 --- a/pkg/cluster/internal/providers/podman/provision.go +++ b/pkg/cluster/internal/providers/podman/provision.go @@ -165,12 +165,7 @@ func commonArgs(cfg *config.Cluster, networkName string, nodeNames []string) ([] } if cfg.Networking.DNSSearch != nil { - if len(*cfg.Networking.DNSSearch) == 0 { - args = append(args, "--dns-search", "") - } - for _, s := range *cfg.Networking.DNSSearch { - args = append(args, "--dns-search", s) - } + args = append(args, "-e", "KIND_DNS_SEARCH="+strings.Join(*cfg.Networking.DNSSearch, " ")) } return args, nil