Introduction
Imagine that you work as a software engineer for an online outdoor clothing retailer. You’re responsible for deploying and updating the retailer’s online storefront, a cloud-native, microservices-based .NET app.
To fulfill project requirements and enhance your team’s agile development practices, you decide to compare continuous integration and continuous deployment (CI/CD) through and Azure Pipelines. CI/CD pipelines use a series of automated steps to compile and deploy apps from build through all environments.
Because the current web has a microservices architecture, and each microservice deploys independently, you start by setting up CI/CD for a single service.
The .NET web API, named the product service, supports all the backend catalog features of the website. In this module, you’ll implement a CI/CD pipeline for the product service.
This module guides you through the following steps:
- Authenticate GitHub Actions to a container registry.
- Securely store sensitive information that GitHub Actions uses.
- Implement an action to build the container image for a microservice.
- Modify and commit the microservice code to trigger a build.
- Implement an action to deploy the updated container to an Azure Kubernetes Service (AKS) cluster.
- Modify and commit a Helm chart to trigger the deployment.
- Revert the microservice to the previous deployment.
You use your own Azure subscription to deploy the resources in this module. If you don’t have an Azure subscription, create a before you begin.
Important
To avoid unnecessary charges in your Azure subscription, be sure to delete your Azure resources when you’re done with this module.
Prerequisites
- Conceptual knowledge of DevOps practices.
- Conceptual knowledge of containers, Docker, and AKS.
- Access to an Azure subscription with Owner permissions.
- Access to a GitHub account.
- Ability to run development containers in Visual Studio Code or GitHub Codespaces, set up as described in the following section.
Development container
This module includes configuration files that define a , or dev container. Using a dev container ensures a standardized environment that’s preconfigured with the required tools.