My First Experiences With Azure DevOps
25 August 2020
Nikolaas De Burggrave
What is Azure DevOps?
Before I delve deeper into the details, it’s important to have a brief look at what Azure DevOps is exactly. The service is part of Azure Cloud and consists of 5 key components:
- Test Plans
The components relevant to my journey are both pipelines and repos. The other three components are not used by our team, so we won’t discuss them in depth.
Pipelines |Simply put: by using pipelines you can build, test and deploy your applications continuously with support for Kubernetes and containers.
Repos | Repos are your endless supply of private Git repositories.
How do I use Azure DevOps?
I was in charge of an assignment where Azure was the chosen Cloud. Soon it became clear how easy to use Azure is, and how well things are working together.
Important remark: you don’t just have to use the Azure DevOps service, you can use a couple of the Azure services in order to create your intended application.
Here is an overview of the services that come in handy when building an application on Kubernetes with Azure DevOps:
- A GitHub account to store your repository (or use the integrated repository in Azure DevOps)
- Azure DevOps service to build your pipelines
- Azure Container Registry to store your pipeline images
- Azure Key Vault
- Azure Application Insights
I quickly figured out that it’s fairly straightforward to create your own pipelines for your application. The procedure is as follows.
- You have your project in a repo. This can be from GitHub, Bitbucket Cloud (not Server), or it can be built in Azure Repos Git.
- Subsequently, the created pipeline will use the repository to build your docker image, using Helm.
- This image will be pushed into an Azure Container Registry. In your Azure subscription, you will need to set up an Azure Container Registry. This will store all the container images that you push with Azure DevOps.
- The created pipeline is succeeded by your release pipeline. This creates your Helm chart, which will also be put in the Container Registry.
- The same release pipeline will also build your microservice/application in your Azure Kubernetes environment.
Our environment quickly expanded to a larger network, combining Azure DevOps with other Azure services.
- We started using Azure Key Vault to store kubernetes secrets and linked them by variable groups.
- The pipelines got improved by the use of task groups. This created a “general template”, from which all pipelines would start. It reduced a lot of overhead on your pipelines and kept them easy to read.
It basically means that you create a reusable task which can be added to your build or release pipelines. You then extract all parameterized values from that task and abstract the remainder.
- An implementation of Terraform became necessary as the project extended. More environments got set up and more automation was needed. We have used the Azure DevOps Repos for the Terraform scripts.
As I started working with Azure DevOps and other Azure services more often, I really quite enjoyed it. The Azure CLI is also a useful addition which can be used in your pipelines to execute tasks. Some services might be still in their early stages, but I can see that it develops at a good rate. Overall, my first experiences with Azure DevOps are quite good:
- Clear and transparent layout.
- Every service is built to work together.
- Azure has built-in monitoring tools for your Kubernetes environment, which you can set up using your pipelines. This is provided through the Azure Application Insights service.
- The possibility of building multiple pipelines at the same time is really useful.
- It’s a fairly ‘new’ product, but it’s developing rapidly. Every 3 weeks there are new features and updates.
- The automation process is easy to learn.
Do you have still have some questions about Azure DevOps? Don’t hesitate to contact us, our experts are ready to help!