Skip to content

Instantly share code, notes, and snippets.

@ipedrazas
Created January 3, 2018 09:54
Show Gist options
  • Save ipedrazas/b62aa5fda4a2509f770aabffb699d3c2 to your computer and use it in GitHub Desktop.
Save ipedrazas/b62aa5fda4a2509f770aabffb699d3c2 to your computer and use it in GitHub Desktop.
Deploying Kubernetes with the Scaleway CLI
#!/usr/bin/env sh
set -o errexit
set -o nounset
set -o pipefail
test -z "${DEBUG:-}" || {
set -x
}
function log {
local now=$(date +'%Y-%m-%d %H:%M:%S')
echo "[$now] $1"
}
function create_server {
scw create --bootscript="8fd15f37" --name="$1" --commercial-type="VC1S" Ubuntu_Xenial
}
function create_and_start_server {
scw start --wait $(create_server "$1")
}
function delete_server {
scw stop -t "$1"
}
case "${1:-}" in
create)
log "Creating k8s-master"
create_and_start_server "k8s-master"
for idx in $(seq 1 3); do
log "Creating k8s-node-$idx"
create_and_start_server "k8s-node-$idx"
done
;;
install)
for server in $(scw ps | grep "k8s" | awk '{ print $1 }'); do
log "Installing components on server #$server"
scw exec -w $server <<HEREDOC
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
echo "deb https://download.docker.com/linux/ubuntu xenial stable" > /etc/apt/sources.list.d/docker-ce.list
export DEBIAN_FRONTEND=noninteractive
apt-get install apt-transport-https
apt-get update -yq --fix-missing && apt-get dist-upgrade -yq
apt-get install -yq docker-ce=17.03.0~ce-0~ubuntu-xenial kubelet kubeadm kubectl kubernetes-cni
apt-mark hold docker-ce
HEREDOC
done;
;;
configure)
log "Configuring master"
master=$(scw ps | grep "k8s-master" | awk '{ print $1 }')
scw exec "$master" 'kubeadm init --pod-network-cidr=192.168.0.0/16'
log "Installing Calico Pod Network on master"
scw exec "$master" 'kubectl --kubeconfig=/etc/kubernetes/admin.conf apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml'
log "Getting node join token"
token=$(scw exec -w "$master" 'kubeadm token create --print-join-command' | tr -d '\r\n')
for node in $(scw ps | grep "k8s-node" | awk '{ print $1 }'); do
log "Joining node server #$node to master server #$master"
scw exec "$node" "$token"
done
;;
destroy)
for server in $(scw ps | grep "k8s" | awk '{ print $1 }'); do
log "Deleting server #$server"
delete_server $server
done;
;;
*)
echo "Usage: cluster {create|install|configure|destroy}" >&2
exit 3
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment