Created
January 3, 2018 09:54
-
-
Save ipedrazas/b62aa5fda4a2509f770aabffb699d3c2 to your computer and use it in GitHub Desktop.
Deploying Kubernetes with the Scaleway CLI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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