# Install az cli: https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
# Login with cli: https://www.thegeekdiary.com/az-login-command-examples-log-in-to-azure/
az login
# In case you have multifactor login for az cli tool
az login --scope https://management.core.windows.net//.default
# Fill env variables
export SUBSCRIPTION=<GUID> # az account list --output table -> subscriptionId
export LOCATION=switzerlandnorth # az account list-locations -o table
export RESOURCE_GROUP=<cheap-aks>
export AKS_CLUSTER=<cheap-aks>
export VM_SIZE=Standard_B2ls_v2 # az vm list-skus --location $LOCATION -o table
# Set the subcription that has to be used
az account set --subscription $SUBSCRIPTION
# Create resource group
az group create --name $RESOURCE_GROUP \
--subscription $SUBSCRIPTION \
--location $LOCATION
# Create a basic single-node AKS cluster
az aks create \
--subscription $SUBSCRIPTION \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--node-count 1 \
--generate-ssh-keys \
--load-balancer-sku basic \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 1 \
--node-vm-size $VM_SIZE \
--nodepool-name default \
--node-osdisk-size 32 \
--node-osdisk-type managed
# Get credentials of AKS cluster
az aks get-credentials \
--subscription $SUBSCRIPTION \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--admin
# Remove the existing node pool
az aks nodepool delete \
--resource-group $RESOURCE_GROUP \
--cluster-name $AKS_CLUSTER \
--name default \
--no-wait
# Add new node pool
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $AKS_CLUSTER \
--name default \
--node-count 1 \
--enable-cluster-autoscaler \
--min-count 1 \
--max-count 1 \
--node-vm-size $VM_SIZE
# Update load balancer sku to standard
# IMPORTANT!!! This is a one way action you can't downgrade to basic anymore
az aks update \
--resource-group $RESOURCE_GROUP \
--name $AKS_CLUSTER \
--load-balancer-sku standard
https://kubernetes.io/docs/tasks/tools/
https://helm.sh/docs/intro/install/
# Add Bitnami Repo for helm
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Install nginx-ingress
helm upgrade --install nginx-ingress bitnami/nginx-ingress-controller --namespace nginx-ingress --create-namespace
# Install cert-manager
helm upgrade --install cert-manager bitnami/cert-manager --set installCRDs=true --create-namespace -n cert-manager
# Apply Let's encrypt cluster issuer
# ⚠️ IMPORTANT: First update the email field in the letsencrypt-prod.yml file
kubectl apply -f cert-manager
# ⚠️ IMPORTANT: Update the Domain in the ingress.yml file
kubectl apply -f nginx-example