Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Kubernetes overview page #744

Merged
merged 5 commits into from
Sep 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Extensions allow you to customize how resources are generated or customized as p

### Kubernetes Namespace extension

The Kubernetes namespace extension allows you to customize how all of the resources within your application generate Kubernetes resources. See the [Kubernetes mapping guide]({{< ref kubernetes-mapping >}}) for more information on namespace mapping behavior.
The Kubernetes namespace extension allows you to customize how all of the resources within your application generate Kubernetes resources. See the [Kubernetes mapping guide]({{< ref "/guides/operations/kubernetes/overview#resource-mapping" >}}) for more information on namespace mapping behavior

### Kubernetes Metadata extension

Expand Down
2 changes: 1 addition & 1 deletion docs/content/guides/author-apps/azure/overview/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Radius applications are able to connect to and leverage every Azure resource wit

## Configure an Azure Provider

The Azure provider allows you to deploy and connect to Azure resources from a Radius environment on any of the [supported clusters]({{< ref supported-clusters>}}). To configure an Azure provider, you can follow the documentation [here]({{< ref "/guides/operations/providers/howto-azure-provider" >}}).
The Azure provider allows you to deploy and connect to Azure resources from a Radius environment on any of the [supported clusters]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}}). To configure an Azure provider, you can follow the documentation [here]({{< ref "/guides/operations/providers/howto-azure-provider" >}}).

## Resource library

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Additionally you can customize the behavior of the containers with the help of [

An image can be specified for your container workload to pull and run. Refer to the [container reference docs]({{< ref container-schema >}}) for more information on image requirements.

If you want to pull the container image from a private container register, you need to allow access from your Kubernetes cluster. Follow the documentation to [configure private container registries access]({{< ref "guides/operations/kubernetes/supported-clusters#configure-container-registry-access" >}}).
If you want to pull the container image from a private container register, you need to allow access from your Kubernetes cluster. Follow the documentation to [configure private container registries access]({{< ref "/guides/operations/kubernetes/overview#configure-container-registry-access" >}}).

### Ports

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ tags: ["logs","observability"]

## Prerequisites

- [Supported Kubernetes cluster]({{< ref supported-clusters >}})
- [Supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}})
- [kubectl](https://kubernetes.io/docs/tasks/tools/)
- [Helm 3](https://helm.sh/)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ tags: ["metrics", "observability"]

1. Make sure you have the following pre-requisites:

- [Supported Kubernetes cluster]({{< ref supported-clusters >}})
- [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 >}})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This guide will walk you through the process of managing resource groups in Radi

## Pre-requisites

- [Supported Kubernetes cluster]({{< ref supported-clusters >}})
- [Supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}})
- [Radius CLI]({{< ref howto-rad-cli >}})

## Step 1: Ensure Radius is installed
Expand Down
1 change: 0 additions & 1 deletion docs/content/guides/operations/kubernetes/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,4 @@ title: "Kubernetes platform"
linkTitle: "Kubernetes"
description: "Learn how Radius can run on Kubernetes"
weight: 10
tags: ["Kubernetes"]
---
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: docs
title: "Install Radius on Kubernetes"
title: "How-To: Install Radius on Kubernetes"
linkTitle: "Installation"
description: "Learn how to setup Radius on supported Kubernetes clusters"
weight: 200
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ You can set labels and annotations on an environment, application, or container

## Cascading metadata

Kubernetes metadata can be applied at the environment, application, or container layers. Metadata cascades down from the environment to the application to the containers, gateway and route resources. For example, you can set labels and annotations at an environment level and all containers within the environment will gain these labels and annotation, without the need for an explicit extension on the containers. The following resources will gain the Kubernetes metadata for their [output resources]({{< ref kubernetes-mapping >}}) from labels, annotations set at Environment, Application levels:
Kubernetes metadata can be applied at the environment, application, or container layers. Metadata cascades down from the environment to the application to the containers, gateway and route resources. For example, you can set labels and annotations at an environment level and all containers within the environment will gain these labels and annotation, without the need for an explicit extension on the containers. The following resources will gain the Kubernetes metadata for their [output resources]({{< ref "/guides/operations/kubernetes/overview#resource-mapping" >}}) from labels, annotations set at Environment, Application levels:

- Applications.Core/containers
- Applications.Core/httpRoutes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,55 @@
---
type: docs
title: "Supported Kubernetes clusters"
linkTitle: "Supported clusters"
description: "Learn how to setup Radius on supported Kubernetes clusters"
title: "Overview: Radius on Kubernetes platform"
linkTitle: "Overview"
description: "Learn how Radius can run on Kubernetes"
weight: 100
categories: "How-To"
tags: ["Kubernetes", "control plane"]
aliases:
- /operations/kubernetes/supported-clusters/
categories: ["Overview"]
tags: ["Kubernetes"]
---

## Minimum version
Radius offers a Kubernetes-based platform for hosting the [Radius control plane]({{< ref "/guides/operations/control-plane" >}}) and [Radius environments]({{< ref "/guides/deploy-apps/environments/overview" >}}).

<img src="kubernetes-mapping.png" alt="Diagram showing Radius resources being mapped to Kubernetes objects" width=600px />

## Supported Kubernetes versions

Kubernetes version `1.23.8` or higher is recommended to run Radius.

## Supported clusters
## Resource mapping

Radius resources, when deployed to a Kubernetes environment, are mapped to one or more Kubernetes objects. The following table describes the mapping between Radius resources and Kubernetes objects:

| Radius resource | Kubernetes object |
|----------------------------------|-------------------|
| [`Applications.Core/containers`]({{< ref container-schema >}}) | `apps/Deployment@v1` |
| [`Applications.Core/httpRoutes`]({{< ref httproute >}}) | `core/Service@v1` |
| [`Applications.Core/gateways`]({{< ref gateway >}}) | `projectcontour.io/HTTPProxy@v1` |
| [`Applications.Dapr/pubSubBrokers`]({{< ref dapr-pubsub >}}) | `dapr.io/Component@v1alpha1` |
| [`Applications.Dapr/secretStores`]({{< ref dapr-secretstore >}}) | `dapr.io/Component@v1alpha1` |
| [`Applications.Dapr/stateStores`]({{< ref dapr-statestore >}}) | `dapr.io/Component@v1alpha1` |

### Namespace mapping

Application-scoped resources are by default generated in a new Kubernetes namespace with the name format `'<envNamespace>-<appname>'`. This prevents multiple applications with resources of the same name from conflicting with each other.

For example, let's take an application named `'myapp'` with a container named `'frontend'`. This application is deployed into an environment configured with with the `'default'` namespace. A Kubernetes Deployment named `'frontend'` is now deployed into the namespace `'default-myapp'`.

If you wish to override the default behavior and specify your own namespace for application resources to be generated into, you can leverage the [`kubernetesNamespace` application extension]({{< ref "application-schema#kubernetesNamespace" >}}). All application-scoped resources will now be deployed into this namespace instead.

### Resource naming

Resources that are generated in Kubernetes use the same name as the resource in Radius. For example, a Radius container named 'frontend' will map to a Kubernetes Deployment named `'frontend'`. This makes it easy to conceptually map between Radius and Kubernetes resources.

For multiple Radius resources that map to a single Kubernetes resource (_e.g. daprPubSubBrokers, daprSecretStores, and daprStateStores all map to a dapr.io/Component_) and there are collisions in naming, Radius has conflict logic to allow the first resource to be deployed but will throw a warning for subsequent resource deployments that have the same name. This prevents Radius resources from unintentionally overwriting the same generated resource.

## Kubernetes metadata

Radius environments, applications, and resources can be annotated/labeled with Kubernetes metadata. Refer to the Kubernetes metadata page for more information:

{{< 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:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The AWS provider allows you to deploy and connect to AWS resources from a Radius

## Prerequisites

- [EKS cluster]({{< ref "guides/operations/kubernetes/supported-clusters" >}})
- [EKS cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}})
- [AWS account](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account) and an [IAM user](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html)
- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Extensions allow you to customize how resources are generated or customized as p

##### kubernetesNamespace

The Kubernetes namespace extension allows you to customize how all of the resources within your application generate Kubernetes resources. See the [Kubernetes mapping guide]({{< ref kubernetes-mapping >}}) for more information on namespace mapping behavior.
The Kubernetes namespace extension allows you to customize how all of the resources within your application generate Kubernetes resources. See the [Kubernetes mapping guide]({{< ref "/guides/operations/kubernetes/overview#resource-mapping" >}}) for more information on namespace mapping behavior.

| Key | Required | Description | Example |
|------|:--------:|-------------|---------|
Expand Down
2 changes: 1 addition & 1 deletion docs/content/tutorials/tutorial-dapr/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ For more details on the app and access to the source code, visit the `tutorials/

## Prerequisites

- [Kubernetes cluster]({{< ref "supported-clusters" >}})
- [Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}})
- [Radius CLI]({{< ref "getting-started" >}})
- [Radius environment]({{< ref "/guides/deploy-apps/environments/overview" >}})
- [Dapr installed on your Kubernetes cluster](https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/)
Expand Down
Loading