diff --git a/docs/assets/scss/_code.scss b/docs/assets/scss/_code.scss index d3cea45cf..3d3f72369 100644 --- a/docs/assets/scss/_code.scss +++ b/docs/assets/scss/_code.scss @@ -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
 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 
 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;
 }
\ No newline at end of file
diff --git a/docs/config.toml b/docs/config.toml
index 01ff03b9f..153136de2 100644
--- a/docs/config.toml
+++ b/docs/config.toml
@@ -5,6 +5,8 @@ theme =  "docsy"
 
 disableFastRender = true
 
+googleAnalytics = "G-9JR8B6TPF9"
+
 # Ignore sample code
 ignoreFiles = ["/code/*"]
 
@@ -95,6 +97,12 @@ version_menu = "Releases"
   [markup.goldmark]
     [markup.goldmark.renderer]
       unsafe = true
+[markup.highlight]
+  codeFences = true
+  guessSyntax = true
+  noClasses = true # Use inline styles instead of CSS classes (false for CSS classes)
+  style = "github" 
+  tabWidth = 4
 
 # UI Customization
 [params.ui]
@@ -109,3 +117,4 @@ navbar_logo = true
 enable = true
 yes = 'Glad to hear it! Please feel free to star our repo and join our Discord server to stay up to date with the project.'
 no = 'Sorry to hear that. If you would like to also contribute a suggestion visit  and tell us how we can improve.'
+
diff --git a/docs/content/guides/author-apps/_index.md b/docs/content/guides/author-apps/_index.md
index e5bc51a70..8bf8e07f7 100644
--- a/docs/content/guides/author-apps/_index.md
+++ b/docs/content/guides/author-apps/_index.md
@@ -3,5 +3,5 @@ type: docs
 title: "Authoring applications"
 linkTitle: "Authoring applications"
 description: "Learn how to author a Radius Application"
-weight: 100
+weight: 200
 ---
\ No newline at end of file
diff --git a/docs/content/guides/author-apps/aws/howto-aws-resources/index.md b/docs/content/guides/author-apps/aws/howto-aws-resources/index.md
index 95f5ab2e2..0152b4dbc 100644
--- a/docs/content/guides/author-apps/aws/howto-aws-resources/index.md
+++ b/docs/content/guides/author-apps/aws/howto-aws-resources/index.md
@@ -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:
diff --git a/docs/content/guides/author-apps/azure/howto-azure-container-instances/index.md b/docs/content/guides/author-apps/azure/howto-azure-container-instances/index.md
index 21b6ae36d..79c222413 100644
--- a/docs/content/guides/author-apps/azure/howto-azure-container-instances/index.md
+++ b/docs/content/guides/author-apps/azure/howto-azure-container-instances/index.md
@@ -17,8 +17,8 @@ This how-to guide will provide an overview of how to:
 ## Prerequisites
 
 - [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" >}})
+- 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/installation" >}}) on a [supported Kubernetes cluster]({{< ref "/guides/installation/#kubernetes-requirements" >}})
 - 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 `Reader` role on the subscription and the `Contributor` role on the 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
 
@@ -201,4 +201,4 @@ Navigate to the Todo List tab and test out the application. Using the Todo page
 - [Azure resources overview]({{< ref "/guides/author-apps/azure/overview" >}})
 - [Radius Environment schema]({{< ref "/reference/resource-schema/core-schema/environment-schema" >}})
 - [Radius Application schema]({{< ref "/reference/resource-schema/core-schema/application-schema" >}})
-- [Radius Container schema]({{< ref "/reference/resource-schema/core-schema/container-schema" >}})
\ No newline at end of file
+- [Radius Container schema]({{< ref "/reference/resource-schema/core-schema/container-schema" >}})
diff --git a/docs/content/guides/author-apps/azure/howto-azure-resources/index.md b/docs/content/guides/author-apps/azure/howto-azure-resources/index.md
index 3f7eccb66..78baab647 100644
--- a/docs/content/guides/author-apps/azure/howto-azure-resources/index.md
+++ b/docs/content/guides/author-apps/azure/howto-azure-resources/index.md
@@ -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:
diff --git a/docs/content/guides/author-apps/containers/howto-keyvault-volume/index.md b/docs/content/guides/author-apps/containers/howto-keyvault-volume/index.md
index f722d4c2e..67e6811f8 100644
--- a/docs/content/guides/author-apps/containers/howto-keyvault-volume/index.md
+++ b/docs/content/guides/author-apps/containers/howto-keyvault-volume/index.md
@@ -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:
diff --git a/docs/content/guides/deploy-apps/environments/howto-environment/index.md b/docs/content/guides/deploy-apps/environments/howto-environment/index.md
index 45b174a64..4437c2fec 100644
--- a/docs/content/guides/deploy-apps/environments/howto-environment/index.md
+++ b/docs/content/guides/deploy-apps/environments/howto-environment/index.md
@@ -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...
diff --git a/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-cicd/index.md b/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-cicd/index.md
index 3a23e29d9..54b5379b1 100644
--- a/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-cicd/index.md
+++ b/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-cicd/index.md
@@ -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
@@ -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
 {
diff --git a/docs/content/guides/installation/_index.md b/docs/content/guides/installation/_index.md
new file mode 100644
index 000000000..bd0af7406
--- /dev/null
+++ b/docs/content/guides/installation/_index.md
@@ -0,0 +1,108 @@
+---
+type: docs
+title: "Installation Guide"
+linkTitle: "Installation"
+description: "Learn how to install and manage Radius"
+weight: 100
+---
+
+Installing Radius includes installing the Radius command-line interface (CLI), installing the Radius control plane on Kubernetes, and configuring credentials for Radius to access your AWS account, Azure subscription, and Git repository or OCI registry for your Recipes.
+
+## Installation checklist
+
+### Required steps
+
+- Install the Radius CLI (`rad`) and Bicep CLI (`rad-bicep`)
+- Install the Radius control plane on a Kubernetes cluster
+- Configure Radius Resource Groups and Environments
+
+### Additional optional steps
+
+- Configure AWS and/or Azure credentials in Radius
+- Configure a Git repository or OCI registry to store Recipes
+- Customize Radius Resource Types
+- Distribute Bicep extensions for Radius Resource Types
+- Expose access to the Radius Dashboard
+- Configure Kubernetes ingress 
+
+## 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.
diff --git a/docs/content/guides/installation/install/index.md b/docs/content/guides/installation/install/index.md
new file mode 100644
index 000000000..a5763f3a4
--- /dev/null
+++ b/docs/content/guides/installation/install/index.md
@@ -0,0 +1,233 @@
+---
+type: docs
+title: "How-To: Install Radius on Kubernetes"
+linkTitle: "Install"
+description: "Learn how to install Radius on Kubernetes"
+weight: 100
+categories: "How-To"
+tags: ["Kubernetes"]
+aliases: 
+- /guides/operations/kubernetes/kubernetes-install
+---
+
+This guide provides advanced instructions and for customizing the Radius installation.
+
+## Radius CLI 
+
+The Radius CLI, `rad` is the primary tool used to install and configure Radius. Install it on any workstation that interacts with Radius.
+
+Use the install.sh script to add `rad` plus the embedded `rad-bicep` compiler:
+
+```bash
+curl -fsSL "https://raw.githubusercontent.com/radius-project/radius/main/deploy/install.sh" | /bin/bash
+```
+
+To install a **specific version**, pass the version number (without the leading `v`) to the script. The installer translates it to the tagged release:
+
+  ```bash
+  curl -fsSL "https://raw.githubusercontent.com/radius-project/radius/main/deploy/install.sh" | /bin/bash -s 0.50.0
+  ```
+
+To install into **an alternate directory**, set `RADIUS_INSTALL_DIR` before invoking the script. This is required in environments like Azure Cloud Shell that disallow writes to `/usr/local/bin`:
+
+```bash
+export RADIUS_INSTALL_DIR=$HOME/bin
+curl -fsSL "https://raw.githubusercontent.com/radius-project/radius/main/deploy/install.sh" | /bin/bash
+```
+
+> **Preview builds:** The install.sh script accepts `edge` as the version. Edge builds are pulled from the GitHub Container Registry and require the [`oras` CLI](https://oras.land/docs/cli/installation/) to be present in `PATH`.
+
+The Radius CLI stores its configuration in `~/.rad/config.yaml`. This file contains Workspace configurations, which points to your Kubernetes cluster, Radiud Resource Group, and Environment. When the Radius CLI runs commands, it will use the configuration in the `config.yaml` file to determine which Resource Group and Environment to use. For more information, refer to the [`config.yaml` reference documentation]({{< ref "/reference/config" >}}).
+
+## Radius control plane installation
+
+The Radius Control Plane services can be installed using Radius CLI or Helm. `rad install` and `rad init` both pin the chart version to the CLI’s channel; keeping them aligned prevents API mismatches.
+
+{{< tabs `rad initialize` `rad install` `Using Helm` >}}{{% codetab %}}
+
+[`rad initialize`](<{{< ref rad_initialize >}}>) is only meant to get started with Radius and doesn't allow much customization. It
+
+- Creates the radius-system namespace and installs the `radius` Helm release.
+- Creates a default Resource Group, Environment, and Workspace.
+- Pre-configures the environment with the `local-dev` Recipe Pack. Recipes are fetched from `ghcr.io/radius-project/recipes/local-dev`.
+- Creates a sample `app.bicep`, `bicepconfig.json`, and `.rad/rad.yaml` when you opt in to scaffolding.
+
+{{% /codetab %}}
+{{% codetab %}}
+
+[`rad install kubernetes`]({{< ref rad_install_kubernetes >}}) installs only the Radius control plane into the `radius-system` namespace. Use this option when you need to customize the installation for your production workloads and platform needs.
+
+{{% /codetab %}}
+{{% codetab %}}
+
+You can directly install the Radius control plane services with Helm chart. Use this option if you are already using Helm as part of your GitOps or automation systems.
+
+Begin by adding the Radius Helm repository:
+
+   ```bash
+   helm repo add radius oci://ghcr.io/radius-project/helm-chart
+   helm repo update
+   ```
+
+Get all available versions:
+
+   ```bash
+   helm search repo radius --versions
+   ```
+
+Install the specified chart:
+
+   ```bash
+   helm upgrade radius radius/radius --install --create-namespace --namespace radius-system --version {{< param chart_version >}} --wait --timeout 15m0s
+   ```
+
+Check out the [Helm chart](https://github.com/radius-project/radius/blob/main/deploy/Chart) for more information.
+
+{{% /codetab %}}
+{{}}
+
+### Customize the Radius installation
+
+You can customize the Radius installation regardless of the entry point (`rad initialize`, `rad install kubernetes`, or Helm) with Helm overrides (`--set`, `--set-file`). 
+
+For more information on the Helm Installation Options, checkout the [reference guide]({{< ref "helminstallation" >}}).
+
+#### Bring your own root certificate authority certificate
+
+If your organization uses an intermediate or alternative trusted root certificate authority (CA), you can install the CA's certificate on the Radius control plane by setting `global.rootCA.cert` option. For example:
+
+```bash
+rad install kubernetes --set-file global.rootCA.cert=/etc/ssl/your-root-ca.crt
+```
+
+#### Deploy to Air-gapped environments
+
+Radius pulls container images for control plane services from the GitHub Container Registry (ghcr.io). In environments with strict security controls or no internet access (air‑gapped), mirror the required images to an internal registry and configure Radius to use that registry.
+
+Example of mirroring images (requires access to both registries):
+
+```sh
+# List of Radius images
+IMAGES=(
+  "controller"
+  "ucpd"
+  "applications-rp"
+  "dynamic-rp"
+  "deployment-engine"
+  "dashboard"
+  "bicep"
+)
+
+SOURCE_REGISTRY="ghcr.io/radius-project"
+TARGET_REGISTRY="myregistry.azurecr.io"
+VERSION="latest"  # or specific version like "0.48"
+
+# Mirror each image
+for IMAGE in "${IMAGES[@]}"; do
+  docker pull ${SOURCE_REGISTRY}/${IMAGE}:${VERSION}
+  docker tag ${SOURCE_REGISTRY}/${IMAGE}:${VERSION} ${TARGET_REGISTRY}/${IMAGE}:${VERSION}
+  docker push ${TARGET_REGISTRY}/${IMAGE}:${VERSION}
+done
+```
+Then install Radius configured to pull images from your private registry, and supply image pull secrets if authentication is required.
+
+```bash
+rad install kubernetes \
+  --set global.imageRegistry=myregistry.azurecr.io \
+  --set global.imageTag={{ .Chart.AppVersion }} \
+  --set global.imagePullSecrets[0].name=myregistry-secret
+```
+
+When using a custom registry, images are pulled directly from /: format. For example, with myregistry.azurecr.io, the controller image will be pulled from myregistry.azurecr.io/controller:latest.
+
+#### Configure workload identity
+
+Radius enables you to deploy and connect to cloud resources across Azure and AWS. The chart flags `global.azureWorkloadIdentity.enabled` and `global.aws.irsa.enabled` toggle the Kubernetes-side configuration to use workload identity; you still need to configure cloud identities and register credentials afterward. See the [Azure workload identity guide]({{< ref "/guides/operations/providers/azure-provider/howto-azure-provider-wi" >}}) and the [AWS IRSA guide]({{< ref "/guides/operations/providers/aws-provider/howto-aws-provider-irsa" >}}).
+
+```bash
+# Azure workload identity
+rad install kubernetes --set global.azureWorkloadIdentity.enabled=true
+
+# AWS IAM Roles for Service Accounts
+rad install kubernetes --set global.aws.irsa.enabled=true
+```
+
+#### Pre-download Terraform binaries
+
+Radius can pre-stage Terraform binaries inside the control-plane pods so Terraform-based Recipes start faster and do not need internet access at runtime. Enable it and optionally point to a custom download URL:
+
+```bash
+rad install kubernetes --set global.terraform.enabled=true
+# Optional custom artifact mirror
+rad install kubernetes --set global.terraform.enabled=true --set global.terraform.downloadUrl=https://example.com/terraform_1.6.6_linux_amd64.zip
+```
+
+#### Configure observability endpoints
+
+Control-plane components expose Prometheus metrics and Zipkin-compatible tracing. Override the defaults to point at your platform endpoints during installation:
+
+```bash
+# Custom metrics scrape path and TLS proxy port
+rad install kubernetes --set global.prometheus.path=/metrics-radius --set global.prometheus.port=9443
+
+# Send traces to Jaeger/Zipkin collector
+rad install kubernetes --set global.zipkin.url=http://jaeger-collector.radius-monitoring.svc.cluster.local:9411/api/v2/spans
+```
+
+Refer to the [Prometheus]({{< ref "/guides/operations/control-plane/metrics/prometheus" >}}) and [Jaeger]({{< ref "/guides/operations/control-plane/traces/jaeger" >}}) guides for end-to-end configuration steps.
+
+### Configure Contour
+
+Radius installs the Bitnami Contour chart alongside the control plane so gateways and the dashboard can expose HTTP(S) endpoints. If your platform already runs an ingress or gateway controller, disable Contour and make sure your controller understands the `projectcontour.io/HTTPProxy` CRDs (or adjust your application definitions accordingly).
+
+```bash
+rad install kubernetes --skip-contour-install
+```
+
+Radius still emits `HTTPProxy` resources when you deploy gateways. If you use a different ingress API, install the matching CRDs and update your app manifests so the generated resources are compatible with your controller.
+
+Need more control over Contour? Supply your own chart or override Bitnami settings:
+
+```bash
+# Install from a local chart archive
+rad install kubernetes --contour-chart /path/to/contour-helm-chart.tgz
+
+# Override Bitnami values (for example host networking or custom service type)
+rad install kubernetes --contour-set envoy.service.type=NodePort --contour-set envoy.hostNetwork=true
+```
+
+#### Radius Dashboard
+
+The Dashboard is enabled by default. You can disable it when you do not need the Backstage-based UI:
+
+  ```bash
+  rad install kubernetes --set dashboard.enabled=false
+  ```
+
+When enabled, expose it via Contour or your ingress. In locked-down clusters you can port-forward:
+
+  ```bash
+  kubectl port-forward svc/dashboard -n radius-system 7007:7007
+  ```
+
+### Verify the installation
+
+Check that the control plane pods are running in the `radius-system` namespace before moving on:
+
+```bash
+kubectl get pods -n radius-system
+```
+
+## Troubleshooting installation
+
+- **403 when pulling charts from ghcr.io** – Clear cached credentials with `docker logout ghcr.io`, or mirror the chart and install with `rad install kubernetes --chart /path/to/radius-.tgz`.
+- **Existing Radius release detected** – Rerun the installer with `--reinstall` or uninstall the existing release before retrying.
+- **Helm reports missing permissions** – Verify the kube context and ensure the account has cluster-admin rights (`kubectl auth can-i create crd`).
+- **Contour chart download fails** – Provide a local chart via `--contour-chart` if the cluster cannot reach the Bitnami registry.
+- **Pods stuck after install** – Inspect with `kubectl describe pod -n radius-system` to identify image pull issues.
+
+## Next steps
+
+- Review the [`rad install`]({{< ref rad_install >}}) command reference for the full set of flags.
+- Follow the [upgrade guide]({{< ref "guides/installation/upgrade" >}}) to plan version rollouts.
+- Learn how to [roll back Radius]({{< ref "guides/installation/upgrade#roll-back-radius" >}}) if an installation or upgrade needs to be reversed.
diff --git a/docs/content/guides/installation/uninstall/index.md b/docs/content/guides/installation/uninstall/index.md
new file mode 100644
index 000000000..73687c04b
--- /dev/null
+++ b/docs/content/guides/installation/uninstall/index.md
@@ -0,0 +1,65 @@
+---
+type: docs
+title: "How-To: Uninstall Radius on Kubernetes"
+linkTitle: "Uninstall"
+description: "Learn how to uninstall Radius on Kubernetes"
+weight: 400
+categories: "How-To"
+tags: ["Kubernetes"]
+aliases: 
+- /guides/operations/kubernetes/kubernetes-uninstall
+---
+
+## Uninstall Radius 
+
+To uninstall the existing Radius installation, use any of the following commands:
+
+{{< tabs "Uninstall" "Uninstall with purge" >}}
+
+{{% codetab %}}
+```bash
+rad uninstall kubernetes
+```
+You should see the Helm releases that will be removed and prompted for user confirmation:
+
+```
+About to uninstall Radius. This will remove:
+- Helm releases: radius, contour
+                                              
+Continue uninstalling Radius?                 
+  >  1. No                         
+```
+
+Select `Yes`. All the Radius services running in the `radius-system` namespace will be removed. Note that the Radius configuration and data will still be persisted in the cluster.
+
+{{% /codetab %}}
+{{% codetab %}}
+
+```bash
+rad uninstall kubernetes --purge
+```
+
+You should see the list of all the Radius resources that will be removed and prompted for user confirmation 
+
+```
+About to uninstall Radius. This will remove:
+- Helm releases: radius, contour
+- Radius environments:
+  • /planes/radius/local/resourcegroups/default/providers/Applications.Core/environments/default (namespace default)
+- Kubernetes namespaces: radius-system
+- Kubernetes namespaces (skipped): default
+- Kubernetes API services: v1alpha3.api.ucp.dev
+- Kubernetes custom resource definitions: deploymentresources.radapp.io, deploymenttemplates.radapp.io, recipes.radapp.io, queuemessages.ucp.dev, resources.ucp.dev
+                                              
+Continue uninstalling Radius?                 
+  >  1. No                                    
+```
+
+Select `Yes`. This will delete all the Radius data from your cluster.
+
+{{% /codetab %}}
+{{< /tabs >}}
+
+## Remove the rad CLI
+
+You can remove the rad CLI by deleting the `rad` binary under `/usr/local/bin/` and `~/.rad` folder from your machine.
diff --git a/docs/content/guides/installation/upgrade/index.md b/docs/content/guides/installation/upgrade/index.md
new file mode 100644
index 000000000..464ae48a9
--- /dev/null
+++ b/docs/content/guides/installation/upgrade/index.md
@@ -0,0 +1,174 @@
+---
+type: docs
+title: "How-To: Upgrade or Roll Back Radius on Kubernetes"
+linkTitle: "Upgrade & Rollback"
+description: "Upgrade the Radius control plane and revert to a previous revision when required"
+weight: 300
+categories: "How-To"
+tags: ["Kubernetes"]
+aliases:
+  - /guides/operations/kubernetes/kubernetes-upgrade
+  - /guides/operations/kubernetes/kubernetes-rollback
+---
+
+Radius upgrades drives a Helm upgrade of the Radius control plane (and Contour, if installed), while rollbacks replays an earlier Helm revision. Both these operations target the `radius` Helm release in the `radius-system` namespace.
+
+## Upgrade Radius
+
+### Before you run `rad upgrade`
+
+- Install the latest `rad` CLI. The CLI release determines the default chart version pushed to the cluster.
+- Make sure your kubeconfig user has cluster-admin permissions. The upgrade re-applies cluster-scoped resources and CRDs.
+- Confirm Radius is already installed in the target cluster—`rad upgrade` exits early if it cannot find the `radius` Helm release.
+
+### Choose the target version
+
+`rad upgrade kubernetes` resolves the upgrade version the same way the code does:
+
+- **Default:** The CLI release version. On edge builds, the CLI resolves the latest stable chart from `ghcr.io/radius-project/helm-chart`.
+- **`--version `:** Force a specific chart version (for example `0.50.0`). The preflight logic prevents downgrades and only allows a one-minor-step upgrade.
+- **`--version latest`:** Resolve to the newest chart available in the Radius registry.
+- **`--chart `:** Point to a local chart archive—useful in air-gapped environments or when validating a release candidate.
+- **Custom values:** Pass the same overrides you used during install with `--set` and `--set-file` (for example image registry overrides or custom CA bundles). The CLI parses these flags before invoking Helm, matching the logic in `pkg/cli/helm/radius.go`.
+
+```bash
+# Recommended: upgrade to the version that matches your CLI
+rad upgrade kubernetes
+
+# Upgrade to a specific chart version
+rad upgrade kubernetes --version 0.50.0
+
+# Override Helm values during the upgrade
+rad upgrade kubernetes --set global.imageRegistry=myregistry.azurecr.io
+
+# Reapply custom certificates or feature toggles
+rad upgrade kubernetes \
+  --set global.prometheus.path=/metrics-radius \
+  --set database.enabled=true \
+  --set preupgrade.enabled=true \
+  --set-file global.rootCA.cert=/etc/ssl/your-root-ca.crt
+```
+
+### Understand the preflight checks
+
+Unless you skip them, the command runs `pkg/upgrade/preflight` checks before touching the cluster:
+
+- **Kubernetes connectivity** – Verifies kubeconfig context and basic cluster permissions.
+- **Helm connectivity** – Confirms the `radius` release exists and Helm can talk to it.
+- **Radius installation status** – Ensures the control plane is currently installed.
+- **Version compatibility** – Blocks downgrades or multi-version jumps.
+- **Custom configuration validation** – Parses all `--set`/`--set-file` input and warns when keys do not map to the chart.
+- **Resource availability** – Emits warnings if the cluster reports low capacity.
+
+The upgrade stops on any error-level check. Configuration and resource checks surface as warnings so you can review them after the run.
+
+```bash
+# Dry-run the checks without upgrading
+rad upgrade kubernetes --preflight-only
+
+# Skip preflight checks (not recommended)
+rad upgrade kubernetes --skip-preflight
+```
+
+If you enable the chart’s Helm-hook job (`--set preupgrade.enabled=true`), Radius also runs the same checks inside the cluster before applying the new release. Review the job output with:
+
+```bash
+kubectl logs job/pre-upgrade -n radius-system
+```
+
+### Run the upgrade and verify
+
+`rad upgrade` upgrades the Radius release and then re-applies the bundled Contour chart (if Contour was installed). Watch the logs or re-run the command with `--verbose` if you need Helm output.
+
+```bash
+rad upgrade kubernetes
+```
+
+After the command finishes, confirm the expected version is running:
+
+```bash
+rad version
+kubectl get pods -n radius-system
+rad env list
+```
+
+If the pre-upgrade job is enabled, confirm it succeeded before moving on:
+
+```bash
+kubectl get jobs -n radius-system -l control-plane=pre-upgrade
+```
+
+> **Tip:** Read the [release notes](https://github.com/radius-project/radius/releases) for breaking changes, and back up environment definitions before upgrading: `rad env show -o json > env-backup.json`.
+
+## Roll back Radius
+
+`rad rollback kubernetes` uses Helm history to revert to an earlier chart. The command validates that Radius is currently installed before executing.
+
+### Inspect available revisions
+
+Each `rad install` or `rad upgrade` run creates a Helm revision. List the revisions directly from the CLI, or fall back to native Helm tooling:
+
+```bash
+rad rollback kubernetes --list-revisions
+helm history radius -n radius-system
+```
+
+The `--list-revisions` output matches the data returned by `helm history`, including chart version, status, updated time, and the Helm description field.
+
+### Restore a revision
+
+- `rad rollback kubernetes` (no flags) finds the most recent revision with an older chart version and replays it. This matches the logic in `pkg/cli/helm/cluster.go`, which prevents rolling back to the current release.
+- `rad rollback kubernetes --revision 0` is the explicit form of “previous revision”, aligning with Helm semantics.
+- `rad rollback kubernetes --revision N` replays the exact revision number you specify after verifying it exists.
+
+```bash
+# Roll back to the previous successful revision
+rad rollback kubernetes
+
+# Explicit previous revision (alias for --revision 0)
+rad rollback kubernetes --revision 0
+
+# Roll back to a specific revision number
+rad rollback kubernetes --revision 3
+```
+
+After the rollback, validate that the older version is active:
+
+```bash
+rad version
+kubectl get pods -n radius-system
+helm status radius -n radius-system
+rad env list
+```
+
+> **Warning:** Helm does not revert CRDs. If the newer release introduced CRD schema changes, you may need to apply the prior definitions manually or reinstall the desired version.
+
+The rollback command operates on the `radius` release only. If you also changed your ingress stack (Contour or another controller), roll that release back separately.
+
+### When rollback is not viable
+
+Rollback can fail when:
+
+- The target revision was pruned or never existed in the cluster history.
+- The upgrade introduced CRD or data format changes that are incompatible with older controllers.
+- The container registry no longer hosts the images for the older chart.
+
+Collect diagnostics with `helm status radius -n radius-system` and `kubectl describe pod -n radius-system `. If Helm cannot restore a working state, perform a clean installation of the target version.
+
+## Fresh installation (fallback)
+
+1. Export any environments you need to re-create: `rad env show -o json > env-backup.json`
+2. Delete the environments and uninstall Radius: `rad env delete ` and `rad uninstall kubernetes`
+3. Install the desired version (`rad install kubernetes --chart …` or `helm install …`)
+4. Re-create environments and redeploy applications
+
+## Troubleshooting
+
+- **Preflight failures:** Resolve the specific connectivity, RBAC, or configuration errors surfaced by the preflight output, then rerun the upgrade.
+- **Rollback failures:** Review Helm and Kubernetes events to pinpoint why the release could not be restored.
+- **Missing revision:** If the required revision is gone, install the desired version from scratch.
+
+## Next steps
+
+- Review [Radius versioning]({{< ref "guides/operations/versioning" >}}) for compatibility expectations.
+- See the [`rad upgrade`]({{< ref "reference/cli/rad_upgrade_kubernetes" >}}) and [`rad rollback`]({{< ref "reference/cli/rad_rollback_kubernetes" >}}) command references for the full flag set.
diff --git a/docs/content/guides/operations/control-plane/metrics/prometheus/index.md b/docs/content/guides/operations/control-plane/metrics/prometheus/index.md
index 809f65469..697785823 100644
--- a/docs/content/guides/operations/control-plane/metrics/prometheus/index.md
+++ b/docs/content/guides/operations/control-plane/metrics/prometheus/index.md
@@ -17,7 +17,7 @@ tags: ["metrics", "observability"]
    - [Supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters"  >}})
    - [kubectl](https://kubernetes.io/docs/tasks/tools/)
    - [Helm 3](https://helm.sh/)
-   - [Radius control plane installed]({{< ref kubernetes-install >}})
+   - [Radius installed]({{< ref "/guides/installation/install" >}})
 
 1. Create a namespace that can be used to deploy the Grafana and Prometheus monitoring tools:
 
diff --git a/docs/content/guides/operations/kubernetes/kubernetes-install/index.md b/docs/content/guides/operations/kubernetes/kubernetes-install/index.md
deleted file mode 100644
index 960a9e740..000000000
--- a/docs/content/guides/operations/kubernetes/kubernetes-install/index.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-type: docs
-title: "How-To: Install Radius on Kubernetes"
-linkTitle: "Installation"
-description: "Learn how to setup Radius on supported Kubernetes clusters"
-weight: 200
-categories: "How-To"
-tags: ["Kubernetes"]
-slug: 'install'
----
-
-Radius handles the deployment and management of environments, applications, and other resources with components that are installed into the Kubernetes cluster.
-
-## Prerequisites
-
-- [Kubernetes cluster]({{< ref "guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}})
-- [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
-- [rad CLI]({{< ref howto-rad-cli >}})
-
-## Install with the rad CLI
-
-Use the [`rad install kubernetes` command]({{< ref rad_install_kubernetes >}}) to install Radius into the `radius-system` namespace on your Kubernetes cluster. You can optionally use the `--set` flag to customize the installation with [Helm configuration options](#helm-configuration-options):
-
-```bash
-# Install Radius
-rad install kubernetes
-
-# Install Radius with tracing and public endpoint override
-rad install kubernetes --set global.zipkin.url=http://jaeger-collector.radius-monitoring.svc.cluster.local:9411/api/v2/spans,rp.publicEndpointOverride=localhost:8081
-```
-
-### Use your own root certificate authority certificate
-
-Many enterprises leverage intermediate root certificate authorities (CAs) to enhance security and control over outgoing traffic originating from their employees' machines, particularly when using a firewall or proxy solution. For example, some enterprises may choose to issue CAs per org and control the traffic per org. In this setup, when Radius attempts to connect to an external endpoint, such as Azure or AWS, traffic is blocked by the firewall. You may optionally use`--set-file` when installing Radius to inject your root CA certificates into Radius:
-
-```bash
-rad install kubernetes --set-file global.rootCA.cert=/etc/ssl/your-root-ca.crt
-```
-
-## Install with Helm
-
-1. Begin by adding the Radius Helm repository:
-
-   ```bash
-   helm repo add radius oci://ghcr.io/radius-project/helm-chart
-   helm repo update
-   ```
-
-1. Get all available versions:
-
-   ```bash
-   helm search repo radius --versions
-   ```
-
-1. Install the specified chart:
-
-   ```bash
-   helm upgrade radius radius/radius --install --create-namespace --namespace radius-system --version {{< param chart_version >}} --wait --timeout 15m0s
-   ```
-
-### Helm configuration options
-
-| Name | Default | Description |
-|------|---------|-------------|
-| `global.zipkin.url` | | Zipkin collector URL. If not specified, tracing is disabled.
-| `global.prometheus.enabled` | `true` | Enables Prometheus metrics. Defaults to `true`
-| `global.prometheus.path` | `"/metrics"` | Metrics endpoint
-| `global.prometheus.port` | `9090` | Metrics port
-| `global.rootCA.cert` | | Root CA certificate which will be injected to Radius containers. Use `--set-file global.rootCA.cert=[cert file]`
-| `rp.image` | `ghcr.io/radius-project/applications-rp:latest` //TODO | Location of the Radius resource provider (RP) image
-| `rp.tag` | `latest` | Tag of the Radius resource provider (RP) image
-|`rp.publicEndpointOverride` | `""` | Public endpoint of the Kubernetes cluster. Overrides the default behavior of automatically detecting the public endpoint.
-| `de.image` | `ghcr.io/radius-project/deployment-engine` | Location of the Bicep deployment engine (DE) image
-| `de.tag` | `latest` | Tag of the Bicep deployment engine (DE) image
-| `ucp.image` | `ghcr.io/radius-project/ucpd` | Location of universal control plane (UCP) image
-| `ucp.tag` | `latest` | Tag of the universal control plane (UCP) image
diff --git a/docs/content/guides/operations/kubernetes/kubernetes-rollback/index.md b/docs/content/guides/operations/kubernetes/kubernetes-rollback/index.md
deleted file mode 100644
index 94214d97a..000000000
--- a/docs/content/guides/operations/kubernetes/kubernetes-rollback/index.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-type: docs
-title: "How-To: Rollback Radius on Kubernetes"
-linkTitle: "Rollback Radius on Kubernetes"
-description: "Learn how to rollback Radius to a previous version on Kubernetes"
-weight: 350
-categories: "How-To"
-tags: ["Kubernetes"]
----
-
-Radius supports rolling back to previous versions on Kubernetes clusters using the `rad rollback kubernetes` command. This feature allows you to quickly revert to a known-good version if issues are encountered after an upgrade.
-
-## Prerequisites
-
-- [Radius installed on Kubernetes cluster]({{< ref "guides/operations/kubernetes/kubernetes-install" >}})
-- [rad CLI]({{< ref howto-rad-cli >}})
-- Previous Radius installation to rollback to
-
-## Understanding Helm revisions
-
-Radius uses Helm for installation and upgrades on Kubernetes. Each installation or upgrade creates a new Helm revision. These revisions serve as restore points that you can rollback to if needed.
-
-To view the revision history:
-
-```bash
-# List all Radius Helm revisions
-helm history radius -n radius-system
-
-# Example output:
-# REVISION  UPDATED                   STATUS      CHART        APP VERSION  DESCRIPTION
-# 1         Mon Oct 2 10:00:00 2024   superseded  radius-0.48  0.48         Install complete
-# 2         Mon Oct 9 11:00:00 2024   superseded  radius-0.49  0.49         Upgrade complete
-# 3         Mon Oct 16 12:00:00 2024  deployed    radius-0.50  0.50         Upgrade complete
-```
-
-## Step 1: Check current version and available revisions
-
-Before rolling back, check your current Radius version and available revisions:
-
-```bash
-# Check current version
-rad version
-
-# List available revisions using rad CLI
-rad rollback kubernetes --list-revisions
-
-# Alternatively, view Helm revision history directly
-helm history radius -n radius-system
-```
-
-## Step 2: Rollback to a previous version
-
-Use the `rad rollback kubernetes` command to rollback to a specific revision:
-
-```bash
-# Rollback to the previous revision (revision 0 or omit --revision flag)
-rad rollback kubernetes
-
-# Rollback to the previous revision explicitly using revision 0
-rad rollback kubernetes --revision 0
-
-# Rollback to a specific revision number
-rad rollback kubernetes --revision 3
-
-# Switch workspace before rolling back (if needed)
-rad workspace switch myworkspace
-rad rollback kubernetes --revision 2
-```
-
-The rollback process will:
-
-1. Revert the Helm release to the specified revision
-2. Restore the previous version's configuration
-3. Restart Radius components with the previous version
-
-## Step 3: Verify the rollback
-
-After the rollback completes, verify that Radius is running the previous version:
-
-```bash
-# Check Radius version
-rad version
-
-# Verify pods are running
-kubectl get pods -n radius-system
-
-# Check Helm release status
-helm status radius -n radius-system
-
-# Verify your environments are still available
-rad env list
-```
-
-## Important considerations
-
-### CRD compatibility
-
-> **Warning:** Custom Resource Definitions (CRDs) are not automatically rolled back due to [Helm limitations](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/).
->
-> If the newer version introduced CRD changes, rolling back the control plane might result in compatibility issues. In such cases, you may need to:
->
-> 1. Manually revert CRD changes, or
-> 2. Perform a fresh installation of the desired version
-
-### Data and configuration
-
-- **Environments and applications**: These are preserved during rollback as they are stored as Kubernetes resources
-- **Custom Helm values**: Previous configuration values are restored with the rollback
-- **Workspace configuration**: Local workspace configuration (in ~/.rad) is not affected by rollback
-
-### When rollback might not work
-
-Rollback may not be successful if:
-
-- The previous version's state is corrupted
-- There are incompatible CRD changes between versions
-- Required dependencies are no longer available
-- Breaking changes in the data format between versions
-
-In these cases, a fresh installation may be required.
-
-## Alternative: Fresh installation
-
-If rollback is not possible or encounters issues, you can perform a fresh installation:
-
-1. Backup your environment configurations:
-
-   ```bash
-   rad env show -o json > env-backup.json
-   ```
-
-2. Uninstall Radius completely:
-
-   ```bash
-   rad uninstall kubernetes
-   ```
-
-3. Install the desired version:
-
-   ```bash
-   # Install a specific version using a local chart
-   rad install kubernetes --chart /path/to/radius-chart-
-
-   # Or use Helm directly to install a specific version
-   helm install radius oci://ghcr.io/radius-project/helm-chart --version  -n radius-system --create-namespace
-   ```
-
-4. Create new environments and deploy your applications using the backup as reference
-
-## Troubleshooting
-
-### Failed rollback
-
-If the rollback fails, check the Helm rollback status:
-
-```bash
-# Check Helm release status
-helm status radius -n radius-system
-
-# View detailed history
-helm history radius -n radius-system
-
-# Check pod status
-kubectl get pods -n radius-system
-kubectl describe pods -n radius-system
-```
-
-### Manual Helm rollback
-
-If the rad CLI rollback fails, you can use Helm directly:
-
-```bash
-# Rollback using Helm
-helm rollback radius [REVISION] -n radius-system
-
-# Example: rollback to revision 2
-helm rollback radius 2 -n radius-system
-```
-
-## Next steps
-
-- Learn about [upgrading Radius]({{< ref "guides/operations/kubernetes/kubernetes-upgrade" >}})
-- Review [Radius versioning]({{< ref "guides/operations/versioning" >}}) for version compatibility
-- Check [release notes](https://github.com/radius-project/radius/releases) for version-specific information
-- Refer to the [`rad rollback kubernetes`]({{< ref "reference/cli/rad_rollback_kubernetes" >}}) CLI reference docs for more details
diff --git a/docs/content/guides/operations/kubernetes/kubernetes-uninstall/index.md b/docs/content/guides/operations/kubernetes/kubernetes-uninstall/index.md
deleted file mode 100644
index de50faeb6..000000000
--- a/docs/content/guides/operations/kubernetes/kubernetes-uninstall/index.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-type: docs
-title: "How-To: Uninstall Radius from Kubernetes"
-linkTitle: "Uninstall Radius"
-description: "Learn how to uninstall Radius control plane from your Kubernetes cluster"
-weight: 400
-categories: "How-To"
-tags: ["Kubernetes"]
----
-
-## Prerequisites
-
-- [Radius installed on Kubernetes cluster]({{< ref "guides/operations/kubernetes/kubernetes-install" >}})
-
-## Step 1: Uninstall the Radius control-plane from your kubernetes cluster
-
-To uninstall the existing Radius control-plane, run the following command:
-
-```bash
-rad uninstall kubernetes
-```
-
-All the Radius services running in the `radius-system` namespace will be removed. Note that Radius configuration and data will still be persisted in the cluster until the namespace is also deleted.
-
-## Step 2: Delete the `radius-system` namespace
-
-To delete the `radius-system` namespace, run the following command:
-
-```bash
-kubectl delete namespace radius-system
-```
-
-All Radius configuration and data will be removed as part of the namespace. This completely removes from your cluster.
-
-## Step 3: Remove the rad CLI
-
-You can remove the rad CLI by deleting the [ binary ]({{< ref "/guides/tooling/rad-cli/overview#binary-location" >}}) and ~/.rad folder from your machine.
\ No newline at end of file
diff --git a/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md b/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md
deleted file mode 100644
index f68837244..000000000
--- a/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-type: docs
-title: "How-To: Upgrade Radius on Kubernetes"
-linkTitle: "Upgrade Radius on Kubernetes"
-description: "Learn how to upgrade Radius on Kubernetes"
-weight: 300
-categories: "How-To"
-tags: ["Kubernetes"]
----
-
-Radius supports in-place upgrades on Kubernetes clusters using the `rad upgrade kubernetes` command. This command upgrades the Radius control plane while preserving your existing environments and applications.
-
-## Prerequisites
-
-- [Radius installed on Kubernetes cluster]({{< ref "guides/operations/kubernetes/kubernetes-install" >}})
-- [Latest rad CLI]({{< ref howto-rad-cli >}})
-
-## Step 1: Upgrade the rad CLI
-
-First, ensure you have the latest version of the rad CLI:
-
-{{< read file= "/shared-content/installation/rad-cli/install-rad-cli.md" >}}
-
-## Step 2: Upgrade Radius control plane
-
-Use the [`rad upgrade kubernetes` command]({{< ref rad_upgrade_kubernetes >}}) to upgrade Radius in your cluster:
-
-```bash
-# Upgrade to the latest version matching your CLI
-rad upgrade kubernetes
-
-# Upgrade to a specific version
-rad upgrade kubernetes --version 0.49.0
-
-# Upgrade with custom configuration
-rad upgrade kubernetes --set key=value
-```
-
-### Preflight checks
-
-The upgrade process automatically runs preflight checks to ensure your cluster is ready for the upgrade. These checks include:
-
-- **Kubernetes connectivity and permissions**: Verifies connection to the cluster and required RBAC permissions
-- **Helm connectivity and installation status**: Confirms Radius is installed via Helm and can be upgraded
-- **Version compatibility validation**: Ensures the target version is compatible with your current version
-- **Cluster resource availability**: Checks for sufficient resources (optional warning)
-- **Custom configuration validation**: Validates any custom Helm values
-
-To skip preflight checks (not recommended):
-
-```bash
-rad upgrade kubernetes --skip-preflight
-```
-
-To run only preflight checks without upgrading:
-
-```bash
-rad upgrade kubernetes --preflight-only
-```
-
-## Step 3: Verify the upgrade
-
-After the upgrade completes, verify that Radius is running the new version:
-
-```bash
-# Check Radius version
-rad version
-
-# Verify pods are running
-kubectl get pods -n radius-system
-
-# Check your environments are still available
-rad env list
-```
-
-## Important considerations
-
-### Breaking changes
-
-While Radius supports in-place upgrades, breaking changes may still occur between major versions. Always review the [release notes](https://github.com/radius-project/radius/releases) before upgrading to understand any breaking changes or migration steps required.
-
-### Rollback capability
-
-If an upgrade encounters issues, you can rollback to a previous version using the [`rad rollback kubernetes` command]({{< ref "guides/operations/kubernetes/kubernetes-rollback" >}}).
-
-It's recommended to backup your environment configurations before upgrading, which you may do with something like `rad env show -o json > env-backup.json`.
-
-## Alternative: Fresh installation
-
-If you prefer to do a fresh installation instead of an in-place upgrade, follow these steps:
-
-1. Delete all existing Radius Environments:
-
-   ```bash
-   # List all environments
-   rad env list
-
-   # Delete each environment
-   rad env delete 
-   ```
-
-2. Uninstall Radius:
-
-   ```bash
-   rad uninstall kubernetes
-   ```
-
-3. Install the latest version:
-
-   ```bash
-   rad install kubernetes
-   ```
-
-4. Create new environments and deploy your applications
-
-## Next steps
-
-- Learn how to [rollback Radius]({{< ref "guides/operations/kubernetes/kubernetes-rollback" >}}) if needed
-- Review [Radius versioning]({{< ref "guides/operations/versioning" >}}) for version compatibility information
-- Refer to the [`rad upgrade`]({{< ref "reference/cli/rad_upgrade_kubernetes" >}}) CLI reference docs for more details
diff --git a/docs/content/guides/operations/kubernetes/overview/index.md b/docs/content/guides/operations/kubernetes/overview/index.md
index 03e48d978..473af56e7 100644
--- a/docs/content/guides/operations/kubernetes/overview/index.md
+++ b/docs/content/guides/operations/kubernetes/overview/index.md
@@ -49,117 +49,7 @@ Radius Environments, applications, and resources can be annotated/labeled with K
 
 {{< button text="Kubernetes metadata" page="kubernetes-metadata" >}}
 
-## Supported Kubernetes clusters
 
-The following clusters have been tested and validated to ensure they support all of the features of Radius:
-
-{{< tabs AKS k3d kind EKS >}}
-
-{{% codetab %}}
-Azure Kubernetes Service (AKS) clusters are the easiest way to get up and running quickly with a Radius Environment. To learn how to setup a cluster visit the [Azure docs](https://docs.microsoft.com/azure/aks/learn/quick-kubernetes-deploy-portal?tabs=azure-cli).
-
-Note that [AKS-managed AAD](https://docs.microsoft.com/en-us/azure/aks/managed-aad) is not supported currently.
-
-To create a new AKS cluster and retrieve its kubecontext, you can run the following commands:
-
-```bash
-az aks create --subscription mySubscription --resource-group myResourceGroup --name myAKSCluster --node-count 1
-az aks get-credentials --subscription mySubscription --resource-group myResourceGroup --name myAKSCluster
-```
-
-Once deployed and your kubectl context has been set as your default, you can run the following to create a Radius Environment and install the control plane:
-
-```bash
-rad init
-```
-{{% /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:
-
-```bash
-softwareupdate --install-rosetta --agree-to-license
-```
-
-Use the following command to create a new cluster. and install the Radius control plane, along with a new environment: 
-
-- 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).
-
-The `rad install` command is configured to route localhost traffic on port 8081 into the cluster.
-
-```bash
-k3d cluster create -p "8081:80@loadbalancer" --k3s-arg "--disable=traefik@server:*" --k3s-arg "--disable=servicelb@server:*"
-```
-
-Next, install the Radius control plane, along with a new environment. The `rad install` command below adds a parameter to override the default public endpoint so that Radius knows that traffic from the local machine will enter the pod on port 8081:
-
-```bash
-rad install kubernetes --set rp.publicEndpointOverride=localhost:8081
-rad init
-```
-{{% /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:
-
-```bash
-softwareupdate --install-rosetta --agree-to-license
-```
-
-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
-
-# Verify that the nodes are ready
-# (You should see 2 nodes listed with status Ready)
-kubectl get nodes
-
-# Install Radius
-rad install kubernetes --set rp.publicEndpointOverride=localhost:8080
-rad init
-```
-{{% /codetab %}}
-
-{{% codetab %}}
-Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that you can use to run Kubernetes on AWS. Learn how to set up an EKS cluster on the [AWS docs](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html).
-
-```bash
-eksctl create cluster --name my-cluster --region region-code
-```
-
-Once deployed and your kubectl context has been set as your default, you can run the following to create a Radius Environment and install the control plane:
-
-```bash
-rad init
-```
-
-{{% /codetab %}}
-
-{{< /tabs >}}
 
 ## Configure container registry access
 
diff --git a/docs/content/guides/recipes/howto-dev-recipes/index.md b/docs/content/guides/recipes/howto-dev-recipes/index.md
index 03711ee8e..80636ee61 100644
--- a/docs/content/guides/recipes/howto-dev-recipes/index.md
+++ b/docs/content/guides/recipes/howto-dev-recipes/index.md
@@ -59,8 +59,6 @@ Local development environments created by the rad init command include a set of
 
 {{< 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 your application
 
 Create a file named `app.bicep` with the following set of resources:
diff --git a/docs/content/guides/tooling/_index.md b/docs/content/guides/tooling/_index.md
deleted file mode 100644
index 82a0e9efd..000000000
--- a/docs/content/guides/tooling/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "Radius Tooling"
-linkTitle: "Tooling"
-description: "Learn about Radius tools for managing your applications and Radius installation"
-weight: 99
----
diff --git a/docs/content/guides/tooling/bicepconfig/_index.md b/docs/content/guides/tooling/bicepconfig/_index.md
deleted file mode 100644
index 70644d6e3..000000000
--- a/docs/content/guides/tooling/bicepconfig/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "Bicep configuration file"
-linkTitle: "Bicep config"
-description: "Documentation on the Bicep configuration file"
-weight: 300
----
\ No newline at end of file
diff --git a/docs/content/guides/tooling/bicepconfig/overview/index.md b/docs/content/guides/tooling/bicepconfig/overview/index.md
deleted file mode 100644
index b6e8a2719..000000000
--- a/docs/content/guides/tooling/bicepconfig/overview/index.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-type: docs
-title: "Overview: Bicep configuration"
-linkTitle: "Overview"
-description: "Setup the Bicep configuration file to author and deploy Radius-types"
-weight: 100
-categories: "Overview"
-tags: ["Bicep"]
----
-
-To use the features provided by the official Bicep compiler with Radius, certain configurations need to be defined. These are defined in a `bicepconfig.json` file that lives in your application's directory. 
-
-## What is a `bicepconfig.json`?
-
-The `bicepconfig.json` allows the Bicep compiler to consume and use Radius-types stored in an OCI registry. There are two extensions that are enabled by default in the `bicepconfig.json` so that you can use Radius and AWS resources. The "radius" extension contains the schema information for all Radius-maintained resources, and the "aws" extension contains the schema information for AWS resources. You can optionally add any other settings that are relevant to your application. There are two ways to generate a `bicepconfig.json` with Radius. 
-
-## Automatically generate a `bicepconfig.json` via `rad init`
-
-{{< read file= "/shared-content/installation/bicepconfig/rad-init.md" >}}
-
-## Manually create a `bicepconfig.json` 
-
-{{< read file= "/shared-content/installation/bicepconfig/manual.md" >}}
-
-## Author and deploy Radius-types
-
-{{< alert title="Replace import statements with extension" color="warning" >}} Radius is now merged with the Bicep. If you have bicep files with the following import statements, please replace them as needed.
-
- 1. Change `import radius as radius` to `extension radius` 
- 1. Change `import aws as aws` to `extension aws`
- 1. Change `import kubernetes as kubernetes {}` to `extension kubernetes with {} as kubernetes`
-{{< /alert >}}
-
-Once you have a `bicepconfig.json` file in your application's directory, you can author and deploy Radius-types. 
-
-{{< rad file="snippets/app.bicep" embed=true >}}
diff --git a/docs/content/guides/tooling/bicepconfig/overview/snippets/app.bicep b/docs/content/guides/tooling/bicepconfig/overview/snippets/app.bicep
deleted file mode 100644
index d6623dbf5..000000000
--- a/docs/content/guides/tooling/bicepconfig/overview/snippets/app.bicep
+++ /dev/null
@@ -1,11 +0,0 @@
-extension radius
-
-@description('The environment ID of your Radius Application. Set automatically by the rad CLI.')
-param environment string
-
-resource myapp 'Applications.Core/applications@2023-10-01-preview' = {
-  name: 'my-application'
-  properties: {
-    environment: environment
-  }
-}
diff --git a/docs/content/guides/tooling/dashboard/_index.md b/docs/content/guides/tooling/dashboard/_index.md
deleted file mode 100644
index 699794ba9..000000000
--- a/docs/content/guides/tooling/dashboard/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "Radius dashboard"
-linkTitle: "Dashboard"
-description: "Documentation on the Radius dashboard"
-weight: 400
----
diff --git a/docs/content/guides/tooling/dashboard/overview/dashboard-home.png b/docs/content/guides/tooling/dashboard/overview/dashboard-home.png
deleted file mode 100644
index a1ba1004b..000000000
Binary files a/docs/content/guides/tooling/dashboard/overview/dashboard-home.png and /dev/null differ
diff --git a/docs/content/guides/tooling/dashboard/overview/index.md b/docs/content/guides/tooling/dashboard/overview/index.md
deleted file mode 100644
index bdec6e3d1..000000000
--- a/docs/content/guides/tooling/dashboard/overview/index.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-type: docs
-title: "Overview: Radius Dashboard"
-linkTitle: "Overview"
-description: "Learn about using the Radius Dashboard to visualize your application graph, environments, and recipes"
-weight: 100
-categories: "Overview"
-tags: ["dashboard"]
----
-
-## What is the Radius Dashboard?
-
-The Radius Dashboard is the frontend experience for Radius and provides a graphical interface for visualizing your [Application Graph]({{< ref "concepts/applications" >}}), [Environments]({{< ref "concepts/environments" >}}), and [Recipes]({{< ref "concepts/recipes" >}}). It provides both textual and visual representations of your Radius Applications and resources, as well as a directory of Recipes that are available in each Environment.
-
-{{< image src="dashboard-home.png" alt="screenshot of an example Radius Dashboard home page" width=800 >}}
-
-## Built with extensibility in mind
-
-The Radius Dashboard is built on [Backstage](https://backstage.io/), an open-source platform for building developer portals that provides a rich set of components to accelerate UI development. It is a skinned deployment of Backstage that includes a set of plugins that provide the Radius experience. The components that make up the dashboard are built with extensibility in mind so that they can be used in other contexts beyond Backstage in the future.
-
-## Key features
-
-The Radius Dashboard currently provides the following features:
-
-- **Application graph visualization**: A visualization of the [application graph]({{< ref "concepts/applications" >}}) that shows how resources within an application are connected to each other and the underlying infrastructure.
-- **Resource overview and details**: Detailed information about resources within Radius, including [applications]({{< ref "concepts/applications" >}}), [environments]({{< ref "concepts/environments" >}}), and infrastructure.
-- **Recipes directory**: A listing of all the Radius [Recipes]({{< ref "concepts/recipes" >}}) available to the user for a given environment.
-
-## Installation
-
-The Radius Dashboard is installed by default as a part of your Radius initialization and deployment.
-
-{{< alert title="Opting-out" color="warning" >}}
-To opt-out of installing the dashboard, you can use the `--set dashboard.enabled=false` flag when running `rad init` or `rad install kubernetes`. See more instructions in the Radius [initialization]({{< ref "installation#step-3-initialize-radius" >}}) and [installation]({{< ref "guides/operations/kubernetes/kubernetes-install" >}}) guides.
-{{< /alert >}}
-
-To remove the dashboard from your existing installation of Radius on your cluster, you can run:
-
-```bash
-rad install kubernetes --reinstall --set dashboard.enabled=false
-```
-
-## Accessing the Dashboard
-
-When you run your application with the `rad run` command, Radius creates a port-forward from `localhost` to port `7007` inside the container that you may use to access your Radius Dashboard by visiting [http://localhost:7007](http://localhost:7007) in a browser.
-
-Alternatively, you can manually create a port-forward from `localhost` to the port number of your choice to provide access to your Radius Dashboard:
-
-```bash
-kubectl port-forward --namespace=radius-system svc/dashboard 7007:80
-```
diff --git a/docs/content/guides/tooling/rad-cli/_index.md b/docs/content/guides/tooling/rad-cli/_index.md
deleted file mode 100644
index 7af1fc278..000000000
--- a/docs/content/guides/tooling/rad-cli/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "rad CLI"
-linkTitle: "rad CLI"
-description: "Documentation on the rad CLI"
-weight: 100
----
diff --git a/docs/content/guides/tooling/rad-cli/howto-rad-cli/index.md b/docs/content/guides/tooling/rad-cli/howto-rad-cli/index.md
deleted file mode 100644
index 005d5727e..000000000
--- a/docs/content/guides/tooling/rad-cli/howto-rad-cli/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-type: docs
-title: "How-To: Install the rad CLI"
-linkTitle: "Install rad CLI"
-description: "Learn how to install the rad CLI on your local machine"
-weight: 200
-categories: "How-To"
-tags: ["rad CLI", "Bicep"]
----
-
-{{< read file= "/shared-content/installation/rad-cli/install-rad-cli.md" >}}
diff --git a/docs/content/guides/tooling/rad-cli/overview/index.md b/docs/content/guides/tooling/rad-cli/overview/index.md
deleted file mode 100644
index f0b04e44b..000000000
--- a/docs/content/guides/tooling/rad-cli/overview/index.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-type: docs
-title: "Overview: rad CLI"
-linkTitle: "Overview"
-description: "Learn about the rad CLI and how to interact with Radius from your local machine"
-weight: 100
-categories: "Overview"
-tags: ["rad CLI"]
----
-
-The rad Command Line Interface (CLI) allows you to interact with Radius from your local machine. It is the primary way to interact with Radius and is used to create, deploy, and manage your applications, environments, and resources.
-
-```bash
-$ rad
-Radius CLI
-
-Usage:
-  rad [command]
-
-Available Commands:
-  application Manage Radius Applications
-  bicep       Manage bicep compiler
-  completion  Generates shell completion scripts
-  credential  Manage cloud provider credential for a Radius installation.
-  debug-logs  Capture logs from Radius control plane for debugging and diagnostics.
-  deploy      Deploy a template
-  env         Manage Radius Environments
-  group       Manage resource groups
-  help        Help about any command
-  init        Initialize Radius
-  install     Installs Radius for a given platform
-  recipe      Manage recipes
-  resource    Manage resources
-  run         Run an application
-  uninstall   Uninstall Radius for a specific platform
-  version     Prints the versions of the rad cli
-  workspace   Manage workspaces
-```
-
-## Installation
-
-The rad CLI is distributed as a single binary that can be installed on Linux, macOS, and Windows. Visit the [installation guide]({{< ref howto-rad-cli >}}) to learn how to install the rad CLI.
-
-{{< button text="Install rad CLI" page="howto-rad-cli" >}}
-
-## Binary location
-
-{{< tabs "macOS/Linux/WSL" "Windows" >}}
-
-{{% codetab %}}
-By default, the rad CLI installation script installs the rad CLI to `/usr/local/bin/rad`
-
-If you would like to install the rad CLI to a different path, you can specify the path with the `RADIUS_INSTALL_DIR` environment variable:
-
-```bash
-# Install to home directory
-export RADIUS_INSTALL_DIR=~/
-```
-
-{{% /codetab %}}
-
-{{% codetab %}}
-By default, the rad CLI installation script installs the rad CLI to `%LOCALAPPDATA%\radius\rad.exe`
-
-{{% /codetab %}}
-
-{{< /tabs >}}
-
-## Configuration
-
-The rad CLI stores its configuration, the rad-Bicep compiler, and other configuration under the `rad` directory.
-
-{{< tabs "macOS/Linux/WSL" "Windows" >}}
-
-{{% codetab %}}
-The rad CLI stores configuration under `~/.rad`
-{{% /codetab %}}
-
-{{% codetab %}}
-The rad CLI stores configuration under `%USERPROFILE%\.rad`
-{{% /codetab %}}
-
-{{< /tabs >}}
-
-### `config.yaml` file
-
-The rad CLI stores its configuration in a YAML file named `config.yaml` under the `rad` directory. This file contains [workspaces]({{< ref "/guides/operations/workspaces/overview" >}}), which point to your cluster, your default [resource group]({{< ref "/guides/operations/groups/overview" >}}), and your default [environment]({{< ref "concepts/environments" >}}).
-
-When the rad CLI runs commands, it will use the configuration in the `config.yaml` file to determine which cluster, resource group, and environment to target and use.
-
-For more information, refer to the [`config.yaml` reference documentation]({{< ref "/reference/config" >}}).
-
-### `rad-bicep` compiler
-
-The rad CLI uses the Bicep compiler to compile Bicep files to JSON templates. The Bicep compiler is stored as `/bin/rad-bicep` within your configuration directory.
-
-## Reference documentation
-
-Visit the [reference documentation]({{< ref "/reference/cli" >}}) to learn more about the rad CLI and its commands.
-
-{{< button text="Reference docs" page="/reference/cli" >}}
diff --git a/docs/content/guides/tooling/vscode/_index.md b/docs/content/guides/tooling/vscode/_index.md
deleted file mode 100644
index 24533fcf6..000000000
--- a/docs/content/guides/tooling/vscode/_index.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-type: docs
-title: "Visual Studio Code tooling"
-linkTitle: "VS Code"
-description: "Learn how to use Radius in Visual Studio Code"
-weight: 200
----
diff --git a/docs/content/guides/tooling/vscode/howto-vscode-bicep/index.md b/docs/content/guides/tooling/vscode/howto-vscode-bicep/index.md
deleted file mode 100644
index d42344343..000000000
--- a/docs/content/guides/tooling/vscode/howto-vscode-bicep/index.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-type: docs
-title: "How-To: Install the Bicep VSCode extension"
-linkTitle: "Bicep Extension"
-description: "Learn how to use Radius in Visual Studio Code"
-weight: 200
-categories: "How-To"
-tags: ["Bicep", "VSCode"]
----
-
-{{< read file= "/shared-content/installation/vscode-bicep/install-vscode-bicep.md" >}}
\ No newline at end of file
diff --git a/docs/content/guides/tooling/vscode/overview/index.md b/docs/content/guides/tooling/vscode/overview/index.md
deleted file mode 100644
index 25d29274d..000000000
--- a/docs/content/guides/tooling/vscode/overview/index.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-type: docs
-title: "Overview: Using Radius in Visual Studio Code"
-linkTitle: "Overview"
-description: "Learn how to use Radius in Visual Studio Code"
-weight: 100
-categories: "Overview"
-tags: ["VSCode"]
----
-
-When using Visual Studio Code with Radius there are a set of extensions you can install to help author, validate, and manage your Radius Applications and environments.
-
-{{< alert title="Disable the Radius Bicep extension" color="warning" >}}
-Previously, Radius made use of the Radius Bicep extension, a temporary extension used to model Radius and AWS resource types. The Radius Bicep extension has been deprecated and we have upstreamed our extensibility updates to the official Bicep. If you have the Radius Bicep extension installed you will need to disable or uninstall it before installing the Bicep extension. 
-{{< /alert >}}
-
-## Bicep extension
-
-The Bicep extension provides formatting, intellisense, and validation for Bicep templates.
-
-{{< image src="vscode-bicep.png" alt="Screenshot of the Bicep extension showing available Radius resource types" width=600px >}}
-

- -{{< button text="Bicep guide" page="howto-vscode-bicep" >}} - -## Terraform extension - -When authoring [Terraform Recipes]({{< ref "concepts/recipes" >}}) you can use the HashiCorp Terraform extension to help author, validate, and manage your Terraform templates. - -{{< button text="Terraform extension" link="https://marketplace.visualstudio.com/items?itemName=hashicorp.terraform" newtab="true" >}} \ No newline at end of file diff --git a/docs/content/guides/tooling/vscode/overview/vscode-bicep.png b/docs/content/guides/tooling/vscode/overview/vscode-bicep.png deleted file mode 100644 index 0e4c60f84..000000000 Binary files a/docs/content/guides/tooling/vscode/overview/vscode-bicep.png and /dev/null differ diff --git a/docs/content/reference/config.md b/docs/content/reference/config.md index c14ea4677..c2a81b1c3 100644 --- a/docs/content/reference/config.md +++ b/docs/content/reference/config.md @@ -3,7 +3,7 @@ type: docs title: "Radius Configuration file" linkTitle: "config.yaml" description: "Detailed reference documentation on the Radius config.yaml configuration file" -weight: 500 +weight: 100 --- Radius [workspaces]({{< ref workspaces >}}) are used to easily switch between environments. diff --git a/docs/content/reference/context-schema/index.md b/docs/content/reference/context-schema/index.md index 68845e8d1..9213e5602 100644 --- a/docs/content/reference/context-schema/index.md +++ b/docs/content/reference/context-schema/index.md @@ -4,7 +4,7 @@ title: "Reference: Recipe context object schema" linkTitle: "Recipe context" description: "Learn how to use the Recipe context object in your Recipe templates" categories: "Reference" -weight: 800 +weight: 300 --- The `context` object is automatically injected to Bicep templates when a Recipe is run. It contains information about the runtime, environment, application, and resource from which the Recipe was run. This enables you to author templates that can be used as Recipes. For more information visit the [Recipe authoring how-to guide]({{< ref howto-author-recipes >}}). diff --git a/docs/content/reference/helminstallation.md b/docs/content/reference/helminstallation.md new file mode 100644 index 000000000..ef6742724 --- /dev/null +++ b/docs/content/reference/helminstallation.md @@ -0,0 +1,11 @@ +--- +type: docs +title: "Helm Installation Options" +linkTitle: "Helm Installation" +description: "Detailed reference documentation on the Radius Helm installation options" +weight: 200 +--- + +{{< yamltable file="https://github.com/radius-project/radius/blob/main/deploy/Chart/values.yaml" >}} + +{{< button text="Helm Chart" link="https://github.com/radius-project/radius/blob/main/deploy/Chart/README.md" >}} diff --git a/docs/content/reference/samples/tutorial-add-radius/index.md b/docs/content/reference/samples/tutorial-add-radius/index.md index 9ea05d23b..de21003cb 100644 --- a/docs/content/reference/samples/tutorial-add-radius/index.md +++ b/docs/content/reference/samples/tutorial-add-radius/index.md @@ -20,9 +20,8 @@ By the end of this tutorial, you will have deployed an existing Kubernetes appli ## Prerequisites -- [Kubernetes cluster]({{< ref "guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}}) +- [Install Radius]({{< ref "guides/installation/install" >}}) - [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) -- [rad CLI]({{< ref howto-rad-cli >}}) ## Overview diff --git a/docs/layouts/partials/yamltable/flatten.html b/docs/layouts/partials/yamltable/flatten.html new file mode 100644 index 000000000..2152e0d26 --- /dev/null +++ b/docs/layouts/partials/yamltable/flatten.html @@ -0,0 +1,36 @@ +{{- $value := .value -}} +{{- $prefix := .prefix -}} +{{- $scratch := .scratch -}} + +{{- if reflect.IsMap $value -}} + {{- $items := slice -}} + {{- range $k, $_ := $value -}} + {{- $items = $items | append (dict "raw" $k "label" (printf "%v" $k)) -}} + {{- end -}} + {{- $items = sort $items "label" -}} + {{- range $items }} + {{- $raw := .raw -}} + {{- $label := .label -}} + {{- $child := index $value $raw -}} + {{- $full := cond (eq $prefix "") $label (printf "%s.%s" $prefix $label) -}} + {{- partial "yamltable/flatten.html" (dict "value" $child "prefix" $full "scratch" $scratch) -}} + {{- end -}} +{{- else if reflect.IsSlice $value -}} + {{- $json := $value | jsonify -}} + {{- $json = replace $json "\n" " " -}} + {{- $rows := $scratch.Get "rows" | default (slice) -}} + {{- $rows = $rows | append (dict "key" $prefix "value" $json) -}} + {{- $scratch.Set "rows" $rows -}} +{{- else -}} + {{- $type := printf "%T" $value -}} + {{- $str := printf "%v" $value -}} + {{- if eq $type "string" -}} + {{- $str = $value -}} + {{- end -}} + {{- if eq $str "" -}} + {{- $str = "null" -}} + {{- end -}} + {{- $rows := $scratch.Get "rows" | default (slice) -}} + {{- $rows = $rows | append (dict "key" $prefix "value" $str) -}} + {{- $scratch.Set "rows" $rows -}} +{{- end -}} diff --git a/docs/layouts/shortcodes/yamltable.html b/docs/layouts/shortcodes/yamltable.html new file mode 100644 index 000000000..f262eeac6 --- /dev/null +++ b/docs/layouts/shortcodes/yamltable.html @@ -0,0 +1,165 @@ +{{- $fileParam := .Get "file" | default (.Get "path") -}} +{{- if not $fileParam -}} + {{- errorf "yamltable shortcode: missing required attribute \"file\"" -}} +{{- end -}} + +{{- $content := "" -}} +{{- $fileForError := $fileParam -}} + +{{- if hasPrefix $fileParam "http" -}} + {{- $repoPrefix := "https://github.com/radius-project/radius/blob/main/" -}} + {{- if hasPrefix $fileParam $repoPrefix -}} + {{- $relative := replace $fileParam $repoPrefix "" -}} + {{- $localCandidate := path.Join "../../radius" $relative -}} + {{- if fileExists $localCandidate -}} + {{- $content = readFile $localCandidate -}} + {{- $fileForError = $localCandidate -}} + {{- end -}} + {{- end -}} + {{- if eq $content "" -}} + {{- $remote := $fileParam -}} + {{- if hasPrefix $fileParam "https://github.com/" -}} + {{- $remote = replace (replace $fileParam "https://github.com/" "https://raw.githubusercontent.com/") "/blob/" "/" -}} + {{- end -}} + {{- with resources.GetRemote $remote -}} + {{- $content = .Content -}} + {{- $fileForError = $remote -}} + {{- else -}} + {{- errorf "yamltable shortcode: failed to fetch %q" $fileParam -}} + {{- end -}} + {{- end -}} +{{- else -}} + {{- if not (fileExists $fileParam) -}} + {{- errorf "yamltable shortcode: file %q not found" $fileParam -}} + {{- end -}} + {{- $content = readFile $fileParam -}} +{{- end -}} + +{{- $content = replace $content "\ufeff" "" -}} + +{{- $data := transform.Unmarshal $content -}} +{{- if not (reflect.IsMap $data) -}} + {{- errorf "yamltable shortcode: expected YAML object at root of %q" $fileForError -}} +{{- end -}} + +{{- $descMap := dict -}} +{{- $order := slice -}} +{{- $orderSeen := dict -}} +{{- $paths := dict -}} +{{- $comments := slice -}} + +{{- range $line := split $content "\n" }} + {{- $trim := trim $line " \t\r\n" -}} + {{- if or (eq $trim "") (eq $trim "---") (eq $trim "...") -}} + {{- $comments = slice -}} + {{- continue -}} + {{- end -}} + {{- if hasPrefix $trim "#" -}} + {{- $clean := trim (replaceRE "^#+\\s*" "" $trim) " \t\r\n" -}} + {{- if ne $clean "" -}} + {{- $comments = $comments | append $clean -}} + {{- end -}} + {{- continue -}} + {{- end -}} + {{- if hasPrefix $trim "-" -}} + {{- $comments = slice -}} + {{- continue -}} + {{- end -}} + {{- $match := findRESubmatch "^([^:#]+):\\s*(.*)$" $trim -}} + {{- if not $match -}} + {{- continue -}} + {{- end -}} + {{- $groups := index $match 0 -}} + {{- if lt (len $groups) 3 -}} + {{- continue -}} + {{- end -}} + + {{- $key := trim (index $groups 1) " \t\r\n" -}} + {{- $indentStr := "" -}} + {{- with findRE "^\\s*" $line -}} + {{- $indentStr = index . 0 -}} + {{- end -}} + {{- $indent := len $indentStr -}} + {{- $level := 0 -}} + {{- if gt $indent 0 -}} + {{- $level = div $indent 2 -}} + {{- end -}} + {{- $parent := "" -}} + {{- if gt $level 0 -}} + {{- $parentKey := printf "%d" (sub $level 1) -}} + {{- with index $paths $parentKey -}} + {{- $parent = . -}} + {{- end -}} + {{- end -}} + {{- $fullKey := cond (eq $parent "") $key (printf "%s.%s" $parent $key) -}} + {{- $paths = merge $paths (dict (printf "%d" $level) $fullKey) -}} + + {{- if gt (len $comments) 0 -}} + {{- $desc := delimit $comments " " -}} + {{- $descMap = merge $descMap (dict $fullKey $desc) -}} + {{- end -}} + {{- $comments = slice -}} + + {{- if not (isset $orderSeen $fullKey) -}} + {{- $order = $order | append $fullKey -}} + {{- $orderSeen = merge $orderSeen (dict $fullKey true) -}} + {{- end -}} +{{- end -}} + +{{- $scratch := newScratch -}} +{{- partial "yamltable/flatten.html" (dict "value" $data "prefix" "" "scratch" $scratch) -}} +{{- $entries := $scratch.Get "rows" | default (slice) -}} +{{- $entryDict := dict -}} +{{- range $entries }} + {{- $entryDict = merge $entryDict (dict .key .value) -}} +{{- end -}} + +{{- range $entries }} + {{- if not (isset $orderSeen .key) -}} + {{- $order = $order | append .key -}} + {{- $orderSeen = merge $orderSeen (dict .key true) -}} + {{- end -}} +{{- end -}} + +{{- $rows := slice -}} +{{- $seenKeys := dict -}} +{{- range $order }} + {{- $key := . -}} + {{- if isset $entryDict $key -}} + {{- $value := index $entryDict $key -}} + {{- $desc := index $descMap $key | default "" -}} + {{- $rows = $rows | append (dict "key" $key "value" $value "description" $desc) -}} + {{- $seenKeys = merge $seenKeys (dict $key true) -}} + {{- end -}} +{{- end -}} + +{{- range $entries }} + {{- if not (isset $seenKeys .key) -}} + {{- $desc := index $descMap .key | default "" -}} + {{- $rows = $rows | append (dict "key" .key "value" .value "description" $desc) -}} + {{- end -}} +{{- end -}} + + + + + + + + + + {{- range $rows }} + + + + + {{- else }} + + + + {{- end }} + +
PropertyDescription
{{ .key }} + {{- if .description }}
{{ .description | htmlEscape }}
{{- end }} + {{- if .value }}
{{ .value }}
{{- end }} +
No entries parsed from {{ $fileForError }}
diff --git a/docs/shared-content/installation/install-radius/initialize-radius.md b/docs/shared-content/installation/install-radius/initialize-radius.md index 597fc7470..8adac9615 100644 --- a/docs/shared-content/installation/install-radius/initialize-radius.md +++ b/docs/shared-content/installation/install-radius/initialize-radius.md @@ -17,7 +17,7 @@ Initializing Radius installs the Radius control-plane and creates a Radius Envir 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...