Add support for metal LB in DNS deploy script 59/104859/1
authorLucjan Bryndza <l.bryndza@samsung.com>
Wed, 1 Apr 2020 13:10:14 +0000 (15:10 +0200)
committerLucjan Bryndza <l.bryndza@samsung.com>
Wed, 1 Apr 2020 13:10:14 +0000 (15:10 +0200)
Extract ingress controller IP address which
is same as node where the metalLB is deployed

Signed-off-by: Lucjan Bryndza <l.bryndza@samsung.com>
Issue-ID: OOM-2289
Change-Id: I16e6d1704e54b679cb39caa3c720538a5ff60a60

kubernetes/contrib/dns-server-for-vhost-ingress-testing/deploy_dns.sh

index 81533b9..657b5f9 100755 (executable)
@@ -23,9 +23,10 @@ SPATH="$( dirname "$( which "$0" )" )"
 
 usage() {
 cat << ==usage
-$0 [cluster_domain] [helm_chart_args ...]
+$0 [cluster_domain] [lb_ip] [helm_chart_args] ...
        [cluster_domain] Default value simpledemo.onap.org
-       [helm_chart_args...] Optional arguments passed to helm install command
+       [lb_ip] Default value LoadBalancer IP
+       [helm_chart_args] ... Optional arguments passed to helm install command
 $0 --help This message
 $0 --info Display howto configure target machine
 ==usage
@@ -44,7 +45,31 @@ Extra DNS server already deployed:
 ==infodeploy
 }
 
+
+list_node_with_external_addrs()
+{
+       local WORKER_NODES=$(kubectl get no -l node-role.kubernetes.io/worker=true -o jsonpath='{.items..metadata.name}')
+       for worker in $WORKER_NODES; do
+               local external_ip=$(kubectl get no $worker  -o jsonpath='{.metadata.annotations.rke\.cattle\.io/external-ip }')
+               local internal_ip=$(kubectl get no $worker  -o jsonpath='{.metadata.annotations.rke\.cattle\.io/internal-ip }')
+               if [ $internal_ip != $external_ip ]; then
+                       echo $external_ip
+                       break
+               fi
+       done
+}
+
+ingress_controller_ip() {
+       local metal_ns=$(kubectl get ns --no-headers --output=custom-columns=NAME:metadata.name |grep metallb-system)
+       if [ -z $metal_ns ]; then
+               echo $CLUSTER_IP
+       else
+               list_node_with_external_addrs
+       fi
+}
+
 deploy() {
+       local ingress_ip=$(ingress_controller_ip)
        pushd "$SPATH/bind9dns" > /dev/null
        if [ $# -eq 0 ]; then
                local cl_domain="simpledemo.onap.org"
@@ -52,7 +77,11 @@ deploy() {
                local cl_domain=$1
                shift
        fi
-       helm install . --set dnsconf.wildcard="$cl_domain=$CLUSTER_IP" $@
+       if [ $# -ne 0 ]; then
+               ingress_ip=$1
+               shift
+       fi
+       helm install . --set dnsconf.wildcard="$cl_domain=$ingress_ip" $@
        popd > /dev/null
        target_machine_notice_info
 }
@@ -60,7 +89,7 @@ deploy() {
 if [[ $# -eq 1 ]] && [[ $1 == "-h" || $1 == "--help" ]]; then
        usage
 elif [[ $# -eq 1 ]] && [[ $1 == "--info" ]]; then
-       target_machine_notice_info
+       target_machine_notice_info
 else
        deploy $@
 fi