Azure Demo Infrastructure

Diagram

Alt text

Deployment

The steps in deploying the newly configured infrastructure are to run:

terraform plan

to test the configuration that is being passed in. If this step fails, look at the error and search for syntax issues in the referenced file and make sure all spaces and tabs are correct. Continue to rerun command until the plan passes as it will as fail in the apply as well.

Once the plan command has passed run:

terraform apply

Steps Completed

Part 1: Create Infrastructure:

  • Task 1: Create github repository
  • Task 2: Create Azure Demo Infrastructure Diagram
  • Task 3: Create Resource Group
  • Task 4: Create Virtual Network
  • Task 5: Create Subnets
  • Task 6: Create Route Tables
  • Task 7: Create NSGs
  • Task 8: Create AKS Cluster
  • Task 9: Create Public and Private Nodepool
  • Task 10: Create Nginx Ingress
  • Task 11: Create DNS Zone
  • Task 12: Create A Record
  • Task 13: Create ArgoCD Deployment

Part 2: Deploy Guestbook Application:

  • Task 1: Create github repository
  • Task 2: Create Redis Helm Chart
  • Task 3: Create Guestbook Helm Chart
  • Task 4: Deploy to cluster using ArgoCD

Providers

Name Version
azurerm >= 2.57
kubernetes >=2.0.0
random n/a

Inputs

Name Description Type Default Required
create_namespace Boolean to create namespace bool false no
dns_name DNS name string n/a yes
names Names to be applied to resources (inclusive)
object({
environment = string
location = string
market = string
business_unit = string
product_name = string
project = string
product_group = string
resource_group_type = string
subscription_type = string
resource_group_type = string
subscription_id = string

})
n/a yes
namespace Namespace for ingress controller string n/a yes
parent_domain pre-existing parent domain in which to create the NS record for the child domain string n/a yes
rules n/a map
{
"rule1": {
"ip": "",
"name": "nginxAllowHTTPInbound",
"port": "80",
"priority": "200",
"type": "nginx"
},
"rule2": {
"ip": "",
"name": "nginxAllowHTTPSInbound",
"port": "443",
"priority": "201",
"type": "nginx"
},
"rule3": {
"ip": "",
"name": "argocdAllowHTTPInbound",
"port": "80",
"priority": "202",
"type": "argocd"
},
"rule4": {
"ip": "",
"name": "argocdAllowHTTPSInbound",
"port": "443",
"priority": "203",
"type": "argocd"
}
}
no
sku The SKU name of the container registry. Possible values are Basic, Standard and Premium string "Basic" no

Outputs

Name Description
aks_login n/a