Creating an Azure K8s Cluster · DevOps Junction
Provision an Azure Kubernetes Service cluster with Terraform and deploy a sample application into it. The lab that proves Module 04 — environments on demand, version-controlled infra, immutable infrastructure — works in your hands.
By the end of the project you will know how to create an AKS cluster using Terraform and deploy a sample application into it.
Scenario: your company asks you to migrate an application from a local server to the cloud, integrating it with the rest of the Azure services already in use. You configure the environment, grant permissions, create a resource group (and optionally a storage account), create SSH keys, write and run a Terraform script, and finally deploy an application to AKS.
Configure your environment, provision an AKS cluster using Terraform, then deploy a sample application onto it.
Kubernetes is the container-orchestration tool Google gave the world. It changed how applications are deployed, managed, and scaled — and because of the responsibility it adds to designing, managing, and administering systems, most organizations choose a managed Kubernetes for production:
Azure Kubernetes Service · what this project uses.
Elastic Kubernetes Service · AWS analogue.
Google Kubernetes Engine · GCP analogue.
Use the $200 in Azure credit you get when signing up for the first time, or the Azure for Students offer ($100, no credit card required) from Module 02's capstone. Either is enough to complete the project end-to-end.
// tip: tear the cluster down with `terraform destroy` at the end of every working session — AKS nodes burn credit while running.
- 01
Configure the environment
1 ptsInstall Azure CLI + Terraform; az login; pick a region; az account show.
- 02
Granting permissions
1 ptsService principal (or managed identity) with Contributor on the resource group. Save the credentials Terraform will use.
- 03
Create Azure resource group
1 ptsOne RG that will hold everything. Pick a region close to you.
- 04
Create an Azure storage account
optional · 0 ptsOptional. Useful for remote Terraform state once you outgrow the local state file.
- 05
Create SSH keys
1.5 ptsssh-keygen -t rsa -b 4096. The public key goes into the AKS node pool config.
- 06
Terraform script
1.5 ptsprovider "azurerm", azurerm_resource_group, azurerm_kubernetes_cluster, kube_admin_config output.
- 07
Running the Terraform script
2 ptsterraform init / plan / apply. Demonstrate the cluster came up — kubectl get nodes against the kubeconfig output.
- 08
Deploying an application to AKS
2 ptskubectl apply -f for a simple Deployment + Service (LoadBalancer). Show the external IP responding.
- Install prereqs —
az,terraform,kubectl— and runaz login. - Create the service principal Terraform will authenticate with, scoped to your Resource Group only (least privilege).
- Generate your SSH keypair; the public key goes into the AKS node-pool configuration so you can SSH into nodes if something breaks.
- Write your Terraform — start small (RG + AKS), apply, then iterate. Keep everything in a Git repo (Module 04 § version-control).
terraform apply→ wait for the cluster to come up → export the kubeconfig.- Deploy a simple Deployment + Service (LoadBalancer) — even a stock
nginxis fine for the grade. Show the external IP serving traffic. - Record your walkthrough video — run the commands live, on camera, explaining what you built and why (see "Video walkthrough" below — this is the centerpiece of the submission).
- Push your Terraform code (and any supporting scripts / README) to a public GitHub repo — that becomes the second half of the submission.
terraform destroybefore you stop working for the day so you don't burn through credit overnight.
I want to hear you speak like a master in cloud infrastructure. The video is where you show me you understand what you built — not just that you copied a tutorial. Talk through the architecture, the trade-offs, and what would change if this were going to production. This is the single most important piece of the submission.
Record yourself running the commands live while you narrate. Screen-share + your voice over it. Roughly 15–25 minutes is the right length — long enough to be substantive, short enough to be focused.
- Architecture you built — open the Terraform code and walk me through the resources: Resource Group, AKS, node pool, networking. Explain why you chose each parameter (node count, VM size, region).
- Identity and least privilege — show the service principal, the role assignment, why it's scoped to the RG. If you used something else (managed identity, federated credential), defend the choice.
- Live demo —
terraform plan→terraform apply→kubectl get nodes→ deploy the app → hit the external IP from a browser. Talk while it runs. - Trade-offs and "what would I change for production?" — secrets management, remote Terraform state, multi-AZ node pool, RBAC, network policies, observability. You don't have to implement them; you have to understand them.
- What broke and how you fixed it — the part students skip. Talking about the errors you hit shows real understanding, not a polished script.
- Cost awareness — what does this cluster burn per hour? Why are you running
terraform destroybetween sessions?
- — Audible voice. If I can't hear you clearly, I can't grade the most important part.
- — Screen visible (terminal + editor at readable font size).
- — Unscripted, but prepared. Don't read a script word-for-word; don't wing it without thinking. Think senior engineer presenting an architecture review.
- — Upload to YouTube as Unlisted (not Private — I need to be able to open it). Share the link.
// the video is how I tell the difference between a student who built it and one who copy-pasted a tutorial.
Public GitHub repo
Your Terraform code, plus a README explaining how to run it and what each file does.
Repo must be public (or grant access to @Markuspg1).
Include the Kubernetes manifests for the sample app you deployed.
YouTube walkthrough video
15–25 minutes of you speaking through the architecture and running the commands live (see "Video walkthrough" above). Upload as Unlisted. This is what gets weighted the most.
- — Email both URLs to pereira.giron@gmail.com with subject [CLOUDINTEGRATIONS]Project · AKS.
- — No PDFs. No screenshot albums. No zip files. Two URLs is the whole submission.
- — Late submissions accepted with a partial deduction — talk to Marco first.
- — Check before sending: GitHub repo opens in incognito, YouTube link plays in incognito. If either is locked, the submission does not count.