Using terraform, bash and optionally a CI/CD system like Azure DevOps to provision AKS clusters - blue/green style.
This repository seeks to provide an example implementation of how green/blue AKS cluster deployments can be done. The code base consists of 4 Terraform modules and some bash to simplify usage and provide additional functionality beyond infrastructure management.
In the environment folder you'll find env and tfvars files that configure each environment. The env files provide base configuration for all modules, while module specific tfvars files can override configuration per module.
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=core
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=rbac
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=aks --workspace=blue
x@y:~$ bash bootstrap_cluster.sh gbbcloudnative blue
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=tme --workspace=blue
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=aks --workspace=green
x@y:~$ bash bootstrap_cluster.sh gbbcloudnative green
x@y:~$ bash terraform.sh --environment=gbbcloudnative --action=apply --module=tme --workspace=green
x@y:~$ echo "and round it goes.."
- core (core infrastructure that supports the cluster)
- rbac (aad identities and credentials required for aad enabled clusters)
- aks (the AKS cluster itself)
- tme (the Traffic Manager endpoint for an AKS cluster's ingress IP)
- cluster_bootstrapper.sh (applies foundational objects on the cluster, installs ingress controller and ensures a public IP)
The following has to be installed:
- Terraform >= 0.12.12
- helm3
- jq
- azure-cli (authenticated and with the aks-preview extension)