Skip to content

Instantly share code, notes, and snippets.

@ruzickap
Last active March 14, 2023 12:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ruzickap/c831cf1b760afe9bcc837379efc26f52 to your computer and use it in GitHub Desktop.
Save ruzickap/c831cf1b760afe9bcc837379efc26f52 to your computer and use it in GitHub Desktop.
Create Amazon EKS with Bottlerocket and Karpener
#!/usr/bin/env bash
export CLUSTER_NAME="ruzickap3"
export AWS_DEFAULT_REGION="eu-central-1"
export KUBECONFIG="/tmp/kubeconfig-${CLUSTER_NAME}.conf"
export TAGS="Owner=petr.ruzicka@gmail.com Environment=dev"
set -euxo pipefail
cat > "/tmp/eksctl-${CLUSTER_NAME}.yaml" << EOF
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: ${CLUSTER_NAME}
region: ${AWS_DEFAULT_REGION}
version: "1.25"
tags: &tags
karpenter.sh/discovery: "${CLUSTER_NAME}"
$(echo "${TAGS}" | sed 's/^/ /g ; s/=\([^,]*\),*/: "\1"\n /g')
iam:
withOIDC: true
karpenter:
version: v0.27.0
createServiceAccount: true
addons:
- name: vpc-cni
- name: kube-proxy
- name: coredns
- name: aws-ebs-csi-driver
managedNodeGroups:
- name: mng01
amiFamily: Bottlerocket
# Minimal instance type for running add-ons + karpenter - ARM t4g.medium: 4.0 GiB, 2 vCPUs - 0.0336 hourly
# Minimal instance type for running add-ons + karpenter - X86 t3a.medium: 4.0 GiB, 2 vCPUs - 0.0336 hourly
instanceType: t4g.medium
desiredCapacity: 3
minSize: 2
maxSize: 5
volumeSize: 20
volumeType: gp3
disablePodIMDS: true
tags:
<<: *tags
volumeEncrypted: true
disableIMDSv1: true
EOF
eksctl create cluster --config-file "/tmp/eksctl-${CLUSTER_NAME}.yaml" --kubeconfig "${KUBECONFIG}"
echo -e "*****\n export KUBECONFIG=${KUBECONFIG} \n*****"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment