diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index 186f5e41..8c658c91 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -365,19 +365,31 @@ func ClusterCreate(ctx context.Context, runtime k3drt.Runtime, cluster *k3d.Clus log.Warnln("Failed to get HostIP: %+v", err) } if hostIP != nil { + hostRecordSuccessMessage := "" + etcHostsFailureCount := 0 hostsEntry := fmt.Sprintf("%s %s", hostIP, k3d.DefaultK3dInternalHostRecord) log.Debugf("Adding extra host entry '%s'...", hostsEntry) for _, node := range cluster.Nodes { if err := runtime.ExecInNode(clusterPrepCtx, node, []string{"sh", "-c", fmt.Sprintf("echo '%s' >> /etc/hosts", hostsEntry)}); err != nil { log.Warnf("Failed to add extra entry '%s' to /etc/hosts in node '%s'", hostsEntry, node.Name) + etcHostsFailureCount++ } } + if etcHostsFailureCount < len(cluster.Nodes) { + hostRecordSuccessMessage += fmt.Sprintf("Successfully added host record to /etc/hosts in %d/%d nodes", (len(cluster.Nodes) - etcHostsFailureCount), len(cluster.Nodes)) + } patchCmd := `test=$(kubectl get cm coredns -n kube-system --template='{{.data.NodeHosts}}' | sed -n -E -e '/[0-9\.]{4,12}\s+host\.k3d\.internal$/!p' -e '$a` + hostsEntry + `' | tr '\n' '^' | xargs -0 printf '{"data": {"NodeHosts":"%s"}}'| sed -E 's%\^%\\n%g') && kubectl patch cm coredns -n kube-system -p="$test"` - err = runtime.ExecInNode(clusterPrepCtx, cluster.Nodes[0], []string{"sh", "-c", patchCmd}) - if err != nil { + if err = runtime.ExecInNode(clusterPrepCtx, cluster.Nodes[0], []string{"sh", "-c", patchCmd}); err != nil { log.Warnf("Failed to patch CoreDNS ConfigMap to include entry '%s': %+v", hostsEntry, err) + } else { + hostRecordSuccessMessage += " and to the CoreDNS ConfigMap" } + + if hostRecordSuccessMessage != "" { + log.Infoln(hostRecordSuccessMessage) + } + } }