Re-org the IEC repo to adapt to actual deployment
[iec.git] / src / foundation / scripts / k8s_master.sh
diff --git a/src/foundation/scripts/k8s_master.sh b/src/foundation/scripts/k8s_master.sh
new file mode 100755 (executable)
index 0000000..1782769
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash -ex
+
+# For host setup as Kubernetes master
+MGMT_IP=$1
+POD_NETWORK_CIDR=${2:-192.168.0.0/16}
+SERVICE_CIDR=${3:-172.16.1.0/24}
+
+if [ -z "${MGMT_IP}" ]; then
+  echo "Please specify a management IP!"
+  exit 1
+fi
+
+if ! kubectl get nodes; then
+  sudo kubeadm config images pull
+  sudo kubeadm init \
+    --pod-network-cidr="${POD_NETWORK_CIDR}" \
+    --apiserver-advertise-address="${MGMT_IP}" \
+    --service-cidr="${SERVICE_CIDR}"
+
+  if [ "$(id -u)" = 0 ]; then
+    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" | \
+      tee -a "${HOME}/.profile"
+    # shellcheck disable=SC1090
+    source "${HOME}/.profile"
+  else
+    mkdir -p "${HOME}/.kube"
+    sudo cp -i /etc/kubernetes/admin.conf "${HOME}/.kube/config"
+    sudo chown "$(id -u)":"$(id -g)" "${HOME}/.kube/config"
+  fi
+fi