#!/usr/bin/env bash
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2020-12-11 12:10:23 +0000 (Fri, 11 Dec 2020)
#
# https://github.com/HariSekhon/bash-tools
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/HariSekhon
#
set -euo pipefail
[ -n " ${ DEBUG :- } " ] && set -x
srcdir = " $( cd " $( dirname " ${ BASH_SOURCE [0] } " ) " && pwd ) "
# shellcheck disable=SC1090
. " $srcdir /../lib/utils.sh "
# shellcheck disable=SC2034,SC2154
usage_description = "
Sets up a test AWS EKS cluster using eksctl with 3 worker nodes in a 1-4 node AutoScaling group
Takes about 20 minutes - uses CloudFormation to first create a stack with an EKS cluster management plane, then another stack with a node group,
and finally configures kubectl config with a context in the form of \$ email@\$ clustername.\$ region.eksctl.io
Environment variables to configure:
EKS_CLUSTER - default: 'test'
EKS_VERSION - default: 1.21 - you should probably set this to the latest supported to avoid having to upgrade later
AWS_DEFAULT_REGION - default: 'eu-west-2'
AWS_ZONES - defaults to zones a and b in AWS_DEFAULT_REGION - may need to tweak them anyway to work around a lack of capacity in zones. Must match AWS_DEFAULT_REGION
"
# used by usage() in lib/utils.sh
# shellcheck disable=SC2034
usage_args = ""
help_usage " $@ "
#min_args 1 "$@"
" $srcdir /install_eksctl.sh "
echo
# set a default here as needed to infer zones if not set
AWS_DEFAULT_REGION = " ${ AWS_DEFAULT_REGION :- eu -west2 } "
# cluster will be called "eksctl-$name-cluster", in this case "eksctl-test-cluster"
timestamp "Creating AWS EKS cluster via eksctl"
eksctl create cluster --name " ${ EKS_CLUSTER :- test } " \
--version " ${ EKS_VERSION :- 1 .21 } " \
--region " $AWS_DEFAULT_REGION " \
--zones " ${ AWS_ZONES :- ${ AWS_DEFAULT_REGION } a , ${ AWS_DEFAULT_REGION } b } " \
--managed \
--nodegroup-name standard-workers \
--node-type t3.micro \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4