Get kubectl version from passed parameters

Related-Bug: PRODX-26710
Change-Id: I1d8d6133ec13663cd9cb54ed48b14ccdce133733
diff --git a/de/heat-templates/fragments/SrvInstancesVM.yaml b/de/heat-templates/fragments/SrvInstancesVM.yaml
index 67e92e0..f4158a2 100644
--- a/de/heat-templates/fragments/SrvInstancesVM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVM.yaml
@@ -75,6 +75,9 @@
     default: nova
   secure_overlay_enabled:
     type: boolean
+  kubectl_version:
+    type: string
+    default: 1.18.8
 
 resources:
 
@@ -103,6 +106,7 @@
             $docker_default_address_pool: { get_param: docker_default_address_pool }
             $single_node: { get_param: single_node }
             $secure_overlay_enabled: { get_param: secure_overlay_enabled }
+            $kubectl_version: { get_param: kubectl_version }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
diff --git a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
index 17b2593..0d72696 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
@@ -84,6 +84,9 @@
   availability_zone:
     type: string
     default: nova
+  kubectl_version:
+    type: string
+    default: 1.18.8
 
 resources:
 
@@ -116,6 +119,7 @@
             $ironic_baremetal_network_cidr: { get_param: ironic_baremetal_network_cidr }
             $ironic_baremetal_tunnel_cidr: { get_param: ironic_baremetal_tunnel_cidr }
             $ironic_mt_enabled: { get_param: ironic_mt_enabled }
+            $kubectl_version: { get_param: kubectl_version }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index f9c2ce9..31f544b 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -117,6 +117,9 @@
   availability_zone:
     type: string
     default: nova
+  kubectl_version:
+    type: string
+    default: 1.18.8
 
 resources:
 
@@ -158,6 +161,7 @@
             $frr_bgp_neighbors: { get_param: frr_bgp_neighbors }
             $lvm_loop_device_size: { get_param: lvm_loop_device_size }
             $cinder_lvm_loop_device_size: { get_param: cinder_lvm_loop_device_size }
+            $kubectl_version: { get_param: kubectl_version }
 
   inject_files:
     type: "OS::Heat::CloudConfig"
diff --git a/de/heat-templates/scripts/instance_boot.sh b/de/heat-templates/scripts/instance_boot.sh
index 6dcba6d..a763877 100644
--- a/de/heat-templates/scripts/instance_boot.sh
+++ b/de/heat-templates/scripts/instance_boot.sh
@@ -106,7 +106,7 @@
 UCP_USERNAME=${UCP_USERNAME:-admin}
 UCP_PASSWORD=${UCP_PASSWORD:-administrator}
 OS_CODENAME=$(lsb_release -c -s)
-KUBECTL_VERSION=${KUBECTL_VERSION:-1.18.8}
+KUBECTL_VERSION=${KUBECTL_VERSION:-$kubectl_version}
 NODE_DEPLOYMENT_RETRIES=${NODE_DEPLOYMENT_RETRIES:-15}
 FLOATING_NETWORK_PREFIXES=${FLOATING_NETWORK_PREFIXES:-10.11.12.0/24}
 PUBLIC_INTERFACE=${PUBLIC_INTERFACE:-ens4}
@@ -1041,6 +1041,7 @@
                 prepare_docker_config
             fi
             install_required_packages
+            install_kubectl
             configure_ntp
             configure_atop
             workaround_default_forward_policy
@@ -1056,7 +1057,6 @@
                 download_k0s
                 install_k0s
             fi
-            install_kubectl
             wait_for_node
             set_node_labels
             collect_ceph_metadata
@@ -1083,6 +1083,7 @@
                 prepare_docker_config
             fi
             install_required_packages
+            install_kubectl
             configure_ntp
             configure_atop
             workaround_default_forward_policy
@@ -1092,7 +1093,6 @@
                 download_bundles
                 join_node manager
             fi
-            install_kubectl
             wait_for_node
             set_node_labels
             collect_ceph_metadata
@@ -1119,6 +1119,7 @@
                 prepare_docker_config
             fi
             install_required_packages
+            install_kubectl
             enable_iscsi
             configure_ntp
             configure_atop
@@ -1133,7 +1134,6 @@
                 download_k8s_metadata
                 join_k0s_node worker
             fi
-            install_kubectl
             wait_for_node
             set_node_labels
             collect_ceph_metadata
diff --git a/de/heat-templates/top.yaml b/de/heat-templates/top.yaml
index d167980..dbc47ec 100644
--- a/de/heat-templates/top.yaml
+++ b/de/heat-templates/top.yaml
@@ -375,6 +375,9 @@
   kubernetes_installer:
     type: string
     default: "ucp"
+  kubectl_version:
+    type: string
+    default: 1.18.8
   volumes_per_osd_instance:
     description: >
       Number of extra volumes for OSD instance
@@ -549,6 +552,7 @@
       single_node: { get_param: single_node}
       availability_zone: { get_param: availability_zone }
       secure_overlay_enabled: { get_param: secure_overlay_enabled }
+      kubectl_version: { get_param: kubectl_version }
 
   masters:
     type: OS::Heat::ResourceGroup
@@ -581,6 +585,7 @@
           functions_override: { get_param: functions_override }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   workers:
     type: OS::Heat::ResourceGroup
@@ -631,6 +636,7 @@
           lvm_loop_device_size: { get_param: cmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: cmp_cinder_lvm_loop_device_size }
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   cmps:
     type: OS::Heat::ResourceGroup
@@ -681,6 +687,7 @@
           lvm_loop_device_size: { get_param: cmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: cmp_cinder_lvm_loop_device_size }
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   acmps:
     type: OS::Heat::ResourceGroup
@@ -732,6 +739,7 @@
           lvm_loop_device_size: { get_param: acmp_lvm_loop_device_size }
           cinder_lvm_loop_device_size: { get_param: acmp_cinder_lvm_loop_device_size }
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   gtws:
     type: OS::Heat::ResourceGroup
@@ -773,6 +781,7 @@
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   lmas:
     type: OS::Heat::ResourceGroup
@@ -814,6 +823,7 @@
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   osds:
     type: OS::Heat::ResourceGroup
@@ -863,6 +873,7 @@
           hardware_metadata: { get_param: hardware_metadata}
           num_volumes: { get_param: volumes_per_osd_instance }
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   frrs:  # spares for osds/cmps
     type: OS::Heat::ResourceGroup
@@ -960,6 +971,7 @@
           tun_subnet_id: { get_attr: [tun_network, tun_subnet_id] }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
   vbmcs:
     type: OS::Heat::ResourceGroup
@@ -1001,6 +1013,8 @@
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
+
   tsrvs:
     type: OS::Heat::ResourceGroup
     depends_on:
@@ -1041,6 +1055,7 @@
           ironic_mt_enabled: { get_param: ironic_mt_enabled }
           hardware_metadata: { get_param: hardware_metadata}
           availability_zone: { get_param: availability_zone }
+          kubectl_version: { get_param: kubectl_version }
 
 outputs:
   ucp_ips: