77 lines
2.1 KiB
Plaintext
77 lines
2.1 KiB
Plaintext
|
#!/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}
|