VOOZH about

URL: https://thenewstack.io/exploring-microsoft-radius-application-platform/

⇱ Exploring Microsoft Radius Application Platform - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2023-10-27 03:00:38
Exploring Microsoft Radius Application Platform
tutorial,
Cloud Native Ecosystem / Infrastructure as Code / Kubernetes / Operations

Exploring Microsoft Radius Application Platform

Radius is an open source application platform that abstracts the deployment runtime to enable developers and operators to target diverse runtime environments, including Kubernetes, cloud, and edge infrastructure.
Oct 27th, 2023 3:00am by Janakiram MSV
👁 Featued image for: Exploring Microsoft Radius Application Platform

Microsoft recently launched Radius, a cloud native application deployment platform. While there are many platform choices for developers that abstract Kubernetes, Radius takes a different approach by unifying the deployment model not just for Kubernetes but also cloud platforms such as Azure, Amazon Web Services, and Google Cloud Platform.

What Is Radius?

Radius is an open source application platform that abstracts the deployment runtime to enable developers and operators to target diverse runtime environments, including Kubernetes, cloud, and edge infrastructure.

Operators define and publish a set of services called Recipes that developers can consume in their applications. When you deploy Radius, you get an initial set of containerized local-dev Recipes pre-registered in your environment. These Recipes are based on lightweight containers to enable developers to get started immediately. Moving an application to production is as simple as changing the Recipe based on a managed service in the cloud.

Applications consume Recipes similar to how a program consumes an external library or a module. An application is a collection of container images and Recipes that are deployed as one unit.

Both Recipes and applications are declared in either Bicep or Terraform. This approach brings a clear separation of concerns between infrastructure operators and developers by automating infrastructure deployment. Developers select the resource they want in their application (MongoDB, Redis Cache, Dapr State Store, etc.), and infrastructure operators define in their environment how these resources should be deployed and configured (local containers, Azure resources, AWS resources, etc.).

While the dependencies may be based on cloud services, the application is always running on a Kubernetes cluster as a set of microservices packaged as containers.

Getting Started with Radius

Let’s look at Radius and the workflow involved in deploying containerized workloads.

Radius runs on Kubernetes and exposes an API to manage the lifecycle of applications and their dependencies.

With the kubeconfig file in place, install and initialize Radius. This process also scaffolds the template for an application, which we will modify to run a simple NGINX container image.

Running the rad init command deploys a set of resources in Kubernetes and creates a couple of files in the current directory. Let’s first explore what happens to the Kubernetes cluster.

👁 Image

First, there is a new namespace that contains the resources required by the Radius control plane.

👁 Image

It also creates a set of CRDs responsible for managing the Recipes and applications.

👁 Image

👁 Image

We will revisit this when we discuss the architecture of Radius. Let’s deploy our first application through Radius.

In the same directory where you ran the initialization, open the file app.bicep and change the image to the standard NGINX image and the port to 80.

👁 Image

Let’s run the application and access it by forwarding the port of the application.

Since we ran the application from a directory named simple, it assumes the same name. You can verify this by accessing the file rad.yaml stored under the .rad directory.

👁 Image

rad resource expose --application simple containers demo --port 8080 --remote-port 80

Feel free to explore the Kubernetes resources created by Radius related to the application available within the default-simple namespace.

Consuming a Recipe in an App

Let’s now deploy the popular Azure Vote sample application through Radius. This application has one container with a frontend web interface that talks to the Redis cache to store the state.

Create a directory calledvote and scaffold the app with rad init.

Instead of adding Redis as yet another container, we will use the built-in Radius Recipe from the local-dev environment. It’s available as ghcr.io/radius-project/recipes/local-dev/rediscaches:0.26

👁 Image

Modify the file app.bicep to add the Redis Recipe to it.

resource redis 'Applications.Datastores/redisCaches@2023-10-01-preview' = {
 name: 'redis'
 properties: {
 environment: environment
 application: application
 }
}

Let’s replace the default app definition with the frontend container of the Azure Vote sample. 

resource frontend 'Applications.Core/containers@2023-10-01-preview' = {
 name: 'frontend'
 properties: {
 application: application
 environment: environment
 container: {
 image: 'mcr.microsoft.com/azuredocs/azure-vote-front:v1'
 env: {
 REDIS: redis.properties.host
 }
 ports: {
 web: {
 containerPort: 80
 } 
 }
 }
 connections: {
 redis: {
 source: redis.id
 }
 }
 }
}

Notice how the Redis Recipe is bound to the frontend web container in the connections section. This enables the Recipe to inject the properties as environment variables into the application. The host property of the Recipe is mapped to the REDIS environment variable of the web app.

Here is the complete Bicep definition of the Azure Vote application:

import radius as radius

param environment string
param application string

resource frontend 'Applications.Core/containers@2023-10-01-preview' = {
 name: 'frontend'
 properties: {
 application: application
 environment: environment
 container: {
 image: 'mcr.microsoft.com/azuredocs/azure-vote-front:v1'
 env: {
 REDIS: redis.properties.host
 }
 ports: {
 web: {
 containerPort: 80
 } 
 }
 }
 connections: {
 redis: {
 source: redis.id
 }
 }
 }
}

resource redis 'Applications.Datastores/redisCaches@2023-10-01-preview' = {
 name: 'redis'
 properties: {
 environment: environment
 application: application
 }
}

Let’s run the application and access it through port forwarding.

rad run app.bicep 
rad resource expose --application vote containers frontend --port 8080 --remote-port 80

👁 Image

We have deployed an application through Radius that has a container and a Recipe. It is possible to replace the Redis Recipe to point to Azure Cache for Redis or Amazon ElastiCache for Redis without any change to the application.

In the next part, we will take a closer look at the architecture of Radius. Stay tuned.

TRENDING STORIES
Janakiram MSV (Jani) is a practicing architect, research analyst, and advisor to Silicon Valley startups. He focuses on the convergence of modern infrastructure powered by cloud-native technology and machine intelligence driven by generative AI. Before becoming an entrepreneur, he spent...
Read more from Janakiram MSV
SHARE THIS STORY
TRENDING STORIES
NGINX is a sponsor of The New Stack.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.