We've selected our favorite tips and tricks created by Michael Crump and are delivering fresh technical content on Azure all April! Miss a day (or more)? Catch up with the series.
Don't have Azure? Grab a free subscription.
I want to give you a quick tour around Azure DevOps and Azure Kubernetes Service(AKS) using Node.js.
We'll walk through creating an AKS cluster using an Azure DevOps and take a look under the hood to help understand how to get started with AKS.
The Azure Portal and Azure DevOps is always evolving and improving! If a screenshot doesn't match exactly what you're seeing, that's why. I believe the explanations are enough to help you find your way. If you run into issues, comment below and we can figure it out together!
What The Heck Is Azure DevOps? And AKS?! 😅
Azure DevOps is a cloud service (formally called VSTS) for collaborating on code development. It essentially powers the entire software delivery lifecycle for engineering teams. You can create processes for you and your team around:
- Source control
- CD/CD
- Agile tooling
- Testing
- Builds
- Releases
You can think of Azure DevOps as a more verbose cousin to Jenkins or CircleCI.
Don't wait! Check out Azure DevOps and see how powerful it is.
Azure Kubernetes Service (AKS) manages your hosted Kubernetes environment, making it quick and easy to deploy and manage containerized applications without container orchestration expertise. It also eliminates the burden of ongoing operations and maintenance by provisioning, upgrading, and scaling resources on demand, without taking your applications offline.
Kubernetes is HOT. We've got you covered on everything you need to know.
Create Your DevOps Project 👩🏾💻
A common pitfall in this tutorial is creating the project before your organization has been created in Azure. If you run into any errors, ensure your organization was created in Azure.
- Open the Azure portal.
- Search for "DevOps" and choose
DevOps Project
. - Click the
Add
button. - Select the Node.js application, click it and then the
Next
button. - Select
Express.js
for the application framework and clickNext
. - For deploying the application, select
Kubernetes Service
and clickNext
. - Now just give the DevOps project an organization name and a project name. You can make this anything you want.
Provide a subscription and a cluster name and click the Done
button.
Boom! You did it. Seriously. It's that easy.
A lot of amazing work is happening in the background, so now is the time to drink a cup of coffee or read another post (or drink some wine...) before clicking the refresh button on your DevOps Projects list.
Click on your DevOps project name in the list to go to the DevOps project dashboard. This has everything you need to access the source code repository and the application build and release pipelines. These pipelines automate the steps needed to take your committed code, integrate it, build it and deploy it to a live Kubernetes environment.
There are also links to your live deployed application, the Kubernetes cluster and Application Insights (telemetry for your live site).
You should also have received an email from Azure DevOps or an alert in the portal letting you know the project is ready. If you'd like, set up team members in your project.
Taking A Peek At The Code 🔍
In the CI/CD pipeline, click on the commit to see the code. You can also click on Master
to take you to the full file list.
This takes you to the commit for the repo we just released containing the deployed sample app.
When you created the DevOps project, it cloned the source code from the devops-project-samples
GitHub project and added it your DevOps projects and did a lot of the initial plumbing for you. How cool is that?
Taking A Look At The Build 🤓
Back on the DevOps Project dashboard, click the Build
link that has the successful build number.
This takes you to the new Azure DevOps Pipelines build that was created for the project. Now click the Edit
button at the top.
You now see the steps created for building a container image and a Helm package. Helm is used to deploy applications to Kubernetes and is the default in DevOps projects that target Kubernetes.
Microsoft is solving really hard problems to make your life easier.
Clicking on either of the Docker tasks will show you the new Azure Container Registry (ACR) that the DevOps project created, along with the image name, plus the build number.
The build creates an ACR as well as builds and pushes the image using Docker. It automatically checks if Helm is properly installed and begins packaging and deploying the charts/sampleapp
directory. It also creates the ARM templates and finally publishes the build artifact.
If you switch back over to Repos
, then Files
, then Applications
, you can see the charts/sampleapp
folder.
We'll finish up the pipeline section by looking at dev
and reviewing the resources
section.
Finishing Up Your Pipelines 🔧
Back on the DevOps Project dashboard, click the Release
link with the number.
Be sure the build you select is GREEN. It signifies a successful build without errors.
If the build is RED, click on it and find the error. A common error you might encounter is
The subscription is not registered to use namespace 'Microsoft.ContainerService'
One way to quickly resolve that is by bringing up Cloud Shell, selecting PowerShell and running the following command:
While this is designed for PowerShell, if you're an avid Bash user, will you comment below with the command you used?
PS Azure:\> Register-AzureRmResourceProvider -ProviderNamespace “Microsoft.ContainerService”
You'll receive an output similar to below.
ProviderNamespace : Microsoft.ContainerService
RegistrationState : Registering
ResourceTypes : {containerServices, managedClusters, locations, locations/operationresults...}
Locations : {Japan East, Central US, East US 2, Japan West...}
If all goes well, you'll see the basic Azure DevOps release pipeline. Click the Edit
release button at the top.
Then click the Edit
tasks link.
You now see the list of tasks that need to be run such as Creating the AKS cluster, running a PowerShell script and packaging and deploying Helm charts.
Azure Resources In A Nutshell 🥜
Back in the DevOps Project dashboard, let’s look at the Azure resources and Application Insights. The resources are the URL to your live site running in Kubernetes and a link to the AKS cluster. The last link will take you to see the live telemetry for your site provided by Application Insights.
Telemetry is just a fancy way of saying this is how you monitor the health of your app.
Live App
Click on the External Endpoint
link to be taken to the deployed application.
AKS
The second link is to the Azure Kubernetes Service.
Application Insights
The last link shows the Application Insights created for the service which includes powerful analytics tools to help you diagnose issues and to understand what users actually do with your app. It's designed to help you continuously improve performance and usability and works seamlessly with Azure DevOps
Now if you go to Resource Groups
on the Azure portal and search for the name of the DevOps project, you’ll see that three resource groups were created.
Remember! Avoid any costs related to this tutorial by deleting the resources created.
Want more? Don't wait. Continue learning about Azure DevOps.
We'll be posting articles every day in April, so stay tuned! Or jump ahead and check out more tips and tricks now.
Top comments (3)
This looks a lot simpler than when we had started with AKS on a project without DevOps. We had a lot of networking problems between the nodes and once, the whole cluster died. Not very satisfied even with the performance, compared to Amazon EKS, pods take 3x the time to reach live probe status.
Can you suggest while taking from Dev stage to Prod stage(higher environments) what are the changes need to expected? how to reach from Dev to Prod ?
Some comments may only be visible to logged-in visitors. Sign in to view all comments.