3 # shellcheck disable=SC2086
5 # set DPDK if available
6 has_dpdk=${has_dpdk:-"false"}
8 ################################################################
10 base_img=${base_img:-"xenial"}
11 key_name=${key_name:-"ak-key"}
12 k8s_master_vol=${k8s_master_vol:-"k8s_master_vol"}
13 external_net=${external_net:-"external"}
14 k8s_user=${k8s_user:-"ubuntu"}
15 k8s_password=${k8s_password:-"ubuntu"}
18 floating_ip_param="--parameter public_ip_pool=$external_net"
20 if [ "$has_dpdk" = true ]; then
21 has_dpdk_param="--parameter has_dpdk=true"
24 ################################################################
30 if [ -z "$OS_AUTH_URL" ]; then
31 echo "OS_AUTH_URL not set; aborting"
35 if ! [ -f ak-key.pem ]
37 nova keypair-add "$key_name" > "$key_name".pem
41 skip_k8s_net=${skip_k8s_net:-}
42 skip_k8s_master=${skip_k8s_master:-}
43 skip_k8s_slaves=${skip_k8s_slaves:-}
57 while ! $0 stop "$@"; do
59 if [ $tries -gt $retries ]; then
60 echo "Unable to stop demo, exiting"
68 echo "Control script for managing a simple K8s cluster of VMs using Heat"
69 echo "Available stacks:"
70 echo " - net - all the required networks and subnets"
71 echo " - k8s_master - K8s master VM"
72 echo " - k8s_slaves - configurable number of K8s slave VMs"
73 echo "Use skip_<stack> to skip starting/stopping stacks, e.g."
74 echo "#:~ > skip_k8s_net=1 ./$0 stop"
75 echo "usage: $0 [start|stop] [k8s_net] [k8s_master] [k8s_slaves]"
82 while [ $# -gt 0 ]; do
90 while ! openstack compute service list > /dev/null 2>&1; do
92 if [ $tries -gt $retries ]; then
93 echo "Unable to check Openstack health, exiting"
99 for stack in $(openstack stack list -f value -c "Stack Name"); do
100 echo "$stack" | grep -sq -e '^[a-zA-Z0-9_]*$' && eval stack_"$stack"=1
105 if [ -z "$stack_k8s_net" ] && [ -z "$skip_k8s_net" ]; then
106 echo "Starting k8s_net"
107 openstack stack create --wait \
108 --parameter external_net="$external_net" \
109 -t k8s_net.yaml k8s_net
110 # Might need to wait for the networks to become available
114 # master_vol=$(openstack volume show $k8s_master_vol -f value -c id)
115 # --parameter volume_id=$master_vol \
117 k8s_master_ip=$(openstack stack output show k8s_net k8s_master_ip -f value -c output_value)
118 k8s_pod_net_cidr=$(openstack stack output show k8s_net k8s_pod_net_cidr -f value -c output_value)
119 k8s_svc_net_cidr=$(openstack stack output show k8s_net k8s_svc_net_cidr -f value -c output_value)
120 k8s_cluster_ip=$(openstack stack output show k8s_net k8s_cluster_ip -f value -c output_value)
121 if [ -z "$stack_k8s_master" ] && [ -z "$skip_k8s_master" ]; then
122 echo "Starting Kubernetes master"
123 openstack stack create --wait \
124 --parameter key_name="$key_name" \
125 --parameter k8s_master_ip="$k8s_master_ip" \
126 --parameter k8s_pod_net_cidr="$k8s_pod_net_cidr" \
127 --parameter k8s_svc_net_cidr="$k8s_svc_net_cidr" \
128 --parameter k8s_cluster_ip="$k8s_cluster_ip" \
129 --parameter k8s_user="$k8s_user" \
130 --parameter k8s_password="$k8s_password" \
133 -t k8s_master.yaml k8s_master
136 if [ -z "$stack_k8s_slaves" ] && [ -z "$skip_k8s_slaves" ]; then
137 echo "Starting Kubernetes slaves"
138 openstack stack create --wait \
139 --parameter key_name="$key_name" \
140 --parameter k8s_master_ip="$k8s_master_ip" \
141 --parameter k8s_pod_net_cidr="$k8s_pod_net_cidr" \
142 --parameter k8s_svc_net_cidr="$k8s_svc_net_cidr" \
143 --parameter k8s_cluster_ip="$k8s_cluster_ip" \
144 --parameter k8s_user="$k8s_user" \
145 --parameter k8s_password="$k8s_password" \
148 -t k8s_slaves.yaml k8s_slaves
154 if [ -n "$stack_k8s_slaves" ] && [ -z "$skip_k8s_slaves" ]; then
155 echo "Stopping Kubernetes slaves"
156 openstack stack delete --yes --wait k8s_slaves
159 if [ -n "$stack_k8s_master" ] && [ -z "$skip_k8s_master" ]; then
160 echo "Stopping Kubernetes master"
161 openstack stack delete --yes --wait k8s_master
164 if [ -n "$stack_k8s_net" ] && [ -z "$skip_k8s_net" ]; then
165 echo "Stopping k8s_net"
166 openstack stack delete --yes --wait k8s_net