diff --git a/tools/multi_nodes_gate/airship_gate/lib/ingress.sh b/tools/multi_nodes_gate/airship_gate/lib/ingress.sh index 2cbc9c4c..a920ddb0 100644 --- a/tools/multi_nodes_gate/airship_gate/lib/ingress.sh +++ b/tools/multi_nodes_gate/airship_gate/lib/ingress.sh @@ -1,5 +1,6 @@ DNS_ZONE_FILE="${TEMP_DIR}/ingress.dns" COREFILE="${TEMP_DIR}/ingress.corefile" +RESOLV_CONF="${TEMP_DIR}/resolv.conf" ingress_dns_config() { ingress_domain=$(config_ingress_domain) @@ -20,15 +21,28 @@ ingress_dns_config() { DNS_DOMAIN=${ingress_domain} ZONE_FILE=$(basename $DNS_ZONE_FILE) DNS_SERVERS="$UPSTREAM_DNS" envsubst < "${TEMPLATE_DIR}/ingress_corefile.sub" > "${COREFILE}" } +ingress_resolv_conf() { + # Update node DNS settings + for server in $UPSTREAM_DNS; do + if ! grep "nameserver $server" "$RESOLV_CONF"; then + echo "nameserver $server" >> "$RESOLV_CONF" + fi + done +} + ingress_dns_start() { # nodename where DNS should run nodename=$1 remote_work_dir="/var/tmp/coredns" - remote_zone_file="${remote_work_dir}/$(basename $DNS_ZONE_FILE)" - remote_corefile="${remote_work_dir}/$(basename $COREFILE)" + remote_zone_file="${remote_work_dir}/$(basename "$DNS_ZONE_FILE")" + remote_corefile="${remote_work_dir}/$(basename "$COREFILE")" + remote_resolv_conf="/etc/$(basename "$RESOLV_CONF")" ssh_cmd "${nodename}" mkdir -p "${remote_work_dir}" rsync_cmd "$DNS_ZONE_FILE" "${nodename}:${remote_zone_file}" rsync_cmd "$COREFILE" "${nodename}:${remote_corefile}" - ssh_cmd "${nodename}" docker run -d -v /var/tmp/coredns:/data -w /data --network host --restart always -P $IMAGE_COREDNS -conf $(basename $remote_corefile) + rsync_cmd "$RESOLV_CONF" "${nodename}:${remote_resolv_conf}" + ssh_cmd "${nodename}" systemctl stop systemd-resolved + ssh_cmd "${nodename}" systemctl disable systemd-resolved + ssh_cmd "${nodename}" docker run -d -v /var/tmp/coredns:/data -w /data --network host --restart always -P "$IMAGE_COREDNS" -conf "$(basename "$remote_corefile")" } diff --git a/tools/multi_nodes_gate/airship_gate/stages/ingress-dns.sh b/tools/multi_nodes_gate/airship_gate/stages/ingress-dns.sh index affabf2f..6e9aab63 100755 --- a/tools/multi_nodes_gate/airship_gate/stages/ingress-dns.sh +++ b/tools/multi_nodes_gate/airship_gate/stages/ingress-dns.sh @@ -20,4 +20,5 @@ source "${GATE_UTILS}" DNS_SERVER=$1 ingress_dns_config -ingress_dns_start ${DNS_SERVER} +ingress_resolv_conf "${DNS_SERVER}" +ingress_dns_start "${DNS_SERVER}"