Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4b5b056
Revamp tutorial
Reshrahim Oct 16, 2025
28b101a
Revamp tutorial
Reshrahim Oct 16, 2025
cb49055
Fix docsy error
Reshrahim Oct 16, 2025
eb463f2
Merge branch 're/tutorial' of https://github.com/radius-project/docs …
Reshrahim Oct 16, 2025
f362c1c
fix docsy
Reshrahim Oct 16, 2025
3fe4a37
Fix minor things
Reshrahim Oct 16, 2025
2717bfd
Fix minor things
Reshrahim Oct 16, 2025
7a8896a
Address feedback-part1
Reshrahim Oct 17, 2025
c0ce03a
Address feedback on tutorial page
Reshrahim Oct 17, 2025
bbcc5c4
Update Recipe
Reshrahim Oct 21, 2025
e131a76
Add deploy application and other changes
Reshrahim Oct 21, 2025
0266f3e
remove eshop
Reshrahim Oct 21, 2025
1386611
Download from contrib
Reshrahim Oct 21, 2025
e2c6dd5
Address feedback
Reshrahim Oct 22, 2025
f53e3c0
Address feedback
Reshrahim Oct 22, 2025
d46a87c
spell check
Reshrahim Oct 22, 2025
1e4f1a5
Merge branch 'edge' into re/tutorial
Reshrahim Oct 23, 2025
0a7cabb
Apply suggestions from code review
Reshrahim Oct 23, 2025
3f13686
Merge branch 'edge' into re/tutorial
Reshrahim Oct 24, 2025
5410b23
Apply suggestions from code review
Reshrahim Oct 24, 2025
2d017f1
Apply suggestions from code review
Reshrahim Oct 24, 2025
e6b0b8e
Update docs/content/tutorials/create-environment/index.md
Reshrahim Oct 24, 2025
e46b155
Apply suggestions from code review
Reshrahim Oct 24, 2025
e4e47f5
Update install-rad-cli.md
Reshrahim Oct 24, 2025
41c05f8
Apply suggestions from code review
Reshrahim Oct 24, 2025
6e60ff7
Address feedback
Reshrahim Oct 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/content/concepts/faq/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Currently yes. Although Radius is architected to run on any platform, today Kube

### Can I incrementally adopt, or "try out" Radius?

Yes. The easiest way to add Radius to an existing application is through [Radius annotations]({{< ref "/tutorials/tutorial-add-radius#step-3-add-radius-to-the-guestbook-application" >}}). Simply add the annotations to your existing Helm chart or Kubernetes YAML and you can use the Radius app graph, connections, and Recipes. [Try the tutorial]({{< ref "/tutorials/tutorial-add-radius" >}}) to learn more.
Yes. The easiest way to add Radius to an existing application is through [Radius annotations]({{< ref "/reference/samples/tutorial-add-radius#step-3-add-radius-to-the-guestbook-application" >}}). Simply add the annotations to your existing Helm chart or Kubernetes YAML and you can use the Radius app graph, connections, and Recipes. [Try the tutorial]({{< ref "/reference/samples/tutorial-add-radius" >}}) to learn more.

### Do I have to self-host Radius? Is there a managed service for Radius?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,6 @@ Run the following command to [delete]({{< ref "guides/deploy-apps/howto-delete"

## Further reading

- [Radius Dapr tutorial]({{< ref "tutorials/tutorial-dapr" >}})
- [Radius Dapr tutorial]({{< ref "reference/samples/tutorial-dapr" >}})
- [Dapr in Radius containers]({{< ref "guides/author-apps/containers/overview#kubernetes" >}})
- [Dapr sidecar schema]({{< ref "reference/resource-schema/dapr-schema/dapr-extension" >}})
12 changes: 3 additions & 9 deletions docs/content/reference/cli/rad_group_delete.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,9 @@ Delete a resource group

### Synopsis

Delete a resource group and all its resources.

The command will:
- Check if the resource group contains any deployed resources
- Show an appropriate confirmation prompt based on whether resources exist
- Delete all resources in the group (if any) before deleting the group itself

Use the --yes flag to skip confirmation prompts.
Delete a resource group.

Delete a resource group if it is empty. If not empty, delete the contents and try again

```
rad group delete resourcegroupname [flags]
Expand All @@ -29,7 +24,6 @@ rad group delete resourcegroupname [flags]

```
rad group delete rgprod
rad group delete rgprod --yes
```

### Options
Expand Down
3 changes: 0 additions & 3 deletions docs/content/reference/cli/rad_install_kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,6 @@ rad install kubernetes --chart /root/radius/deploy/Chart
# Force re-install Radius with latest version
rad install kubernetes --reinstall

# Install Radius with custom Terraform log level
rad install kubernetes --set global.terraform.loglevel=DEBUG

```

### Options
Expand Down
1 change: 0 additions & 1 deletion docs/content/reference/cli/rad_uninstall_kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ rad uninstall kubernetes --kubecontext my-kubecontext
-h, --help help for kubernetes
--kubecontext string The Kubernetes context to use, will use the default if unset
--purge Delete all data stored by Radius.
-y, --yes Automatically confirm uninstall prompts.
```

### Options inherited from parent commands
Expand Down
7 changes: 7 additions & 0 deletions docs/content/reference/samples/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
type: docs
title: "Samples"
linkTitle: "Samples"
description: "Reference samples"
weight: 400
---
Original file line number Diff line number Diff line change
Expand Up @@ -321,5 +321,5 @@ This output shows that Radius has detected the three container resources in the

- To learn more about authoring Radius applications, visit the [Authoring applications guide]({{< ref "guides/author-apps" >}})
- To learn more about deploying applications using Radius, visit the [Deploying applications guide]({{< ref "guides/deploy-apps" >}})
- To learn more about using the [Radius Connections]({{< ref "guides/author-apps/containers/overview#connections" >}}) annotations to connect your containers and resources, visit the [Radius Helm tutorial]({{< ref "tutorials/helm#step-6-add-connection" >}})
- To learn more about using the [Radius Connections]({{< ref "guides/author-apps/containers/overview#connections" >}}) annotations to connect your containers and resources, visit the [Radius Helm tutorial]({{< ref "reference/samples/helm#step-6-add-connection" >}})
- To learn more about Radius Recipes, visit the [Recipes guide]({{< ref "guides/recipes" >}})
22 changes: 19 additions & 3 deletions docs/content/tutorials/_index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,23 @@
---
type: docs
title: "Tutorials"
linkTitle: "Tutorials"
description: "Follow along with a set of tutorials to learn how to use the Radius platform"
title: "Tutorial: Deploy a To Do List Application"
linkTitle: "Tutorial"
description: "Step-by-step guide to define and deploy a Radius application"
weight: 30
---

This hands-on tutorial guides you through deploying a To Do List application that demonstrates key Radius concepts and capabilities. This will take approximately 30-60 minutes to complete.

## Prerequisites

- A Kubernetes cluster (local using kind/minikube or cloud-based)
- `kubectl` installed
- Basic familiarity with YAML, Terraform and Bicep

## Learning Outcomes

After completing this tutorial, you'll be able to:

- Understand Radius concepts like Resource Types, Environments, and Recipes
- Create Radius Resource Types and Recipes for your applications
- Deploy your applications using Radius
91 changes: 91 additions & 0 deletions docs/content/tutorials/create-environment/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
type: docs
title: "3. Create Environment"
linkTitle: "3. Create Environment"
description: "Create a Radius Environment to deploy the application"
weight: 400
---

## Create a workspace

Radius Workspace is a combination of a Kubernetes context, a Radius Environment, and a Resource Group.

Create a new workspace using the [`rad workspace create`]({{< ref rad_workspace_create >}}) command to manage the cluster configuration.

```bash
rad workspace create kubernetes my-workspace
```

```
$ rad workspace create my-workspace
Creating workspace 'my-workspace'...
Workspace 'my-workspace' created successfully.
```

Show the current Workspace. The `--output json` will show all the details of the Workspace.

```bash
rad workspace show -o json
```

```
$ rad workspace show -o json
{
"connection": {
"context": "my-kube-context",
"kind": "kubernetes"
},
"environment": "/planes/radius/local/resourceGroups/default/providers/Applications.Core/environments/default",
"scope": "/planes/radius/local/resourceGroups/default"
}
```

Notice that a
{{< alert title="💡 Workspaces" color="info" >}}
[Workspaces]({{< ref Workspaces >}}) are configurations set for the Radius CLI. Similar to kubectl contexts, you can have multiple Workspaces pointing to different Radius installation, Resource Groups, and Environments.
{{< /alert >}}


## Create a Radius Resource Group

Create a Radius Resource Group using the rad group create command.

```bash
rad group create my-group
```

## Create a Radius Environment

Create a Radius Environment using the rad environment create command.

```bash
rad environment create my-env
```

Inspect the Environment using the [`rad environment show`]({{< ref rad_environment_show >}}) commands.

```bash
rad environment show my-env --output json
```

```
$ rad environment show my-env --output json
{
"id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/environments/my-env",
"location": "global",
"name": "my-env",
"properties": {
"compute": {
"kind": "kubernetes",
"namespace": "default"
},
"provisioningState": "Succeeded",
"recipes": {
...
}
},
...
"type": "Applications.Core/environments"
}
```
{{< button text="Next Step: Create Recipe" page="create-recipe" color="primary" >}}
115 changes: 115 additions & 0 deletions docs/content/tutorials/create-recipe/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
type: docs
title: "4. Create Recipes"
linkTitle: "4. Create Recipes"
description: "Author Bicep or Terraform Recipes implementing the Resource Type"
weight: 500
---
## Prerequisites

You will use either Bicep or Terraform to author Recipes that implement the Resource Type you created in Step 2 and hence need a location to store your Recipe:

- **Terraform** configurations must be stored in a Git repository. Ideally for this tutorial the Git repository has anonymous access. If not, you will need to configure [Git authentication]({{< ref "guides/recipes/terraform/howto-private-registry" >}}).

- **Bicep** templates must be stored in an OCI registry. As with Git, you must have anonymous access to the registry or configure [authentication]({{< ref "guides/recipes/howto-private-bicep-registry" >}}).

## Create a Recipe for the PostgreSQL resource type

[Recipes]({{< ref "/guides/recipes/overview" >}}) define how resource are deployed. Recipes can be either Terraform configurations or Bicep templates. Once the Terraform configuration or Bicep template has been published in a Git repo or OCI registry, it can be registered as a recipe in a Radius environment.

{{< tabs Terraform Bicep >}}{{% codetab %}}

Terraform configurations must be stored in a Git repository accessible by Radius. As discussed in the prerequisites, using a Git repository with anonymous access is easiest for this tutorial, otherwise you will need to configure [Git authentication]({{< ref "guides/recipes/terraform/howto-private-registry" >}}). Learn more about Recipes in this [How-to guide]({{< ref "/guides/recipes/howto-author-recipes" >}}).

1. Create a new directory in your Git repository for the PostgreSQL Terraform module then create the `main.tf` file and add the following:

{{% rad file="snippets/recipes/terraform/main.tf" embed=true %}}

<!--TODO: Replace with button to download like in the composite recipe tutorial. Save the full contents for the Recipe how-to which explains what all of this is. -->

1. Register the Terraform configuration as a Recipe called `default`. Since Recipes are registered with Environments, use the `default` environment created in the previous tutorial.

```bash
rad recipe register default \
--environment default \
--resource-type Radius.Resources/postgreSQL \
--template-kind terraform \
--template-path git::<git-server-name>/<repository-name>.git//<directory>/<subdirectory>
```

For example, if the `main.tf` file is in a GitHub repository named `recipes` in a directory called `/kubernetes/postgresql`, the command would look like this:

```bash
--template-path git::https://github.com/<github-user-name>/recipes.git//kubernetes/postgresql
```

The output will be:

```
Successfully linked recipe "default" to environment "default"
```

1. Verify the Recipe is registered using the [`rad recipe list`]({{< ref rad_recipe_list >}}) command.

```bash
rad recipe list
```

```
$ rad recipe list
RECIPE TYPE TEMPLATE KIND TEMPLATE VERSION TEMPLATE
...
default Radius.Resources/postgreSQL terraform git::https://github.com/<github-user-name>/recipes.git//kubernetes/postgres
```

{{% /codetab %}}
{{% codetab %}}

Bicep templates must be stored in an OCI registry accessible by Radius. As discussed in the prerequisites, using an OCI registry with anonymous access is easiest for this tutorial, otherwise you will need to configure [authentication]({{< ref "guides/recipes/howto-private-bicep-registry" >}}). Learn more about Recipes in this [How-to guide]({{< ref "/guides/recipes/howto-author-recipes" >}}).

1. Create a new file called `postgresql.bicep` and add the following:

{{% rad file="snippets/recipes/bicep/postgresql.bicep" embed=true %}}

<!--TODO: Replace with button to download like in the composite recipe tutorial. Save the full contents for the Recipe how-to which explains what all of this is. -->

1. Publish the Recipe to the OCI registry. Make sure to replace `host` and `registry` with your container registry.

```bash
rad bicep publish --file postgresql.bicep --target br:<host>/<registry>/postgresql:latest
```

```
Successfully published Bicep file "postgresql.bicep" to "<host>/<registry>/postgresql:latest"
```

1. Register the Bicep template as a Recipe called `default`. Since Recipes are registered with Environments, use the `default` environment created in the previous tutorial.

```bash
rad recipe register default --environment default \
--resource-type Radius.Resources/postgreSQL \
--template-kind bicep \
--template-path <host>/<registry>/postgresql:latest
```

```
Successfully linked recipe "default" to environment "default"
```

1. Verify the Recipe is registered using the [`rad recipe list`]({{< ref rad_recipe_list >}}) command. You should see output similar to:

```bash
rad recipe list
```

```
$ rad recipe list
RECIPE TYPE TEMPLATE KIND TEMPLATE VERSION TEMPLATE
...
default Radius.Resources/postgreSQL bicep <host>/<repository>/postgresql:latest
```

{{% /codetab %}}
{{< /tabs >}}

{{< button text="Next step: Deploy Application" page="deploy-application" color="primary" >}}
Loading
Loading