An Azure platform for running a service on AKS with Terraform, Argo CD, CI, observability and incident handling.
View the Project on GitHub Franklindot04/production-platform-Azure
Every Azure resource is created in a region, and most resource names cannot be changed after creation. Names also need to be readable in the portal and in billing reports. Some names, such as storage accounts and container registries, must be unique across all of Azure and cannot contain hyphens.
The target subscription has a regional vCPU quota of 4 in swedencentral. This limits the node pools of any cluster in the region. See section 7 of the architecture document.
swedencentral. The cluster and the other workload resources go in this region.northeurope. The state storage account stays there (ADR 0004). State in a different region from the workloads is acceptable.pp.pp-<env>-<resource>, for example pp-dev-aks or pp-dev-session-rg.pp<env><resource><suffix>, for example ppdevacr plus a short random suffix. Terraform creates the suffix. The state storage account is the exception: the bootstrap script draws its 6-character suffix (ADR 0004).<env> is dev, staging or prod. The state storage serves all environments and uses shared in that position. The environment model is in ADR 0010.project=production-platform-azure, env=<env>, managed-by=terraform. The resources made by the bootstrap script (ADR 0004) carry managed-by=azure-cli, because Terraform does not manage them.Assumptions:
pp-dev-ne-aks. Longer names and no benefit while there is one region.westeurope. Not chosen. No technical reason was found. The choice was made by the maintainer.northeurope for workloads. Not chosen. It is used for the state storage account only. The VM size availability behind the choice of swedencentral is in ADR 0012.