- Published on
DevOps Project-07: DevOps Journey Using Azure DevOps
- Authors
- Name
- NotHarshhaa
- GitHub
This tutorial/lab setup is going to take you through a DevOps journey using Azure DevOps. From setting up your pipeline to deploying an application to your Azure Kubernetes cluster!
What you will learn
In this tutorial/lab, you will learn:
- Initial setup of Azure DevOps to begin deploying to Azure using Pipelines as code
- Deploy Azure resources using Terraform modules
- Deploy a test application to Azure Kubernetes Service
- An understanding of CI/CD with automated application deployments
- Test your deployed Azure resources using automated testing
- Reviewing monitoring and alerting using Application & Container Insights
This setup is based on a somewhat "real-life" scenario and setup mirrors an example of a real-world setup!
Tutorial/labs format
Prior to starting the tutorial/labs - please review the below Prerequisites
Labs are found here, complete each one in number sequence 1...2...3...etc
Initial Setup starts you off with setting up:
- Azure DevOps Organisation Setup
- Azure DevOps Project Creation
- Azure Service Principal Creation
- Create Blob Storage location for Terraform State file
Create Azure AD Group for AKS Admins
- Create Azure AD AKS Admin Group
Setup Azure DevOps Pipeline The purpose of this lab is to create all of the Azure cloud services you'll need from an environment/infrastructure perspective to run the test application.
- Pipeline setup
- Setup Azure DevOps Pipeline
- Pipeline setup
Deploy Application to Azure Container Registry Deploy sample Application to Container Registry.
- Deploy Application to Azure Container Registry
- Build the Docker Image Locally
- Run The Docker Image Locally
- Deploy sample Application to Container Registry
- Deploy Application to Azure Container Registry
Deploy Application to Azure Kubernetes Cluster
- Terraform to add role assignment for AKS managed identity to access the deployed ACR
Add Application Insights to Terraform
- Application Insights will be used to monitor the application once deployed!
Add Azure Key Vault to Terraform
- Azure Key Vault will be used to store secrets used within your Azure DevOps Variable Group.
Update Pipeline to Deploy Application to AKS
- Update Pipeline to Deploy asp Application to AKS
Introducing CI/CD to your pipeline
- Begin CI/CD with Pipeline Trigger for automatic pipeline runs
Automated deployment of your AKS Application
- In previous labs; the application was initially manually setup for its build tag. In CI/CD, this would be automated and the Application on the AKS cluster would update each time the pipeline has been ran.
Testing your deployed Azure Infrastructure
Testing Infrastructure using Inspec
- Using Inspec-Azure to test your Azure Resources
Inspec Testing using Azure DevOps Pipeline
- Run Inspec-Tests using Azure DevOps
- View Inspec reports in Azure DevOps
- Using Application Insights to view telemetry data!
Azure Application Insights Availability Tests
- Configure availability test using Application Insights
Log Analytics Container Insights
- Reviewing Log Analytics Container Insights
CI/CD
You will learn how to setup and configure a pipeline that involves CI/CD
- Developer changes application source code.
- Application is committed to the source code repository in Azure Repos.
- Continuous integration triggers application build
- Continuous deployment within Azure Pipelines triggers an automated deployment with environment-specific configuration values.
- Updated Application is deployed to environment specific Kubernetes cluster
- Application Insights collects and analyzes health, performance, and usage data.
- Azure Monitor collects and analyzes health, performance, and usage data.
🛠️ Author & Community
This project is crafted by Harshhaa 💡.
I’d love to hear your feedback! Feel free to share your thoughts.
📧 Connect with me:
- GitHub: @NotHarshhaa
- Blog: ProDevOpsGuy
- Telegram Community: Join Here
- LinkedIn: Harshhaa Vardhan Reddy
⭐ Support the Project
If you found this helpful, consider starring ⭐ the repository and sharing it with your network! 🚀