Skip to content

Commit

Permalink
Merge branch 'v0.22' into aacrawfi/app-graph
Browse files Browse the repository at this point in the history
  • Loading branch information
AaronCrawfis authored Jul 17, 2023
2 parents 31f8b81 + c60d0b1 commit ae70c79
Show file tree
Hide file tree
Showing 34 changed files with 336 additions and 254 deletions.
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# text files use OS defaults on checkout, LF on checkin
* text eol=auto

# shell scripts always use LF
*.sh text eol=lf

# images are binary
*.png binary
1 change: 1 addition & 0 deletions .github/config/en-custom.txt
Original file line number Diff line number Diff line change
Expand Up @@ -421,3 +421,4 @@ kubernetesMetadata
daprSidecar
manualScaling
roadmap
Balancer
44 changes: 35 additions & 9 deletions .github/workflows/spellcheck.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,20 @@ on:
branches:
- v*.*
- edge
paths:
- 'docs/**'
- '.github/workflows/spellcheck.yaml'
- '.github/config/**'
pull_request:
types: [opened, synchronize, reopened]
branches:
- v*.*
- edge
paths:
- 'docs/**'
- '.github/workflows/spellcheck.yaml'
- '.github/config/**'

env:
ACTION_LINK: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'

concurrency:
group: spellcheck-${{ github.ref }}-${{ github.event.pull_request.number || github.sha }}

jobs:
build:
spellcheck:
name: Spellcheck
runs-on: ubuntu-latest
steps:
Expand All @@ -31,3 +29,31 @@ jobs:
uses: rojopolis/[email protected]
with:
config_path: .github/config/.pyspelling.yml
- name: Post GitHub workkflow output on failure
if: failure()
run: |
echo "## :x: Spellcheck Failed" >> $GITHUB_STEP_SUMMARY
echo "There are spelling errors in your PR. Visit [the workflow output](${{ env.ACTION_LINK }}) to see what words are failing." >> $GITHUB_STEP_SUMMARY
echo "### Adding new words" >> $GITHUB_STEP_SUMMARY
echo "If you are adding a new custom word refer to the [docs guide](https://docs.radapp.dev/contributing/docs/#spelling)" >> $GITHUB_STEP_SUMMARY
- name: Post GitHub workflow output on success
run: |
echo "## :white_check_mark: Spellcheck Passed" >> $GITHUB_STEP_SUMMARY
echo "There are no spelling errors in your PR." >> $GITHUB_STEP_SUMMARY
- name: Post GitHub comment on failure
if: failure()
uses: marocchino/sticky-pull-request-comment@v2
with:
header: spellcheck
recreate: true
message: |
## :x: Spellcheck Failed
There are spelling errors in your PR. Visit [the workflow output](${{ env.ACTION_LINK }}) to see what words are failing.
### Adding new words
If you are adding a new custom word refer to the [docs guide](https://docs.radapp.dev/contributing/docs/#spelling)
- name: Clear GitHub comment on success
uses: marocchino/sticky-pull-request-comment@v2
continue-on-error: true
with:
header: spellcheck
delete: true
1 change: 0 additions & 1 deletion docs/assets/scss/_sidebar-tree.scss
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@

&__page {
color: $gray-700;
font-weight: $font-weight-light;
}
}

Expand Down
1 change: 1 addition & 0 deletions docs/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,5 @@ version_menu = "Releases"
[params.ui]
sidebar_menu_compact = true
sidebar_search_disable = true
sidebar_menu_foldable = true
ul_show = 1
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Radius development environments enable you to quickly get started with Radius an

## How-to: Initialize a new dev environment

1. Initialize a new [Radius environment]{{(< ref "operations/environments">)}} with `rad init --dev` command:
1. Initialize a new [Radius environment]({{< ref "operations/environments/overview">}}) with `rad init --dev` command:
```bash
rad init --dev
```
Expand Down
68 changes: 0 additions & 68 deletions docs/content/author-apps/networking/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,71 +7,3 @@ weight: 400
categories: "Concept"
tags: ["routes","gateways"]
---

Radius networking resources allow you to model:

- Communication between a user and a service
- Communication between services

## HTTP Routes

An `HttpRoute` resources defines HTTP communication between two [services]({{< ref container >}}). They can be used to define both one-way communication, as well as cycles of communication between services.

<img src="networking-cycles.png" style="width:400px" alt="Diagram of Radius service-to-service networking with cycles" /><br />

Refer to the [HTTP Route schema]({{< ref httproute >}}) for more information on how to model HTTP routes.

A gateway can optionally be added for external users to access the Route.

## Gateways

`Gateway` defines how requests are routed to different resources, and also provides the ability to expose traffic to the internet. Conceptually, gateways allow you to have a single point of entry for traffic in your application, whether it be internal or external traffic.

`Gateway` in Radius are split into two main pieces; the `Gateway` resource itself, which defines which port and protocol to listen on, and Route(s) which define the rules for routing traffic to different resources.

<img src="networking-gateways.png" style="width:400px" alt="Diagram of Radius gateways" /><br />

Refer to the [Gateway schema]({{< ref gateway >}}) for more information on how to model gateways.

### TLS Termination

Gateways support TLS termination. This allows incoming encrypted traffic to be decrypted with a user-specific certificate and then routed, unencrypted, to the specified routes. TLS certificates can be stored or referenced via a [Radius secret store]({{< ref secretstore >}}).

### SSL Passthrough

A gateway can be configured to passthrough encrypted SSL traffic to an HTTP route and container. This is useful for applications that already have SSL termination configured, and do not want to terminate SSL at the gateway.

To set up SSL passthrough, set `tls.sslPassthrough` to `true` on the gateway, and set a single route with no `path` defined (just `destination`).

## Example

### Path-based HTTP routing

{{< tabs Bicep >}}

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

{{< /tabs >}}

### TLS termination

{{< tabs Bicep >}}

{{< codetab >}}
{{< rad file="snippets/networking-tlstermination.bicep" embed=true marker="//GATEWAY" >}}
{{< /codetab >}}

{{< /tabs >}}


### SSL Passthrough

{{< tabs Bicep >}}

{{< codetab >}}
{{< rad file="snippets/networking-sslpassthrough.bicep" embed=true marker="//GATEWAY" >}}
{{< /codetab >}}

{{< /tabs >}}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ This guide will show you how to integrate Radius with cert-manager and Let's Enc

- [rad CLI]({{< ref getting-started >}})
- [kubectl CLI](https://kubernetes.io/docs/tasks/tools/)
- Domain name + DNS A-record: In order to setup TLS communication to Radius you will need to make sure you have a domain name and DNS A-record pointing to your Kubernetes cluster's IP address. This is required for Let's Encrypt to issue a certificate and for traffic to be routed to your application.
- If running Radius on an Azure Kubernetes Service (AKS) cluster you can optionally use a [DNS label](https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#dns-name-label) to create a DNS A-record pointing to your cluster. Refer to the [tips and tricks](#using-an-azure-dns-label) section for more information.
- If running Radius on an Elastic Kubernetes Service (EKS) cluster you can optionally leverage [Application Load Balancer](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html) for a hosted DNS name and record.

## Step 1: Initialize a Radius environment

Expand All @@ -23,6 +26,7 @@ Begin by running `rad init` to initialize the Radius environment.
```sh
rad init
```

## Step 2: Set up domain

You'll next need a DNS record to point to your Kubernetes cluster and service in order to issue the certificate and allow traffic to your application.
Expand Down Expand Up @@ -92,3 +96,17 @@ rad deploy app.bicep
Once the deployment is complete the public endpoint of your application will be printed. Navigate to this public endpoint to access the application via HTTPS. You can view the certificate to see it has a Let's Encrypt issuer:
<img src="certificate.png" alt="Screenshot of the certificate information showing a Lets Encrypt issuer" width=700 />
## Tips and tricks
### Using an Azure DNS label
If you are running Radius on an Azure Kubernetes Service (AKS) cluster you can use a [DNS label](https://learn.microsoft.com/azure/virtual-network/ip-services/public-ip-addresses#dns-name-label) to create a DNS A-record pointing to your cluster. This is useful if you don't have a domain name or don't want to use a subdomain for your dev/test environments.
To setup a DNS label for your AKS cluster:
1. Open the Azure portal to the subscription where your AKS cluster is deployed.
1. Open the resource group, prefixed with `MC_`, that contains your AKS cluster. (_i.e. `MC_myrg-mycluster_westus3`_)
1. Select the Public IP address prefixed with `kubernetes-` (_i.e. `kubernetes-a6925d5f55dfa41419c3c93648dbb30a`_)
1. Select 'Configuration' and add a DNS name label. Click save to create the DNS A-record.
1. Update your Radius gateway to use the DNS label as the `fullyQualifiedHostname` value.
77 changes: 77 additions & 0 deletions docs/content/author-apps/networking/overview/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
type: docs
title: "Overview: Application networking"
linkTitle: "Application networking"
description: "Learn how to add networking to your Radius application"
weight: 100
categories: "Overview"
tags: ["routes","gateways"]
---

Radius networking resources allow you to model:

- Communication between a user and a service
- Communication between services

## HTTP Routes

An `HttpRoute` resources defines HTTP communication between two [services]({{< ref container >}}). They can be used to define both one-way communication, as well as cycles of communication between services.

<img src="networking-cycles.png" style="width:400px" alt="Diagram of Radius service-to-service networking with cycles" /><br />

Refer to the [HTTP Route schema]({{< ref httproute >}}) for more information on how to model HTTP routes.

A gateway can optionally be added for external users to access the Route.

## Gateways

`Gateway` defines how requests are routed to different resources, and also provides the ability to expose traffic to the internet. Conceptually, gateways allow you to have a single point of entry for traffic in your application, whether it be internal or external traffic.

`Gateway` in Radius are split into two main pieces; the `Gateway` resource itself, which defines which port and protocol to listen on, and Route(s) which define the rules for routing traffic to different resources.

<img src="networking-gateways.png" style="width:400px" alt="Diagram of Radius gateways" /><br />

Refer to the [Gateway schema]({{< ref gateway >}}) for more information on how to model gateways.

### TLS Termination

Gateways support TLS termination. This allows incoming encrypted traffic to be decrypted with a user-specific certificate and then routed, unencrypted, to the specified routes. TLS certificates can be stored or referenced via a [Radius secret store]({{< ref secretstore >}}).

### SSL Passthrough

A gateway can be configured to passthrough encrypted SSL traffic to an HTTP route and container. This is useful for applications that already have SSL termination configured, and do not want to terminate SSL at the gateway.

To set up SSL passthrough, set `tls.sslPassthrough` to `true` on the gateway, and set a single route with no `path` defined (just `destination`).

## Example

### Path-based HTTP routing

{{< tabs Bicep >}}

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

{{< /tabs >}}

### TLS termination

{{< tabs Bicep >}}

{{< codetab >}}
{{< rad file="snippets/networking-tlstermination.bicep" embed=true marker="//GATEWAY" >}}
{{< /codetab >}}

{{< /tabs >}}


### SSL Passthrough

{{< tabs Bicep >}}

{{< codetab >}}
{{< rad file="snippets/networking-sslpassthrough.bicep" embed=true marker="//GATEWAY" >}}
{{< /codetab >}}

{{< /tabs >}}
3 changes: 2 additions & 1 deletion docs/content/community.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ To present a specific topic on the next Radius community call start by filling o
| Thursday Apr 20th 9:00am Pacific Time (PST) | v0.19 release | - | [Stream](https://microsoft.sharepoint.com/:v:/r/teams/radius/Shared%20Documents/General/Community%20Calls/2023-04-20%20Project%20Radius%20Community%20Call.mp4?csf=1&web=1&e=RCA5Qx) |
| Thursday May 18th 9:00am Pacific Time (PST) | v0.20 release | - | [Stream](https://microsoft.sharepoint.com/:v:/r/teams/radius/Shared%20Documents/General/Community%20Calls/2023-05-18%20Project%20Radius%20Community%20Call.mp4?csf=1&web=1&e=fKcbzm) |
| Thursday June 15th 9:00am Pacific Time (PST) | v0.21 release | - | [Stream](https://microsoft.sharepoint.com/:v:/r/teams/radius/Shared%20Documents/General/Community%20Calls/2023-06-15%20Project%20Radius%20Community%20Call.mp4?csf=1&web=1&e=WIRhP5) |
| Thursday July 13th 9:00am Pacific Time (PST) | v0.22 release | [Teams](https://teams.microsoft.com/l/meetup-join/19%3ameeting_NzI3ZTM1YmYtYTU3Yi00YWQ2LTk3OGQtOGQ5ZTQ5ODhmYmFm%40thread.v2/0?context=%7b%22Tid%22%3a%2272f988bf-86f1-41af-91ab-2d7cd011db47%22%2c%22Oid%22%3a%223e1a3c9c-fb21-4845-8053-1f53bf388796%22%7d) | |
| Thursday July 13th 9:00am Pacific Time (PST) | v0.22 release | - | [Stream](https://microsoft.sharepoint.com/:v:/r/teams/radius/Shared%20Documents/General/Community%20Calls/2023-07-13%20Project%20Radius%20Community%20Call.mp4?csf=1&web=1&e=v30w8D) |
| Thursday Aug 10th 9:00am Pacific Time (PST) | v0.23 release | TBD | - |

## GitHub Issues & repositories

Expand Down
2 changes: 1 addition & 1 deletion docs/content/getting-started/install/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ iwr -useb "https://get.radapp.dev/tools/rad/install.ps1" | iex

You may need to refresh your $PATH environment variable to access `rad`:
```powershell
$Env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
$Env:Path = [System.Environment]::GetEnvironmentVariable("Path","User")
```
{{< /latest >}}
{{< edge >}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ eksctl create cluster --name my-cluster --region=us-west-2 --zones=us-west-2a,us
## Step 2: Create a Radius environment with the AWS cloud provider

Create a [Radius environment]({{< ref "operations/environments" >}}) where you will deploy your application.
Create a [Radius environment]({{< ref "operations/environments/overview" >}}) where you will deploy your application.

1. You can view the current context for kubectl by running:

Expand All @@ -49,7 +49,7 @@ Create a [Radius environment]({{< ref "operations/environments" >}}) where you w
rad init
```

Follow the prompts to install Radius, create an [environment resource]({{< ref "operations/environments" >}}), and create a [local workspace]({{< ref workspaces >}}). You will be asked for:
Follow the prompts to install Radius, create an [environment resource]({{< ref "operations/environments/overview" >}}), and create a [local workspace]({{< ref workspaces >}}). You will be asked for:

- **Namespace** - When an application is deployed, this is the namespace where your containers and other Kubernetes resources will be run. By default, this will be in the `default` namespace.
{{% alert title="💡 About namespaces" color="success" %}} When you initialize a Radius Kubernetes environment, Radius installs the control plane resources within the `radius-system` namespace in your cluster, separate from your applications. The namespace specified in this step will be used for your application deployments.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ rad init

## Step 2: Define a Radius environment

Create a file named `app.bicep` and define a Radius environment with [identity property]({{< ref "operations/environments" >}}) set. This configures your environment to use your Azure AD workload identity installation with your cluster's OIDC endpoint:
Create a file named `app.bicep` and define a Radius environment with [identity property]({{< ref "operations/environments/overview" >}}) set. This configures your environment to use your Azure AD workload identity installation with your cluster's OIDC endpoint:

{{< rad file="snippets/container-wi.bicep" embed=true marker="//ENVIRONMENT">}}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ This quickstart will teach you:
## Prerequisites

- [Radius CLI]({{< ref "getting-started" >}})
- [Radius environment]({{< ref "operations/environments" >}})
- [Radius environment]({{< ref "operations/environments/overview" >}})

## Step 1: Model an app and container

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This quickstart will provide an overview of how to:
## Prerequisites

- [rad CLI]({{< ref getting-started >}})
- [Radius environment]({{< ref "operations/environments" >}})
- [Radius environment]({{< ref "operations/environments/overview" >}})

## Step 1: Define an app and a container

Expand Down
8 changes: 0 additions & 8 deletions docs/content/getting-started/supported-languages/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,3 @@ weight: 900
categories: "How-To"
tags: ["infrastructure-as-code"]
---

Radius supports a variety of infrastructure-as-code (IaC) languages.

{{% alert title="Other languages" color="info" %}}
Currently, Radius supports Bicep. Terraform support is underway as our next priority IaC language.
{{% /alert %}}

## Languages
Loading

0 comments on commit ae70c79

Please sign in to comment.