#!/usr/bin/env bash set -e NAMESPACE="org-giantswarm" RELEASE="20.0.0-alpha1" PROVIDER="aws" AZS="eu-west-1a" print_usage() { echo "gs-create-cluster - create a Giant Swarm managed workload cluster" echo " " echo "gs-create-cluster [cluster-name]" echo " " echo " " echo "Options:" echo "-h, --help show this help text" echo "-n, --namespace the namespace the cluster is in (default: org-giantswarm)" echo "-r, --release the namespace the cluster is in (default: 20.0.0-alpha1)" echo "-p, --provider the cloud provider to use (default: aws)" } while test $# -gt 0; do case "$1" in -n|--namespace) shift NAMESPACE=$1 shift ;; -r|--release) shift RELEASE=$1 shift ;; -p|--provider) shift PROVIDER=$1 shift ;; -h|--help) print_usage exit 0 ;; *) break ;; esac done # Positional args NAME=${1:-wc001} PREFIXED_NAMESPACE="org-$NAMESPACE" case $NAMESPACE in org-*) PREFIXED_NAMESPACE="$NAMESPACE" NAMESPACE=${NAMESPACE#"org-"} esac echo "✨ Pre-flight checks" gs-get-cluster --namespace ${PREFIXED_NAMESPACE} ${NAME} &>/dev/null if [ $? -eq 0 ]; then echo "Cluster named '${NAME}' already exists" exit 1 else echo "Cleaning up any old awsclusterroleidentities..." kubectl get --namespace ${PREFIXED_NAMESPACE} awsclusterroleidentities ${NAME} >/dev/null && kubectl delete --namespace ${PREFIXED_NAMESPACE} awsclusterroleidentities ${NAME} fi echo "✨ Creating an ${PROVIDER} cluster called '${NAMESPACE}/${NAME}' with release '${RELEASE}'" kubectl-gs template cluster --provider ${PROVIDER} --release ${RELEASE} --organization ${NAMESPACE} --name ${NAME} --description "$(whoami)'s test cluster" | kubectl apply -f - echo "✨ Adding node pool to cluster" kubectl-gs template nodepool --provider ${PROVIDER} --release ${RELEASE} --organization ${NAMESPACE} --cluster-name ${NAME} --description "$(whoami)'s test cluster" --availability-zones ${AZS} | kubectl apply -f - echo "✨ Checking status..." gs-get-cluster --namespace ${PREFIXED_NAMESPACE} ${NAME}