Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
86702e3
Installation how-to
Reshrahim Oct 23, 2025
88d0754
Revert install command
Reshrahim Oct 23, 2025
e8db5c3
Revert install command
Reshrahim Oct 23, 2025
d255ee9
Fix build
Reshrahim Oct 23, 2025
72c1f37
Merge branch 'edge' into re/installation
Reshrahim Oct 23, 2025
c62ebc2
Update uninstall guides
Reshrahim Oct 24, 2025
ae57f81
Updates
Reshrahim Oct 24, 2025
1213832
Rebase
Reshrahim Oct 27, 2025
34fc599
Rebase
Reshrahim Oct 27, 2025
331bd17
Update installation
Reshrahim Oct 27, 2025
04a6e07
Shortcode
Reshrahim Oct 27, 2025
aa93180
Shortcode
Reshrahim Oct 27, 2025
8e20c37
Upd link
Reshrahim Oct 27, 2025
8e8c98f
Upd shortcode
Reshrahim Oct 27, 2025
c2ef714
Updates
Reshrahim Oct 28, 2025
709fd64
Merge uninstall into install
Reshrahim Oct 28, 2025
4568f52
UnMerge uninstall from install
Reshrahim Oct 28, 2025
3080c88
Remove uninstall merge updates
Reshrahim Oct 28, 2025
9c49e95
Revamp installation
Reshrahim Oct 29, 2025
ff29c35
Installation guide updates
Reshrahim Oct 30, 2025
a9c692c
FIX LINK
Reshrahim Oct 30, 2025
a9898b6
Fix style
Reshrahim Oct 30, 2025
3f4eb44
Fix style
Reshrahim Oct 30, 2025
79dc781
Updates
Reshrahim Oct 30, 2025
dd7cc19
Updates to rollback and upgrade
Reshrahim Oct 30, 2025
3def165
Add upgrade docs
Reshrahim Nov 4, 2025
bdd90ae
Merge conflict
Reshrahim Nov 4, 2025
8665d59
Updates
Reshrahim Nov 4, 2025
93e9db0
Updates
Reshrahim Nov 4, 2025
1fecb53
Resolve conflicts
Reshrahim Nov 4, 2025
cef9c42
Address feedback-1)
Reshrahim Nov 7, 2025
659c127
Merge branch 'edge' into re/installation
Reshrahim Nov 7, 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
170 changes: 96 additions & 74 deletions docs/assets/scss/_code.scss
Original file line number Diff line number Diff line change
@@ -1,88 +1,110 @@
// Code formatting.
/* ---- Code block overrides (Chroma + Highlight.js) ---- */

.highlight .copy-icon {
position: absolute;
right: 20px;
top: 18px;
opacity: 0.7;
/* Ensure the copy icon is always visible and positioned */
.td-content .highlight {
position: relative; /* anchor for absolutely positioned copy icon */
}


.highlight pre {
/* Avoid pushing up the copy buttons. */
margin: 0;
/* --- Copy icon: always visible and colored --- */
.td-content .highlight {
position: relative;
}

.td-content {

// Highlighted code.
.highlight {
@extend .card;

margin: 0rem 0;
padding: 0rem;

margin-bottom: 2rem;

max-width: 100%;

border: none;

pre {
margin: 0;
padding: 1rem;
border-radius: 10px;
}
/* Always visible */
.td-content .highlight .copy-icon {
position: absolute;
right: 20px;
top: 18px;
z-index: 2;

/* Always show */
opacity: 1 !important;
visibility: visible !important;
pointer-events: auto;
transition: none !important;

/* 🔹 Visual style */
background-color: #444; /* primary blue, adjust as needed */
color: #ffffff; /* white icon/text */
border: none;
border-radius: 6px;
padding: 6px 8px;
font-size: 0.85rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;

&:hover {
background-color: #444; /* darker blue on hover */
}
}

table td:nth-child(2) {
display: grid;
background-color: #fff;
/* Make ALL code block surfaces light grey, regardless of renderer */
.td-content .highlight,
.td-content .highlight pre,
.td-content .highlight table,
.td-content .highlight td,
.td-content pre,
.td-content pre > code,
.td-content .chroma,
.td-content .chroma .hl,
.td-content code[class*="language-"],
.td-content pre[class*="language-"] {
background-color: #f5f5f5 !important; /* light grey */
color: #1a1a1a; /* readable text */
border-radius: 10px;
}

pre {
border-radius: 0px 0px 0px 0px;
}
}
}
/* Fix the table layout Chroma uses so the grey fills the code cell */
.td-content .highlight table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
}

// Inline code
p code,
li>code,
table code {
color: inherit;
padding: 0.2em 0.4em;
margin: 0;
font-size: 85%;
word-break: normal;
background-color: rgba($black, 0.05);
border-radius: $border-radius;
.td-content .highlight td {
border: 0;
padding: 0;
}

br {
display: none;
}
}
/* Keep inner <pre> edges flush when inside the table wrapper */
.td-content .highlight table td:nth-child(2) pre {
border-radius: 0 0 0 0;
margin: 0;
padding: 1rem;
}

/* Override Chroma inline string/link color (yellow) for better readability */
.td-content .highlight span[style*="#e6db74"],
.td-content .highlight span[style*="#f1fa8c"],
.td-content pre span[style*="#e6db74"],
.td-content pre span[style*="#f1fa8c"] {
color: #1d4ed8 !important;
}

// Code blocks
pre {
word-wrap: normal;
background-color: $gray-100;
padding: $spacer;
/* Generic <pre> blocks outside .highlight */
.td-content pre {
margin: 0;
padding: 1rem;
word-wrap: normal;
}

max-width: 100%;
/* Inline code stays subtle */
.td-content p code,
.td-content li > code,
.td-content table code {
background-color: rgba(0, 0, 0, 0.05);
}

>code {
background-color: inherit !important;
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
border: 0;
}
}
/* Override string color (yellow) in code blocks */
.td-content .highlight .chroma .s,
.td-content .highlight .chroma .s1,
.td-content .highlight .chroma .s2 {
color: #0a66c2 !important; /* example: Azure blue */
}

pre.mermaid {
background-color: inherit;
font-size: 0;
}
}
/* Or neutralize syntax coloring for a more uniform look */
.td-content .highlight .chroma * {
color: #1a1a1a !important;
}
2 changes: 1 addition & 1 deletion docs/content/guides/author-apps/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ type: docs
title: "Authoring applications"
linkTitle: "Authoring applications"
description: "Learn how to author a Radius Application"
weight: 100
weight: 200
---
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,6 @@ Select 'No' when asked to setup application in the current directory.

{{< read file= "/shared-content/installation/bicepconfig/manual.md" >}}

More information on how to setup a `bicepconfig.json` can be found [here]({{< ref "/guides/tooling/bicepconfig/overview" >}})

## Step 4: Create a Bicep file to model AWS Simple Storage Service (S3)

Create a new file called `app.bicep` and add the following bicep code to model an AWS S3 Bucket:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ This how-to guide will provide an overview of how to:

- [rad CLI]({{< ref "installation#step-1-install-the-rad-cli" >}})
The [Bicep extension]({{< ref "installation#step-2-install-the-vs-code-extension" >}}) for VS Code is recommended for Bicep language support
- Radius [installed]({{< ref "/guides/operations/kubernetes/kubernetes-install" >}}) on a [supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}})
- Radius [installed]({{< ref "/guides/installation/install" >}}) on a [supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}})
- An Azure provider configured and registered with your Radius control plane, either through [Service Principal](https://docs.radapp.io/guides/operations/providers/azure-provider/howto-azure-provider-sp/) or [Workload Identity](https://docs.radapp.io/guides/operations/providers/azure-provider/howto-azure-provider-wi/) that have been assigned to the `Contributor` and `Azure Container Instances Contributor` roles on the subscription or resource group where the ACI containers will be deployed
- A [managed identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/) is [required]({{< ref "/reference/resource-schema/core-schema/environment-schema#identity" >}}) for ACI deployments, if you choose to utilize a [user-assigned managed identity](https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-manage-user-assigned-managed-identities?pivots=identity-mi-methods-azp) then you need to ensure it is assigned to the `Contributor` and `Azure Container Instances Contributor` roles on the subscription and resource group where the ACI containers will be deployed

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ Select 'No' when asked to setup application in the current directory.

{{< read file= "/shared-content/installation/bicepconfig/manual.md" >}}

More information on how to setup a `bicepconfig.json` can be found [here]({{< ref "/guides/tooling/bicepconfig/overview" >}})

## Step 3: Define a Radius Environment

Create a file named `app.bicep` and define a [Radius Environment]({{< ref "concepts/environments" >}}) with identity property set. This configures your environment to use your Azure AD workload identity installation with your cluster's OIDC endpoint:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,6 @@ Select 'No' when asked to setup application in the current directory.

{{< read file= "/shared-content/installation/bicepconfig/manual.md" >}}

More information on how to setup a `bicepconfig.json` can be found [here]({{< ref "/guides/tooling/bicepconfig/overview" >}})

## Step 3: Define a Radius Environment

Create a file named `app.bicep` and define a Radius Environment with the identity property set:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Radius Environments can be setup with the rad CLI via two paths: interactive or
rad init
```

Select `Yes` to setup the application in the current directory. This will create `app.bicep` and [`bicepconfig.json`]({{< ref "/guides/tooling/bicepconfig/overview" >}}) files
Select `Yes` to setup the application in the current directory. This will create `app.bicep` and `bicepconfig.json`

```
Initializing Radius...
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ It's easy to get Radius added to your GitHub Actions deployment pipelines. By le
## Prerequisites

- [Setup a supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}})
- Radius control plane [installed in your cluster]({{< ref kubernetes-install >}})
- [Radius installed in your cluster]({{< ref "/guides/installation/install" >}})
- GitHub repo with Actions enabled

## Step 1: Create your environment and application definitions
Expand All @@ -28,7 +28,7 @@ Make sure you have the following files checked into your repository under `iac/`

{{< rad file="snippets/app.bicep" embed="true" >}}

### [`bicepconfig.json`]({{< ref "/guides/tooling/bicepconfig/overview" >}})
### `bicepconfig.json`

```json
{
Expand Down
113 changes: 113 additions & 0 deletions docs/content/guides/installation/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---
type: docs
title: "Installation Guide"
linkTitle: "Installation"
description: "Learn how to install and manage Radius"
weight: 100
---

Radius installation spans across your Kubernetes cluster, developer workstations, and OCI registries to deliver the platform's capabilities. Use this page as your installation planning checklist and understand how each component fits into the deployment.

## Installation Components

### Radius components

- **Radius CLI (`rad`)** – The installer places `rad` binary on your PATH and downloads the bundled `rad-bicep` compiler to compile and deploy the Applications.

- **Radius control plane** – The Helm chart deploys the Controller, Universal Control Plane (UCP), Applications RP, Dynamic RP, Deployment Engine, and optional Dashboard and Contour. All these components run in the `radius-system` namespace.

- **Ingress or gateway controller** – Radius installs Contour as the ingress controller by default. You can skip installing it and any alternative must be configured to route traffic to the Radius APIs.

- **Dashboard** – The Backstage based UI for managing Radius resources. You can disable it during installation.

- **Bicep extensions** – Radius packages Resource Type definitions as Bicep extensions stored in OCI registries or a file share. To use the Resource Types in your application, a workstation or CI runner must have config file (`bicepconfig.json`) that points to the extensions. Checkout the [how-to generate Bicep extensions](TODO) for more information.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@willdavsmith may have more information here


### External tools and services Radius interacts with

- **OCI registries** – Hosts the Radius control-plane images, Bicep extensions, and Recipes (for example GHCR or ACR). Ensure authentication is setup if working off a private network or of the Recipes and extensions are stored in private registries. Checkout the [how-to publish Recipes](TODO) and [how-to publish Bicep extensions](TODO) for more information.

- **Git repositories** – Terraform based Recipes are stored in Git repositories. Ensure authentication is set up if the repositories are private. Checkout the [Recipe guides]({{< ref "/guides/recipes" >}}) for more information.

- **Observability back ends** – Prometheus and Zipkin/Jaeger endpoints collect metrics and traces using the chart settings. Checkout the [Observability guide](TODO) for more information.

## Installation Requirements

### Kubernetes requirements

Building on the [technical architecture overview]({{< ref "concepts/#technical-architecture" >}}), Radius runs on Kubernetes and exposes its Universal Control Plane (UCP) through the Kubernetes API aggregation layer. Hence, installing Radius requires **cluster-admin permissions**, so it can register CRDs, namespaces, and RBAC objects.

{{< tabs AKS EKS k3d kind>}}
{{% codetab %}}

Visit the [Azure docs](https://docs.microsoft.com/azure/aks/learn/quick-kubernetes-deploy-portal?tabs=azure-cli) to set up an AKS cluster.

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

Visit [AWS docs](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) to set up an EKS cluster.
{{% /codetab %}}
{{% codetab %}}

[k3d](https://k3d.io) is a lightweight wrapper to run [k3s](https://github.com/rancher/k3s) (Rancher Lab’s minimal Kubernetes distribution) in Docker.

First, ensure that memory resource is 8GB or more in `Resource` setting of `Preferences` if you're using Docker Desktop. Also make sure you've enabled Rosetta if you're running on an Apple M1 chip:

Use the following command to create a new cluster and install the Radius control plane

```bash
k3d cluster create -p "8081:80@loadbalancer" --k3s-arg "--disable=traefik@server:*" --k3s-arg "--disable=servicelb@server:*"
```

- The first parameter adds a port mapping which routes traffic from the local machine into the cluster.
- The second parameter disables [`traefik`](https://k3d.io/v5.1.0/usage/k3s/#traefik) pods because Radius provides an ingress controller.
- The third parameter disables the [k3d internal load balancer](https://k3d.io/v5.1.0/usage/k3s/#servicelb-klipper-lb).

Next install the Radius control plane with an override of the default public endpoint:

```bash
rad install kubernetes --set rp.publicEndpointOverride=localhost:8081
```
{{% /codetab %}}
{{% codetab %}}

[Kind](https://kind.sigs.k8s.io/) is a tool for running local Kubernetes clusters inside Docker containers. Use the following setup to create a new cluster and install the Radius control plane, along with a new environment:

First, ensure that memory resource is 8GB or more in `Resource` setting of `Preferences` if you're using Docker Desktop. Also make sure you've enabled Rosetta if you're running on an Apple M1 chip:

Second, copy the text below into a new file `kind-config.yaml`:

```yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
extraPortMappings:
- containerPort: 80
hostPort: 8080
listenAddress: "0.0.0.0"
- containerPort: 443
hostPort: 8443
listenAddress: "0.0.0.0"
```

Then, create a kind cluster with this config and initialize your Radius Environment:
```bash
# Create the kind cluster
kind create cluster --config kind-config.yaml
```

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

#### Other tooling requirements

- `kubectl` to troubleshoot installations. Radius CLI uses the active kubeconfig context.

- If you plan to install directly with Helm, use Helm 3 or later.

- Install [Node.js](https://nodejs.org/) to generate or publish Bicep extensions.

- Ensure you can authenticate to your registries (`docker login`/`az acr login`) from any workstation or CI runner that will push Recipes, Bicep extensions, or mirrored control-plane images if working off a private network.

Use the following how-to guides to install, upgrade, and maintain Radius.
Loading
Loading