From 49feb49229b5eb1f78e80fc9901776b3f26c6944 Mon Sep 17 00:00:00 2001 From: "adelorenzo@oe74.net" Date: Thu, 8 Jul 2021 07:42:24 -0600 Subject: [PATCH] first commit --- firstboot.sh | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 firstboot.sh diff --git a/firstboot.sh b/firstboot.sh new file mode 100755 index 0000000..fc5bf13 --- /dev/null +++ b/firstboot.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# Install Docker +apt update +apt install curl apt-transport-https ca-certificates curl gnupg lsb-release -y +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +echo \ + "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +apt-get update +apt-get install docker-ce docker-ce-cli containerd.io -y + +#Install kubectl +apt update +apt-get install -y apt-transport-https ca-certificates curl +curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg +echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list +apt-get update +apt-get install -y kubectl + +#Create a minikube +curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb +mv minikube_latest_amd64.deb /tmp +dpkg -i /tmp/minikube_latest_amd64.deb +rm /tmp/minikube_latest_amd64.deb + +#Install httpie +apt -y install httpie jq + +#Install Portainer +docker volume create portainer_data +docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce + +#Add the portainer user to the docker group +usermod -aG docker portainer + +#Start minikube +sudo -u portainer minikube start --nodes 3 --driver=docker --ports=":30778" --ports=":9001" --docker-env "restart=unless-stopped" + +#Add the metrics server to the minikube cluster +sudo -u portainer minikube addons enable metrics-server + +#Define Admin user and Password +http POST http://localhost:9000/api/users/admin/init Username="portainer" Password="portainer1234" + +#Add Portainer Agent to the local kind Kubernetes cluster +sudo -u portainer curl -L https://downloads.portainer.io/portainer-agent-k8s-nodeport.yaml -o /home/portainer/portainer-agent-k8s.yaml; sudo -u portainer kubectl apply -f /home/portainer/portainer-agent-k8s.yaml +sudo -u portainer rm /home/portainer/portainer-agent-k8s.yaml +sleep 15 + +#Get the admin JWT token +jwt=`http POST :9000/api/auth Username="portainer" Password="portainer1234" | jq '.jwt' | sed 's/^.//' | sed 's/.$//'` + +#Add local Docker endpoint +http --form POST :9000/api/endpoints \ +"Authorization: Bearer $jwt" \ +Name="docker" EndpointCreationType=1 + +#Get mapped 30778 port from control-plane +jwt=`http POST :9000/api/auth Username="portainer" Password="portainer1234" | jq '.jwt' | sed 's/^.//' | sed 's/.$//'` +port=`docker port minikube | grep 30778 | head -1 | awk '$1=$1' FS=":" OFS=" " | awk '{ print $4 }'` + +#Add local Kubernetes endpoint +sleep 20 +sudo -u portainer http --form POST :9000/api/endpoints \ +"Authorization: Bearer $jwt" \ +Name="kubernetes" URL="tcp://10.0.2.8:$port" \ +EndpointCreationType=2 \ +TLS="true" TLSSkipVerify="true" \ +TLSSkipClientVerify="true" + +#Housekeeping +sed -i /@reboot/d /etc/crontab +reboot