1+ # Variables
2+ SUBSCRIPTION_ID=$( az account show --query id --output tsv)
3+ TENANT_ID=$( az account show --query tenantId --output tsv)
4+ RESOURCE_GROUP=$( terraform output resource_group_name)
5+ LOCATION=" westus3"
6+
7+ # Build/Push App's Docker image
8+ ACR_NAME=$( terraform output resource_group_name)
9+ az acr login --name $ACR_NAME
10+ ACR_URL=$( az acr show --name $ACR_NAME --query loginServer --output tsv)
11+ docker build -t $ACR_URL /$ACR_NAME .azurecr.io/magic8ball:v1 ./app --push
12+
113# Get AKS credentials
214az aks get-credentials \
315 --admin \
@@ -11,7 +23,7 @@ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -o get_
1123chmod 700 get_helm.sh
1224./get_helm.sh & > /dev/null
1325
14- # NGINX ingress controller
26+ # Install NGINX ingress controller
1527helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
1628helm install nginx-ingress ingress-nginx/ingress-nginx \
1729 --create-namespace \
@@ -24,23 +36,42 @@ helm install nginx-ingress ingress-nginx/ingress-nginx \
2436 --set controller.metrics.serviceMonitor.enabled=true \
2537 --set controller.metrics.serviceMonitor.additionalLabels.release=" prometheus" \
2638
27- # Cert manager
39+ # Install Cert manager
2840helm repo add jetstack https://charts.jetstack.io
2941helm install cert-manager jetstack/cert-manager \
3042 --create-namespace \
3143 --namespace " cert-manager" \
3244 --set installCRDs=true \
3345 --set nodeSelector." kubernetes\.io/os" =linux
3446
35- # Prometheus
47+ # Install Prometheus
3648helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
3749helm install prometheus prometheus-community/kube-prometheus-stack \
3850 --create-namespace \
3951 --namespace prometheus \
4052 --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false \
4153 --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
4254
43- kubectl create namespace $namespace # Create workload namespace
55+ NAMESPACE=" magic8ball"
56+ kubectl create namespace $NAMESPACE
4457kubectl apply -f cluster-issuer.yml
4558kubectl apply -f service-account.yml
46- kubectl apply -n $namespace -f ingress.yml
59+ kubectl apply -n $NAMESPACE -f ingress.yml
60+ kubectl apply -n $NAMESPACE -f config-map.yml
61+ kubectl apply -n $NAMESPACE -f deployment.yml
62+ kubectl apply -f " service.yml" -n $NAMESPACE
63+
64+ # Add DNS Record
65+ ingressName=" magic8ball-ingress"
66+ publicIpAddress=$( kubectl get ingress $ingressName -n $namespace -o jsonpath=' {.status.loadBalancer.ingress[0].ip}' )
67+ if [ -n $publicIpAddress ]; then
68+ echo " [$publicIpAddress ] external IP address of the application gateway ingress controller successfully retrieved from the [$ingressName ] ingress"
69+ else
70+ echo " Failed to retrieve the external IP address of the application gateway ingress controller from the [$ingressName ] ingress"
71+ exit
72+ fi
73+ az network dns record-set a add-record \
74+ --zone-name " contoso.com" \
75+ --resource-group $RESOURCE_GROUP \
76+ --record-set-name magic8ball \
77+ --ipv4-address $publicIpAddress
0 commit comments