diff options
Diffstat (limited to 'tools/kubernetes')
-rw-r--r-- | tools/kubernetes/demo_deploy.sh | 34 | ||||
-rw-r--r-- | tools/kubernetes/k8s-cluster.sh | 14 |
2 files changed, 33 insertions, 15 deletions
diff --git a/tools/kubernetes/demo_deploy.sh b/tools/kubernetes/demo_deploy.sh index 3ee7fff..f9b884c 100644 --- a/tools/kubernetes/demo_deploy.sh +++ b/tools/kubernetes/demo_deploy.sh @@ -42,6 +42,10 @@ #. worker, or folder (e.g. "/ceph") #. <extras>: optional name of script for extra setup functions as needed #. +#. The script will create a k8s environment setup file specific to the master +#. hostname, e.g. k8s_env_k8s-1.sh. This allows multiple deploys to be invoked +#. from the same admin server, by +#. #. See tools/demo_deploy.sh in the OPNFV VES repo for additional environment #. variables (mandatory/optional) for VES @@ -70,12 +74,17 @@ EOF extras=${10} -# Note MAAS deploys OS's with default user same as OS name -cat <<EOF >~/k8s_env.sh +if [[ "$4" != "$5" ]]; then + k8s_master_host=$(echo $1 | cut -d ' ' -f 1) +else + k8s_master_host=$1 +fi +cat <<EOF >~/k8s_env_$k8s_master_host.sh k8s_nodes="$1" k8s_user=$2 k8s_key=$3 k8s_master=$4 +k8s_master_host=$k8s_master_host k8s_workers="$5" k8s_priv_net=$6 k8s_pub_net=$7 @@ -85,13 +94,14 @@ export k8s_nodes export k8s_user export k8s_key export k8s_master +export k8s_master_host export k8s_workers export k8s_priv_net export k8s_pub_net export k8s_ceph_mode export k8s_ceph_dev EOF -source ~/k8s_env.sh +source ~/k8s_env_$k8s_master_host.sh env | grep k8s_ source ~/models/tools/maas/deploy.sh $k8s_user $k8s_key "$k8s_nodes" $extras @@ -99,8 +109,8 @@ eval `ssh-agent` ssh-add $k8s_key scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $k8s_key \ $k8s_user@$k8s_master:/home/$k8s_user/$k8s_key -scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ~/k8s_env.sh \ - $k8s_user@$k8s_master:/home/$k8s_user/. +scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ + ~/k8s_env_$k8s_master_host.sh $k8s_user@$k8s_master:/home/$k8s_user/k8s_env.sh echo; echo "$0 $(date): Setting up kubernetes master..." scp -r -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no \ @@ -168,16 +178,16 @@ bash $HOME/ves/tools/demo_deploy.sh $k8s_key $k8s_user $k8s_master "$k8s_workers step_end "bash $HOME/ves/tools/demo_deploy.sh $k8s_key $k8s_user $k8s_master \"$k8s_workers\"" echo; echo "$0 $(date): All done!" -if [[ "$k8s_master" != "$k8s_workers" ]]; then - export NODE_PORT=$(ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $k8s_user@$k8s_master kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services dw-dokuwiki) - export NODE_IP=$(ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $k8s_user@$k8s_master kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}") - echo "Helm chart demo app dokuwiki is available at http://$NODE_IP:$NODE_PORT/" -fi -port=$( bash ~/models/tools/cloudify/k8s-cloudify.sh port nginx $k8s_master) -echo "Cloudify-deployed demo app nginx is available at http://$k8s_master:$port" +port=$(bash ~/models/tools/cloudify/k8s-cloudify.sh port nginx) echo "Prometheus UI is available at http://$k8s_master:9090" echo "InfluxDB API is available at http://$ves_influxdb_host/query&db=veseventsdb&q=<string>" echo "Grafana dashboards are available at http://$ves_grafana_host (login as $ves_grafana_auth)" echo "Grafana API is available at http://$ves_grafana_auth@$ves_grafana_host/api/v1/query?query=<string>" echo "Kubernetes API is available at https://$k8s_master:6443/api/v1/" echo "Cloudify API access example: curl -u admin:admin --header 'Tenant: default_tenant' http://$k8s_master/api/v3.1/status" +echo "Cloudify-deployed demo app nginx is available at http://$k8s_master:$port" +if [[ "$k8s_master" != "$k8s_workers" ]]; then + export NODE_PORT=$(ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $k8s_user@$k8s_master kubectl get --namespace default -o jsonpath="{.spec.ports[0].nodePort}" services dw-dokuwiki) + export NODE_IP=$(ssh -x -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $k8s_user@$k8s_master kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}") + echo "Helm chart demo app dokuwiki is available at http://$NODE_IP:$NODE_PORT/" +fi diff --git a/tools/kubernetes/k8s-cluster.sh b/tools/kubernetes/k8s-cluster.sh index cac35e3..46750d0 100644 --- a/tools/kubernetes/k8s-cluster.sh +++ b/tools/kubernetes/k8s-cluster.sh @@ -63,6 +63,13 @@ function setup_prereqs() { cat <<'EOG' >~/prereqs.sh #!/bin/bash # Basic server pre-reqs +function wait_dpkg() { + # TODO: workaround for "E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)" + echo; echo "waiting for dpkg to be unlocked" + while sudo fuser /var/{lib/{dpkg,apt/lists},cache/apt/archives}/lock >/dev/null 2>&1; do + sleep 1 + done +} dist=$(grep --m 1 ID /etc/os-release | awk -F '=' '{print $2}' | sed 's/"//g') if [[ $(grep -c $HOSTNAME /etc/hosts) -eq 0 ]]; then echo; echo "prereqs.sh: ($(date)) Add $HOSTNAME to /etc/hosts" @@ -73,10 +80,11 @@ fi if [[ "$dist" == "ubuntu" ]]; then # Per https://kubernetes.io/docs/setup/independent/install-kubeadm/ echo; echo "prereqs.sh: ($(date)) Basic prerequisites" - sudo apt-get update - sudo apt-get upgrade -y + + wait_dpkg; sudo apt-get update + wait_dpkg; sudo apt-get upgrade -y echo; echo "prereqs.sh: ($(date)) Install latest docker" - sudo apt-get install -y docker.io + wait_dpkg; sudo apt-get install -y docker.io # Alternate for 1.12.6 #sudo apt-get install -y libltdl7 #wget https://packages.docker.com/1.12/apt/repo/pool/main/d/docker-engine/docker-engine_1.12.6~cs8-0~ubuntu-xenial_amd64.deb |