Skip to main content

Azure Dev Spaces - A free tool for developing app on top of AKS

In this post, we will talk about Azure Dev Spaces and how it can improve the developing and support experience when you are working with AKS (Azure Kubernetes Service).

Working with containers and AKS it is a great experience when you develop the application on your local machine, or you are in production and everything works as expected.
The friction appears in the moment when you have some issues with your application, and you want to debug it. Recreating a dedicated env. just for you can be complicated, time-consuming and expensive.  This is where Azure Dev Spaces comes to fill the gap. It is enabling us to deploy and to remote debugging of our services directly inside the AKS cluster.

Directly from our preferred IDE we can deploy our container inside AKS and do a remote debugging session to it, adding breakpoint directly in Visual Studio.

How is this possible?
Azure Dev Spaces tools that are installed on your local machine are creating a secure tunnel between your device and AKS. This SSH tunnel is used to communicate with your container and enabling the remote debugging session.
From the development perspective, the experience is the same as the code would run on your local machine. Even the service URL that can be used to access the service web endpoint is with 'localhost'. Behind the scene, the calls are redirected to your container that is running inside AKS.
All the configuration related to Docker and Kubernetes are generated on the fly automatically by the CLI.

Sharing the cluster
Azure Dev Spaces enables us to share an AKS cluster between team members. Even if multiple containers can run inside the AKS, each developer will be able to do remote debugging only to the services that he deployed and have access.
In this way, you can have an environment that it is end-to-end configured and debug only one of the service.

Supported languages
At this moment there is full support for Node.JS and .NET from IDEs like Visual Studio 2017, Visual Studio Code od CLI.

Code changes
There is a nice feature, integrated with the IDE that enables us to make changes to our code and just hit Refresh button. The debug session will still remain active, and a new version of your service will be redeployed automatically in the same container instance.
Remarks: This is possible only in the Visual Studio Code. In Visual Studio you will need to stop the debug session, change the code and start debugging. 
During the debug session you will have access to all debugging information as you would have for the code that it is running on your local machine.
Another useful feature is the ability to deploy and debug multiple services. From the IDE you are allowed to deploy and start debugging of multiple services at the same time. This is great when you have an issue on multiple services, and you want to identify the root problem.

Space isolation
As I said before, inside Azure Dev Spaces, you are allowed to share the space and services between the team. There might be cases when you don't want to do this, and you want to have your own isolate space with your own configuration and services.
For this, you are free to create your own space, that is entirely isolated from the team one. Inside Azure Dev Spaces you are free to create as many spaces you need - shared by the team or 'private.' All of them can be created inside the same AKS cluster, allowing you to control and reduce the cost of Azure for DEV and TEST environments.


Space management
The CLI gives you the ability to get the list of all spaces that are created inside an AKS cluster. Be aware that a space it is not deleted automatically at the moment when you stop debugging. For this, you need to run commands like 'remove-dev-spaces' that deletes all the Dev Spaces from the AKS cluster.
az aks remove-dev-spaces --name rvaks--resource-group rvaksdemo

Useful commands

  • azds list-up : Check the list of dev spaces resource group
  • azds space list : List of spaces
  • azds space select : Select a specific space
  • az aks use-dev-spaces -n rvaks -g rvaksdemo --update : Update Dev Space CLI extension and command tools
Overview
Azure Dev Space it's a powerful development tool, that comes hand in hand with AKS. It shall be part of the tools used by the team when you are working with AKS in DEV and TEST scenarios. And yes, it is FREE.

Comments

Popular posts from this blog

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(

Azure AD and AWS Cognito side-by-side

In the last few weeks, I was involved in multiple opportunities on Microsoft Azure and Amazon, where we had to analyse AWS Cognito, Azure AD and other solutions that are available on the market. I decided to consolidate in one post all features and differences that I identified for both of them that we should need to take into account. Take into account that Azure AD is an identity and access management services well integrated with Microsoft stack. In comparison, AWS Cognito is just a user sign-up, sign-in and access control and nothing more. The focus is not on the main features, is more on small things that can make a difference when you want to decide where we want to store and manage our users.  This information might be useful in the future when we need to decide where we want to keep and manage our users.  Feature Azure AD (B2C, B2C) AWS Cognito Access token lifetime Default 1h – the value is configurable 1h – cannot be modified

What to do when you hit the throughput limits of Azure Storage (Blobs)

In this post we will talk about how we can detect when we hit a throughput limit of Azure Storage and what we can do in that moment. Context If we take a look on Scalability Targets of Azure Storage ( https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/ ) we will observe that the limits are prety high. But, based on our business logic we can end up at this limits. If you create a system that is hitted by a high number of device, you can hit easily the total number of requests rate that can be done on a Storage Account. This limits on Azure is 20.000 IOPS (entities or messages per second) where (and this is very important) the size of the request is 1KB. Normally, if you make a load tests where 20.000 clients will hit different blobs storages from the same Azure Storage Account, this limits can be reached. How we can detect this problem? From client, we can detect that this limits was reached based on the HTTP error code that is returned by HTTP