From c49724c221e37bd6c7c011848936ada4a0ddbc43 Mon Sep 17 00:00:00 2001 From: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> Date: Thu, 7 Dec 2023 18:01:52 -0500 Subject: [PATCH] Upmerge 7/12 (#993) * Add docs on simulated environments (#942) * Add simulated reference doc Signed-off-by: Aaron Crawfis * Add simulated environments to overview Signed-off-by: Aaron Crawfis * Update docs/content/reference/resource-schema/core-schema/environment-schema/index.md Co-authored-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> Signed-off-by: Aaron Crawfis --------- Signed-off-by: Aaron Crawfis Signed-off-by: Aaron Crawfis Co-authored-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> * Removing duplicate codespace section (#944) Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Update wording of "operators" (#928) * Update wording of "operators" Signed-off-by: Aaron Crawfis * Update to "IT operators" Signed-off-by: Aaron Crawfis * Add IT Signed-off-by: Aaron Crawfis * Update docs/content/guides/recipes/overview/index.md Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> --------- Signed-off-by: Aaron Crawfis Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * docs: the output is not correct (#969) Signed-off-by: lbzs <627062293@qq.com> * Added Azure resource page (#975) * Added Azure resource page Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Fixed spellcheck Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> --------- Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Remove "webapp" from the deployment output (#973) Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> Co-authored-by: Aaron Crawfis * Add a page on publicly available Radius artifacts (#947) Signed-off-by: Reshma Abdul Rahim * Localize Azure resource page (#981) Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Add news article Signed-off-by: Aaron Crawfis * Spellcheck Signed-off-by: Aaron Crawfis * Whitespace removal and formatting (#979) * whitespace and markdown formatting Signed-off-by: Emanuel Palm * Markdown numbered lists changed to 1 Signed-off-by: Emanuel Palm --------- Signed-off-by: Emanuel Palm Co-authored-by: Aaron Crawfis * Markdown numbering consistency and updated contribution guide (#983) * explanation of numbered lists for markdown in contribution guide * numbered lists changed to 1 for all markdown Signed-off-by: Emanuel Palm --------- Signed-off-by: Emanuel Palm Signed-off-by: Aaron Crawfis Co-authored-by: Aaron Crawfis * Fixed whitespace and markdown consistency in reference docs (#978) * fixed whitespace in CLI reference Signed-off-by: Emanuel Palm * consistency in bullet point markdown Signed-off-by: Emanuel Palm * restore CLI docs * restore CLI docs Signed-off-by: Emanuel Palm --------- Signed-off-by: Emanuel Palm Co-authored-by: Aaron Crawfis * Remove customer label (#982) Signed-off-by: Aaron Crawfis * Add Aspire comparison (#984) * Add Aspire comparison This PR adds a comparison between Radius and .NET Aspire * Spellcheck Signed-off-by: Aaron Crawfis * Apply suggestions from code review Co-authored-by: Ryan Nowak Signed-off-by: Aaron Crawfis * Apply feedback Signed-off-by: Aaron Crawfis --------- Signed-off-by: Aaron Crawfis Co-authored-by: Ryan Nowak * Definitions, typos and clarifications in docs (#985) * key vault bicep template and comment not matching schema values Signed-off-by: Emanuel Palm * clarify RP as resource provider Signed-off-by: Emanuel Palm * typo Signed-off-by: Emanuel Palm * open source changed to open-source according to MS style guide Signed-off-by: Emanuel Palm * workspace examples clarified with different names Signed-off-by: Emanuel Palm * moved paragraph to Bicep section in FAQ Signed-off-by: Emanuel Palm * fixed missing word and quote Signed-off-by: Emanuel Palm * CRD definition, removed duplicate term in word list Signed-off-by: Emanuel Palm --------- Signed-off-by: Emanuel Palm Co-authored-by: Aaron Crawfis * Deleting page content from `_index.md` files and renaming others to `index.md` (#946) * Documentation for Supported Terraform Recipe Sources (#935) * Adding a column to the Recipe overview page to indicate supported storages. Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Update docs/content/guides/recipes/overview/index.md Co-authored-by: Aaron Crawfis Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> --------- Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> Co-authored-by: Aaron Crawfis * Removed content from pages that users shouldn't be able to access and renamed to correct syntax some files `index.md` that were not named correctly. Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Added an overview page to resource schema Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> * Removed unnecessary pages from PR. Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> --------- Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> Signed-off-by: Aaron Crawfis Co-authored-by: Aaron Crawfis * Add extender docs (#933) * Add overview Signed-off-by: Aaron Crawfis * Add how-to guide Signed-off-by: Aaron Crawfis * Apply suggestions from code review Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: Aaron Crawfis * Add additional info on extenders Signed-off-by: Aaron Crawfis * Spelling Signed-off-by: Aaron Crawfis * Fix quote Signed-off-by: Aaron Crawfis --------- Signed-off-by: Aaron Crawfis Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> * removing duplicate --------- Signed-off-by: Aaron Crawfis Signed-off-by: Aaron Crawfis Signed-off-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> Signed-off-by: Will <28876888+willtsai@users.noreply.github.com> Signed-off-by: lbzs <627062293@qq.com> Signed-off-by: Reshma Abdul Rahim <61033581+Reshrahim@users.noreply.github.com> Signed-off-by: Reshma Abdul Rahim Signed-off-by: Emanuel Palm Co-authored-by: Aaron Crawfis Co-authored-by: jasonviviano <83607984+jasonviviano@users.noreply.github.com> Co-authored-by: Will <28876888+willtsai@users.noreply.github.com> Co-authored-by: lbzs <42933987+lbzss@users.noreply.github.com> Co-authored-by: Emanuel Palm Co-authored-by: Ryan Nowak --- .github/config/en-custom.txt | 14 +++- .github/workflows/issues.yml | 30 ------- docs/README.md | 8 +- docs/assets/scss/_nav.scss | 31 ++++---- docs/config.toml | 1 - .../contributing/contributing-docs/index.md | 44 +++++++---- docs/content/community/maintainers/_index.md | 2 +- docs/content/community/media-coverage.md | 34 ++++++++ docs/content/community/overview.md | 6 +- docs/content/concepts/api-concept/index.md | 14 ++-- .../concepts/architecture-concept/index.md | 14 ++-- .../concepts/collaboration-concept/index.md | 5 +- docs/content/concepts/faq/index.md | 36 +++++---- .../concepts/multi-cloud-concept/index.md | 8 +- docs/content/concepts/overview/index.md | 2 +- .../overview/snippets/appmodel-concept.bicep | 2 +- .../concepts/why-radius-concept/index.md | 8 +- docs/content/getting-started/index.md | 30 +++---- .../author-apps/application/overview/index.md | 2 +- .../aws/howto-aws-resources/index.md | 23 +++--- .../guides/author-apps/aws/overview/index.md | 6 +- .../aws/overview/snippets/aws.bicep | 2 +- .../azure/howto-azure-resources/index.md | 10 +-- .../snippets/container-wi.bicep | 4 +- .../howto-connect-dependencies/index.md | 3 +- .../containers/howto-keyvault-volume/index.md | 12 +-- .../snippets/keyvault-wi.bicep | 6 +- .../containers/howto-volumes/index.md | 4 +- .../author-apps/containers/overview/index.md | 10 +-- .../guides/author-apps/custom/_index.md | 7 ++ .../custom/howto-extenders/index.md | 78 +++++++++++++++++++ .../snippets/app-container.bicep | 46 +++++++++++ .../custom/howto-extenders/snippets/app.bicep | 18 +++++ .../author-apps/custom/overview/index.md | 17 ++++ .../guides/author-apps/dapr/overview/index.md | 2 +- .../kubernetes/how-to-patch-pod/index.md | 7 +- .../author-apps/networking/howto-tls/index.md | 7 +- .../secrets/howto-new-secretstore/index.md | 10 +-- .../author-apps/secrets/overview/index.md | 2 +- .../environments/howto-environment/index.md | 63 ++++++++------- .../environments/overview/index.md | 4 + .../guides/deploy-apps/howto-delete/index.md | 6 +- .../howto-deploy/howto-deploy-cicd/index.md | 3 +- .../howto-deploy-rad-cli/index.md | 5 +- .../howto-deploy/howto-run-app/index.md | 5 +- .../howto-troubleshootapps/index.md | 6 +- .../control-plane/howto-postman/index.md | 9 +-- .../control-plane/logs/fluentd/index.md | 40 +++++----- .../control-plane/metrics/grafana/index.md | 12 +-- .../control-plane/metrics/prometheus/index.md | 4 +- .../control-plane/traces/jaeger/index.md | 14 ++-- .../control-plane/traces/zipkin/index.md | 8 +- .../groups/howto-resourcegroups/index.md | 2 +- .../kubernetes/kubernetes-install/index.md | 5 ++ .../kubernetes/kubernetes-metadata/index.md | 4 +- .../kubernetes/kubernetes-upgrade/index.md | 4 +- .../providers/howto-aws-provider/index.md | 30 ++++--- .../providers/howto-azure-provider/index.md | 34 ++++---- .../workspaces/howto-workspaces/index.md | 52 ++++++++----- .../operations/workspaces/overview/index.md | 7 +- .../snippets/redis-kubernetes-main.tf | 2 +- .../snippets/redis-kubernetes.bicep | 2 +- .../guides/recipes/howto-dev-recipes/index.md | 8 +- docs/content/guides/recipes/overview/index.md | 10 +-- .../tooling/rad-cli/howto-rad-cli/index.md | 2 +- .../guides/tooling/rad-cli/overview/index.md | 7 +- docs/content/reference/api/_index.md | 4 +- .../reference/api/applications.dapr/_index.md | 4 +- .../api/applications.datastores/_index.md | 1 - .../api/applications.messaging/_index.md | 2 - .../resource-policies/{_index.md => index.md} | 3 +- docs/content/reference/cli/_index.md | 4 +- docs/content/reference/limitations.md | 4 +- .../reference/resource-schema/_index.md | 56 ------------- .../reference/resource-schema/aws/index.md | 2 +- .../reference/resource-schema/azure/index.md | 8 ++ .../reference/resource-schema/cache/_index.md | 2 +- .../resource-schema/core-schema/_index.md | 6 +- .../{_index.md => index.md} | 0 .../container-schema/{_index.md => index.md} | 0 .../core-schema/environment-schema/index.md | 1 + .../extender/{_index.md => index.md} | 0 .../extender/snippets/extender-recipe.bicep | 3 - .../gateway/snippets/gateway.bicep | 2 +- .../secretstore/{_index.md => index.md} | 0 .../core-schema/volumes/_index.md | 8 +- .../snippets/volume-keyvault.bicep | 4 +- .../dapr-pubsub/{_index.md => index.md} | 0 .../dapr-secretstore/{_index.md => index.md} | 0 .../dapr-statestore/{_index.md => index.md} | 0 .../snippets/dapr-statestore-recipe.bicep | 3 +- .../resource-schema/databases/_index.md | 2 +- .../resource-schema/messaging/_index.md | 2 +- .../resource-schema/overview/index.md | 62 +++++++++++++++ docs/content/tutorials/eshop/_index.md | 4 +- docs/content/tutorials/helm/index.md | 34 ++++---- docs/content/tutorials/new-app/index.md | 57 +++++++------- .../tutorials/tutorial-add-radius/index.md | 44 +++++------ docs/content/tutorials/tutorial-dapr/index.md | 8 +- .../tutorials/tutorial-recipe/index.md | 43 +++++----- docs/layouts/partials/page-meta-links.html | 2 +- docs/layouts/partials/section-index.html | 4 +- docs/layouts/shortcodes/categorizeby.html | 7 +- docs/layouts/shortcodes/redoc.html | 2 +- .../install-radius/initialize-radius.md | 2 +- .../vscode-bicep/install-vscode-bicep.md | 12 +-- 106 files changed, 769 insertions(+), 546 deletions(-) create mode 100644 docs/content/community/media-coverage.md create mode 100644 docs/content/guides/author-apps/custom/_index.md create mode 100644 docs/content/guides/author-apps/custom/howto-extenders/index.md create mode 100644 docs/content/guides/author-apps/custom/howto-extenders/snippets/app-container.bicep create mode 100644 docs/content/guides/author-apps/custom/howto-extenders/snippets/app.bicep create mode 100644 docs/content/guides/author-apps/custom/overview/index.md rename docs/content/reference/api/resource-policies/{_index.md => index.md} (96%) create mode 100644 docs/content/reference/resource-schema/azure/index.md rename docs/content/reference/resource-schema/core-schema/application-schema/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/core-schema/container-schema/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/core-schema/extender/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/core-schema/secretstore/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/dapr-schema/dapr-pubsub/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/dapr-schema/dapr-secretstore/{_index.md => index.md} (100%) rename docs/content/reference/resource-schema/dapr-schema/dapr-statestore/{_index.md => index.md} (100%) create mode 100644 docs/content/reference/resource-schema/overview/index.md diff --git a/.github/config/en-custom.txt b/.github/config/en-custom.txt index e79d88fc8..f3e50fbba 100644 --- a/.github/config/en-custom.txt +++ b/.github/config/en-custom.txt @@ -888,6 +888,8 @@ SiteToSiteVpnAttachment SlackChannelConfiguration SlackWorkspaceConfiguration SpotFleet +manualLink +manualLinkTarget StackSet StateMachine StaticIp @@ -960,7 +962,6 @@ tlsdemo ConfigMap PodSpec composable -CRD nd OSI scaffolded @@ -1210,4 +1211,13 @@ KubernetesMetadataExtensionLabels outputResources SecretStore plainHTTP -azd \ No newline at end of file +azd +Russinovich +InfoWorld +reimagines +TechCrunch +ZDNET +Newstrail +postgresql +natively +NuGet diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml index 7699e96a3..fed222313 100644 --- a/.github/workflows/issues.yml +++ b/.github/workflows/issues.yml @@ -9,36 +9,6 @@ concurrency: cancel-in-progress: false jobs: - customer: - name: Add a label if Issue created by customer - if: github.event.action == 'opened' - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GH_RAD_CI_BOT_PAT }} - steps: - - name: Add label if author in preview team - env: - ISSUE: ${{ github.event.issue.html_url }} - AUTHOR: ${{ github.actor }} - run: | - MEMBERS=$(gh api orgs/radius-project/teams/Radius-Preview/members | jq -r '.[] | .login') - ADMINS=$(gh api orgs/radius-project/teams/Radius-Admin/members | jq -r '.[] | .login') - for USER in $MEMBERS; do - if [[ "$USER" == "$AUTHOR" ]]; then - ISADMIN=false - for ADMIN in $ADMINS; do - if [[ "$USER" == "$ADMIN" ]]; then - echo "$USER is an admin, skipping" - ISADMIN=true - fi - done - if [[ "$ISADMIN" == "false" ]]; then - echo "Adding label for issue $ISSUE" - gh issue edit $ISSUE --add-label "customer-issue" - fi - fi - done - ado: name: Sync issue to Azure DevOps runs-on: ubuntu-latest diff --git a/docs/README.md b/docs/README.md index 8c464447d..3f78356f1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,10 +7,10 @@ This directory contains the files to generate the https://docs.radapp.io site. P The easiest way to get up and runnning with a docs environment is a GitHub codespace. 1. Open codespace -2. Ensure postCreate script has completed (takes ~2 minutes) -3. Run `cd docs` to change into the docs directory -4. Run `npm run start` to run a docs server -5. Click the `localhost:1313` link in your terminal to open the Codespace tunnel to the page +1. Ensure postCreate script has completed (takes ~2 minutes) +1. Run `cd docs` to change into the docs directory +1. Run `npm run start` to run a docs server +1. Click the `localhost:1313` link in your terminal to open the Codespace tunnel to the page ## Local machine diff --git a/docs/assets/scss/_nav.scss b/docs/assets/scss/_nav.scss index 9b5137509..7027a480c 100644 --- a/docs/assets/scss/_nav.scss +++ b/docs/assets/scss/_nav.scss @@ -122,12 +122,12 @@ text-rendering: auto; -webkit-font-smoothing: antialiased; font-family: "Font Awesome 5 Free"; - font-weight: 900; + font-weight: 900; content: "\f0d9"; padding-left: 0.5em; padding-right: 0.5em; } - } + } } // Foldable sidebar menu @@ -136,18 +136,18 @@ nav.foldable-nav { &#td-section-nav { position: relative; } - + &#td-section-nav label { margin-bottom: 0; width: 100%; } - + .td-sidebar-nav__section, .with-child ul { list-style: none; padding: 0; margin: 0; } - + .ul-1 > li { padding-left: 1.5em; } @@ -165,8 +165,8 @@ nav.foldable-nav { input[type=checkbox] { display: none; } - .with-child, .without-child { - position: relative; + .with-child, .without-child { + position: relative; padding-left: 1.3em; } @@ -189,30 +189,29 @@ nav.foldable-nav { } } - .ul-1 .with-child > input:checked ~ label:before { + .ul-1 .with-child > input:checked ~ label:before { color: $primary; transform: rotate(90deg); - transition: transform 0.5s; + transition: transform 0.5s; } .with-child ul { margin-top: 0.1em; } - -} +} @media (hover: hover) and (pointer: fine) { - + nav.foldable-nav { - .ul-1 .with-child > label:hover:before { + .ul-1 .with-child > label:hover:before { color: $primary; transform: rotate(30deg); - transition: transform 0.5s; + transition: transform 0.5s; } - .ul-1 .with-child > input:checked ~ label:hover:before { + .ul-1 .with-child > input:checked ~ label:hover:before { color: $primary; transform: rotate(60deg) !important; - transition: transform 0.5s; + transition: transform 0.5s; } } } diff --git a/docs/config.toml b/docs/config.toml index c918b1bde..3d641afa6 100644 --- a/docs/config.toml +++ b/docs/config.toml @@ -67,7 +67,6 @@ tag = "tags" [params] copyright = "Radius" - version = "edge" tag_version = "latest" chart_version = "0.26.0" diff --git a/docs/content/community/contributing/contributing-docs/index.md b/docs/content/community/contributing/contributing-docs/index.md index cab4ec1f4..c0bd16afb 100644 --- a/docs/content/community/contributing/contributing-docs/index.md +++ b/docs/content/community/contributing/contributing-docs/index.md @@ -26,10 +26,10 @@ It's easy to get up and running with a GitHub Codespace. This will give you a fu > Note the `postCreateCommand` may take up to 3 minutes to complete after the codespace is created to complete. 1. Start Codespace -2. Wait for `postCreateCommand` to complete -3. Run `cd docs` to enter the hugo site directory -4. Run `hugo server` to start the local server -5. Click on the link in the terminal to open the docs in your browser +1. Wait for `postCreateCommand` to complete +1. Run `cd docs` to enter the hugo site directory +1. Run `hugo server` to start the local server +1. Click on the link in the terminal to open the docs in your browser ### Local machine @@ -42,14 +42,14 @@ It's easy to get up and running with a GitHub Codespace. This will give you a fu ### Environment setup 1. Ensure pre-requisites are installed -2. Clone this repository and the radius repository +1. Clone this repository and the radius repository ```sh git clone https://github.com/radius-project/radius.git git clone https://github.com/radius-project/docs.git ``` -3. Generate CLI docs: +1. Generate CLI docs: ```sh pushd radius @@ -57,20 +57,20 @@ It's easy to get up and running with a GitHub Codespace. This will give you a fu popd ``` -4. Update submodules: +1. Update submodules: ```sh cd docs git submodule update --init --recursive ``` -5. Install npm packages: +1. Install npm packages: ```sh npm install ``` -6. Initialize the docsy theme: +1. Initialize the docsy theme: ```sh cd themes/docsy @@ -81,13 +81,13 @@ It's easy to get up and running with a GitHub Codespace. This will give you a fu ### Run local server 1. Make sure you're still in the `docs` directory -2. Run +1. Run ```sh hugo server ``` -3. Navigate to `http://localhost:1313/` +1. Navigate to `http://localhost:1313/` ## Developer Certificate of Origin @@ -114,9 +114,9 @@ Visual Studio Code has a setting, `git.alwaysSignOff` to automatically add a Sig There are 5 types of docs in Radius: 1. **Concept** - A concept doc is a high-level overview of the project or an area of the project. -2. **Overview** - A overview page documents a specific feature or capability of the project, with information on what the feature is and additional context and links on how to use it. -3. **How-To** - A how-to guide is a step-by-step guide to help the reader achieve a specific task. It assumes the reader has a basic understanding of the project and its concepts. For more information on how-to guides, see [Diátaxis](https://diataxis.fr/how-to-guides/). -4. **Reference** - A reference doc is a detailed description of a specific feature or capability of the project. It assumes the reader has a basic understanding of the project and its concepts. For more information on reference docs, see [Diátaxis](https://diataxis.fr/reference/). +1. **Overview** - A overview page documents a specific feature or capability of the project, with information on what the feature is and additional context and links on how to use it. +1. **How-To** - A how-to guide is a step-by-step guide to help the reader achieve a specific task. It assumes the reader has a basic understanding of the project and its concepts. For more information on how-to guides, see [Diátaxis](https://diataxis.fr/how-to-guides/). +1. **Reference** - A reference doc is a detailed description of a specific feature or capability of the project. It assumes the reader has a basic understanding of the project and its concepts. For more information on reference docs, see [Diátaxis](https://diataxis.fr/reference/). Overall: @@ -146,6 +146,7 @@ Visit [Diátaxis](https://diataxis.fr/explanation/) for more information on expl ### How-To guides Visit [Diátaxis](https://diataxis.fr/how-to-guides/) for more information on how-to documentation that helps the user accomplish a specific task. + - Do not assume the reader is using a specific environment unless the article itself is specific to an environment. This includes OS (Windows/Linux/MacOS), deployment target (Kubernetes, IoT, etc.), or programming language. If instructions vary between operating systems, provide guidance for all. - Include code/sample/config snippets that can be easily copied and pasted. - Provide the reader with related links if needed (this can be other concepts, overviews, how-to guides, or references) @@ -176,6 +177,18 @@ These conventions should be followed throughout all Radius documentation to ensu The docs pipeline uses [aspell](http://aspell.net/) to check for spelling mistakes. If you need to add a new custom word to the allow-list, update `.github/config/en-custom.txt`. +### Numbering + +All numbered lists use `1.` as the number, regardless of the order. The list numbers are then incremented automatically during the build process of the docs. + +#### Example + +```md +1. This is the second step, and will be displayed with a 2 in the docs. +1. This is the third step, and will be displayed with a 3. +1. This is the first step of a process. +``` + ## Tips and tricks Any contribution must ensure not to break the website build. The way Hugo builds the website requires following the below guidance. @@ -344,7 +357,6 @@ resource app 'radius.dev/Application@v1alpha1' = { //BINDINGS connections: { backend: { - source: other.id } } @@ -591,7 +603,7 @@ By default, buttons are padded with new lines below the button. To remove these {{< button text="Previous" link="https://example.com" newline="false" >}} {{< button text="Next" link="https://example.com" >}} -#### Categorize content +#### Categorize content You can use the `categorizeby` shortcode to pull and organize content by either categories and tags. This is useful when you want to categorize content by tags and the type of the document diff --git a/docs/content/community/maintainers/_index.md b/docs/content/community/maintainers/_index.md index e7b6220ad..00fec77bf 100644 --- a/docs/content/community/maintainers/_index.md +++ b/docs/content/community/maintainers/_index.md @@ -3,5 +3,5 @@ type: docs title: "Maintainer guides for Radius" linkTitle: "Maintainers" description: "Guides and requirements for Radius maintainers" -weight: 999 +weight: 300 --- diff --git a/docs/content/community/media-coverage.md b/docs/content/community/media-coverage.md new file mode 100644 index 000000000..a36fde64c --- /dev/null +++ b/docs/content/community/media-coverage.md @@ -0,0 +1,34 @@ +--- +type: docs +title: "Radius press coverage and media links" +linkTitle: "Press/media coverage" +description: "Learn about Radius through press articles, blog posts, presentation and other coverage of Radius" +weight: 400 +--- + +## Blog posts + +| Blog Title | Source | Date | +|------------|--------|------| +| [The Microsoft Azure Incubations Team launches Radius, a new open application platform for the cloud](https://azure.microsoft.com/en-us/blog/the-microsoft-azure-incubations-team-launches-radius-a-new-open-application-platform-for-the-cloud/) | Microsoft Azure Blog | Oct 18, 2023 | +| [Enabling developer collaboration with Radius](https://cloudblogs.microsoft.com/opensource/2023/10/18/enabling-developer-collaboration-with-radius/) | Microsoft Open Source Blog | Oct 18, 2023 | + +Ongoing blog posts can be found at [Radius Blog](https://blog.radapp.io) + +## Videos + +| Video | Event | Date | +|-------|-------|------| +| [Brendan Burns and Mark Russinovich at Ignite about Radius](https://www.youtube.com/watch?v=gaG77PiYv5w&ab_channel=MicrosoftIgnite)| Microsoft Ignite | Nov 17, 2023 | +| [Introducing Radius - Open at Microsoft ](https://www.youtube.com/watch?v=mT_NWFnYn0A)| Open at Microsoft | Nov 7, 2023 | +| [Mark Russinovich at the Linux Foundation Member Summit](https://aka.ms/radius-lfms)|Linux Foundation Member Summit | Oct 24, 2023 | + +## Press articles + +| Article Title | Media Source | Date | +|---------------|--------------|------| +| [Microsoft Azure’s Cloud-Native Advances: Innovations and Future Outlook](https://www.newstrail.com/microsoft-azures/) | Newstrail | Nov 23, 2023 | +| [Microsoft Azure introduces Radius, an open-source development platform for multi-cloud computing](https://www.zdnet.com/article/microsoft-azure-introduces-radius-an-open-source-development-platform-for-multi-cloud-computing/)| ZDNET | Oct 27, 2023 | +| [Microsoft’s Radius and the future of cloud-native development](https://www.infoworld.com/article/3709448/microsofts-radius-and-the-future-of-cloud-native-development.html)| InfoWorld | Oct 26, 2023 | +| [Microsoft reimagines Modern Application Deployment With Radius Platform](https://www.forbes.com/sites/janakirammsv/2023/10/23/microsoft-reimagines-modern-application-deployment-with-radius-platform/?sh=6a78a37c76d7)| Forbes | Oct 23, 2023 | +| [ Microsoft launches Radius, an open-source application platform for the cloud-native era](https://techcrunch.com/2023/10/18/microsoft-launches-radius-an-open-source-application-platform-for-the-cloud/)| TechCrunch | Oct 18, 2023 | diff --git a/docs/content/community/overview.md b/docs/content/community/overview.md index 85b143b7d..160d9132c 100644 --- a/docs/content/community/overview.md +++ b/docs/content/community/overview.md @@ -3,7 +3,7 @@ type: docs title: "Radius Community" linkTitle: "Overview" description: "Information about the Radius community" -weight: 80 +weight: 100 --- Welcome to the Radius community! @@ -25,3 +25,7 @@ If you would like to file Issues, access the source code, or use Codespaces plea ## How can I get involved? One of the easiest ways to contribute is to participate in discussions at community engagements or via the Discord server referenced above. We are always seeking feedback, especially for suggestions around improving the product and docs. + +## Press and media coverage + +Visit the [press and media coverage docs]({{< ref media-coverage >}}) for a list of press articles, blog posts, presentations, and other coverage of Radius. diff --git a/docs/content/concepts/api-concept/index.md b/docs/content/concepts/api-concept/index.md index 10930fb4e..b4e06ec14 100644 --- a/docs/content/concepts/api-concept/index.md +++ b/docs/content/concepts/api-concept/index.md @@ -27,10 +27,10 @@ In the example provided, the virtual machine is the **resource** and the API pro Resource providers sometimes provide operations in addition to the CRUDL operations that are specific to the type of resource. For a virtual machine, a resource provider might provide additional operations like: - - Rebooting a virtual machine - - Restoring a virtual machine from backup +- Rebooting a virtual machine +- Restoring a virtual machine from backup -As a result the set of operations is sometimes written as **CRUDL+**, meaning that a resource provider must implement the **CRUDL** operations at a minimum and sometimes more. +As a result the set of operations is sometimes written as **CRUDL+**, meaning that a resource provider must implement the **CRUDL** operations at a minimum and sometimes more. Resources have a type (in the programming sense) and a means of being identified (name or id). For example an AWS virtual machine's type would be `AWS::EC2::Instance` and might have a generated name like `i-0123456789abcdef`. The name must be provided to operations like Update so that the resource provider can identify which resource to update. The name and type can also be combined with additional context to form a unique identifier. For example on AWS the virtual machine name would be combined with the user's account id and the selected region to form a unique identifier called an [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). These identifiers are useful because they provide a universal way to identify which resource is being named. @@ -38,11 +38,11 @@ A resource could be anything that's useful to manage through an API. For example ## Principles for the Radius API -Radius provides a general resource manager that can manage cloud or on-premises resources as well as opinionated support cloud-native application concerns like containers and databases. Such an API needs to be powerful, flexible, and extensible enough to communicate with a variety of existing systems that were created by different organizations. +Radius provides a general resource manager that can manage cloud or on-premises resources as well as opinionated support cloud-native application concerns like containers and databases. Such an API needs to be powerful, flexible, and extensible enough to communicate with a variety of existing systems that were created by different organizations. The design of the Radius API incorporates the following principles: -- Universal addressing: every resource has a unique identifier called a resource id. +- Universal addressing: every resource has a unique identifier called a resource id. - CRUDL+ lifecycle: resources their functionality through a common set of HTTP contracts in a consistent way. - Federation based on metadata: rather that duplicate the functionality of existing resource managers, Radius delegates functionality to external APIs and is powered by the metadata of those APIs. @@ -62,9 +62,9 @@ The common structure of a resource id is the following: {rootScope}/{resourceNamespace}/{resourceType}/{resourceName} ``` -### Root scope +### Root scope -A hierarchical set of key-value pairs that identify the origin of the resource. Root scopes answer questions like: +A hierarchical set of key-value pairs that identify the origin of the resource. Root scopes answer questions like: - *"What cloud is this resource from?"* - *"What cloud account contains this resource?"* diff --git a/docs/content/concepts/architecture-concept/index.md b/docs/content/concepts/architecture-concept/index.md index 372764235..f5f51e1ad 100644 --- a/docs/content/concepts/architecture-concept/index.md +++ b/docs/content/concepts/architecture-concept/index.md @@ -82,7 +82,7 @@ All of Radius' core concepts are expressed using resources: All of these resources can be manipulated using the CRUDL+ operations that the resource providers provide. Since the functionality is implemented as part of the API any number of tools can have access to this functionality. -The `Applications.*` resource providers are fully-open source and were created as part of the Radius project. The `Applications.Core` and `Applications.*` resource providers are written in Go. +The `Applications.*` resource providers are fully open-source and were created as part of the Radius project. The `Applications.Core` and `Applications.*` resource providers are written in Go. #### Bicep Deployments Resource Provider @@ -130,9 +130,9 @@ This section describes example tasks that can be performed with Radius and how t When listing applications using the `rad` CLI: 1. The client sends an HTTP request to the Radius API requesting the list of applications. -2. UCP receives the request for the `Applications.Core/applications` List operation and looks up the internal address for the `Applications.Core` resource provider. -3. UCP proxies the HTTP request to the `Applications.Core` resource provider. -4. The `Applications.Core` resource provider handles the request and responds with the list of applications. +1. UCP receives the request for the `Applications.Core/applications` List operation and looks up the internal address for the `Applications.Core` resource provider. +1. UCP proxies the HTTP request to the `Applications.Core` resource provider. +1. The `Applications.Core` resource provider handles the request and responds with the list of applications. {{< image src="flow-list-apps.png" alt="Diagram of the API flow described above" width="1000px" >}} @@ -142,9 +142,9 @@ When listing applications using the `rad` CLI: When using Bicep to author and deploy Radius Applications: 1. The client compiles the Bicep file to an ARM-JSON template and submits a request for processing as a `Bicep.Deployments/deployments` resource. -2. UCP receives the request for the `Bicep.Deployments/deployments` Create operation and looks up the internal address for the `Bicep.Deployments` resource provider. -3. UCP proxies the HTTP request to the `Bicep.Deployments` resource provider. -4. The `Bicep.Deployments` resource provider processes the ARM-JSON template. For each resource in the template: +1. UCP receives the request for the `Bicep.Deployments/deployments` Create operation and looks up the internal address for the `Bicep.Deployments` resource provider. +1. UCP proxies the HTTP request to the `Bicep.Deployments` resource provider. +1. The `Bicep.Deployments` resource provider processes the ARM-JSON template. For each resource in the template: a. The `Bicep.Deployments` resource provider makes a request to UCP to Create/Update the resource. b. UCP routes the request to the appropriate resource provider to be handled. diff --git a/docs/content/concepts/collaboration-concept/index.md b/docs/content/concepts/collaboration-concept/index.md index 6516130ea..862b94aa7 100644 --- a/docs/content/concepts/collaboration-concept/index.md +++ b/docs/content/concepts/collaboration-concept/index.md @@ -17,10 +17,9 @@ An emerging group of enterprises have a created a *platform engineering* effort A few common challenges emerged from our conversations. The platform engineering philosophy also aims to address these concerns: -- Developers benefit from paved-paths for best-practices: enterprises gain operational efficiency by standardizing how applications are deployed, report diagnostics, and provision cloud resources. When this is done well, developers find and use the recommended technologies with ease. When this is done poorly, developers struggle with many templates, dependencies, and other assets to manage over time. +- Developers benefit from paved-paths for best-practices: enterprises gain operational efficiency by standardizing how applications are deployed, report diagnostics, and provision cloud resources. When this is done well, developers find and use the recommended technologies with ease. When this is done poorly, developers struggle with many templates, dependencies, and other assets to manage over time. - Developer velocity is improved by self-service for the cloud: Platform engineering efforts optimize the developer workflow with self-service tools that provide guardrails to drive adherence to best-practices. These guardrails help manage costs and increase an organization's security posture by providing correctly configured tools and infrastructure. In addition, self-service minimizes inefficient manual workflows that add friction to the development process. - ## Introducing the Environment Environments in Radius provide a landing-zone for Applications that is configured with the organization's chosen best-practices, settings, and Recipes. Environments encapsulate and store configuration for the compute platform, networking configuration, diagnostics systems, and other operational concerns. Environments enable a *separation of concerns* between developers and the IT organizations supporting those developers. Environments allow the configuration to vary across different types of deployments (like a staging deployment), deployment regions or even different clouds. @@ -35,7 +34,7 @@ When an Application is deployed, Radius will *bind* the Application to the confi Recipes use infrastructure-as-code templates stored in the Environment to create cloud resources on-demand when an Application is deployed. Since the Recipes are stored in the Environment, the set of available cloud resources and the configuration used for provisioning can be tightly controlled. Recipes use the credentials stored in the Environment when provisioning cloud resources to limit those who need access to cloud accounts. The Recipes configured in an Environment are versioned, and can be updated in a granular way to lower the risk of unforeseen changes. When a Recipe is executed, it automatically catalogs the infrastructure used as part of the Radius Application Graph where it is visible to the whole organization. Because Recipes are part of the Environment, they can also vary across environments. For example, a cache might need to be bigger in one cloud region, like Europe, than it was in a different cloud region, like North America. For a multi-cloud Application, an enterprise could create an Environment for an AWS region and a different Environment for an Azure region. The recipe to create a Redis cache in the AWS Environment might deploy Amazon Elasticache for Redis and the recipe in the Azure Environment might deploy Azure Cache for Redis. The Application would just use the Redis cache recipe, unaware of what underlying infrastructure was deployed to provide the cache. Lastly, the infrastructure created by Recipes is stored by Radius, so it can be automatically cleaned up to help manage costs. -Within an IT or platform engineering team, many organizations have defined specialized roles like SecOps, FinOps, and cloud centers-of-excellence to address their complex needs for using the cloud. Recipes are designed for these engineers to standardize and govern the organizations use of the cloud while still supporting self-service deployment. Since the Recipes are stored in the Environment they do not need to be shared directly with or understood and managed by application developers. By providing Recipes, platform engineers can streamline and simplify the interface to the cloud used by application developers. Since Recipes execute as part of Application deployment, the provisioning of cloud resources is part of an existing process rather than a manual step. +Within an IT or platform engineering team, many organizations have defined specialized roles like SecOps, FinOps, and cloud centers-of-excellence to address their complex needs for using the cloud. Recipes are designed for these engineers to standardize and govern the organizations use of the cloud while still supporting self-service deployment. Since the Recipes are stored in the Environment they do not need to be shared directly with or understood and managed by application developers. By providing Recipes, platform engineers can streamline and simplify the interface to the cloud used by application developers. Since Recipes execute as part of Application deployment, the provisioning of cloud resources is part of an existing process rather than a manual step. Applications use Recipes to create cloud infrastructure during deployment without describing how that infrastructure will be provisioned. For example a developer, might include a Redis Cache as part of an Application. When the Application is deployed, the Redis Cache will be created according to the Recipe, ensuring that it uses a supported configuration. Recipes make it easy for the Application to connect to the cloud resources by automatically configuring access-policies, networking, and connection settings for the Application code. Since that Application can rely on the recipe to provision the correct infrastructure and deliver the correct configuration, it is easy to deploy the same Application to different Environments without code changes. diff --git a/docs/content/concepts/faq/index.md b/docs/content/concepts/faq/index.md index dee4f9d5d..e388c7bd5 100644 --- a/docs/content/concepts/faq/index.md +++ b/docs/content/concepts/faq/index.md @@ -8,7 +8,7 @@ weight: 999 ## General -### Is Kubernetes required to use Radius? +### Is Kubernetes required to use Radius? Currently yes. Although Radius is architected to run on any platform, today Kubernetes is the only hosting platform for Radius for the Radius control-plane and for containerized workloads. In the future, we plan to support other hosting platforms for serverless platforms. @@ -16,11 +16,11 @@ Currently yes. Although Radius is architected to run on any platform, today Kube Yes. The easiest way to add Radius to an existing application is through [Radius annotations](#TODO). Simply add the annotations to your existing Helm chart or Kubernetes YAML and you can use the Radius app graph, connections, and Recipes. [Try the tutorial](#TODO) to learn more. -### Do I have to self-host Radius? Is there a managed service for Radius? +### Do I have to self-host Radius? Is there a managed service for Radius? Open-source Radius requires that you self-host and run your own Radius instance in your Kubernetes cluster. In the future, we hope for providers to include Radius as a part of their managed service offerings. -### What languages does Radius support? +### What languages does Radius support? For application code, Radius supports any programming language as long as it is containerized. @@ -45,7 +45,7 @@ Users can employ multiple environments for isolation and organization, for examp Recipes currently support the set of [Radius portable resources]({{< ref "/guides/author-apps/portable-resources/overview" >}}): Redis, Mongo, RabbitMQ, SQL, Dapr State Stores, Dapr Secret Stores, Dapr Pub/Sub, and the untyped extender resource. Additional support for other resources (_Azure, AWS, etc._) will come in a future release. -### What infrastructure can Recipes deploy? +### What infrastructure can Recipes deploy? Radius Recipes support any resources that can be modeled in Bicep, or the AWS, Azure, and Kubernetes Terraform providers. @@ -53,9 +53,9 @@ Radius Recipes support any resources that can be modeled in Bicep, or the AWS, A Terraform Recipes currently support the Azure, AWS, and Kubernetes providers, plus any provider that does not require any credentials or configuration to be passed in (_e.g. Oracle, GCP, etc. are not currently supported_). Support for provider configuration is a high priority we plan to address in an upcoming release. -### Do developers need write access to a cloud provider (_Azure subscription, AWS account, etc._) to use Recipes? +### Do developers need write access to a cloud provider (_Azure subscription, AWS account, etc._) to use Recipes? -No. Recipes are deployed on-behalf-of the Radius Environment so developers do not need any write access to an Azure subscription, resource group, or AWS account. This allows a least-privilege access model to cloud resources and for IT operators to only allow approved IaC templates to be deployed to their cloud environments. +No. Recipes are deployed on-behalf-of the Radius Environment so developers do not need any write access to an Azure subscription, resource group, or AWS account. This allows a least-privilege access model to cloud resources and for IT operators to only allow approved IaC templates to be deployed to their cloud environments. ## Cloud/platform support @@ -63,17 +63,17 @@ No. Recipes are deployed on-behalf-of the Radius Environment so developers do no Radius Applications can include AWS services that are also supported by the AWS cloud control API. See the [AWS resource library]({{< ref "/guides/author-apps/aws/overview#resource-library" >}}) for the complete list of supported AWS resources. Connections from a Radius container to an AWS resource are not yet supported. Properties such as hostnames, ports, endpoints, and connection strings need to be manually specified as environment variables. Additional support for Connections to AWS resources is on our backlog. -### What Azure services does Radius support? +### What Azure services does Radius support? Radius Applications can include any Azure service, with support for direct connections and managed identities. Compute services (Web Apps, Container Apps, App Service, Functions, Logic Apps, and others) can be deployed but cannot currently declare connections to other resources. -### Does Radius support Google Cloud Platform (GCP)? +### Does Radius support Google Cloud Platform (GCP)? Not yet, but it is on the backlog. -### Does Radius support Dapr? +### Does Radius support Dapr? -Yes. Radius has first-class support for [Dapr building blocks]({{< ref "/guides/author-apps/dapr" >}}) such as state stores, secret stores, and pub/sub brokers. Developers can add Dapr resources to their applications and operators can define Recipes that deploy and manage the underlying infrastructure. +Yes. Radius has first-class support for [Dapr building blocks]({{< ref "/guides/author-apps/dapr" >}}) such as state stores, secret stores, and pub/sub brokers. Developers can add Dapr resources to their applications and operators can define Recipes that deploy and manage the underlying infrastructure. ## Comparison to other tools @@ -84,9 +84,9 @@ Yes. Radius has first-class support for [Dapr building blocks]({{< ref "/guides/ Radius leverages Kubernetes in two ways: 1. As a hosting platform for the Radius control-plane -2. As a runtime for containerized workloads +1. As a runtime for containerized workloads -While Radius only supports Kubernetes today, it is architected to support other hosting platforms in the future, including serverless platforms. Radius is not a Kubernetes controller and the primary user experience is not through CRDs. Instead, Radius Applications are an abstraction layer on top of Kubernetes and other cloud platforms. +While Radius only supports Kubernetes today, it is architected to support other hosting platforms in the future, including serverless platforms. Radius is not a Kubernetes controller and the primary user experience is not through custom resources (CRDs). Instead, Radius Applications are an abstraction layer on top of Kubernetes and other cloud platforms. ### How does Radius compare to Helm? @@ -96,8 +96,6 @@ Radius was built to provide a platform for modeling and deploying an entire appl Teams looking to leverage existing Helm charts can use the [Radius annotations and Recipe CRD](#TODO) to add Radius capabilities to their existing application. With just a few annotations, you can add the power of the Radius app graph, connections, and Recipes to your existing Helm chart. -Teams building or migrating applications on Radius can use Bicep to model their application and deploy to Kubernetes today, as well as future platforms, including serverless platforms. - ### How does Radius compare to Bicep? [Bicep](https://github.com/Azure/bicep) is a Domain Specific Language (DSL) for deploying infrastructure declaratively. Radius leverages Bicep as one of its supported languages for defining applications and Recipes. @@ -106,6 +104,8 @@ Similar to how you can define Azure resources in Bicep, you can define Radius re Radius currently uses a temporary fork of Bicep to add support for the Radius resources, but work is underway to merge extensibility support into the main Bicep repo and eliminate the need for a fork. +Teams building or migrating applications on Radius can use Bicep to model their application and deploy to Kubernetes today, as well as future platforms, including serverless platforms. + ### How does Radius compare to Terraform? [Terraform](https://www.terraform.io/) is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform is a great tool for deploying infrastructure, but doesn't provide a way to model an entire application and the dependencies between services and infrastructure, or act as an abstraction layer for multiple cloud providers. @@ -126,7 +126,7 @@ Radius is an open-source project that allows you to model, deploy, and manage ap ### How does Radius compare to Crossplane? -[Crossplane](https://crossplane.io/) is an open source Kubernetes add-on that extends any cluster with the ability to provision and manage cloud infrastructure, services, and applications using kubectl, GitOps, or any tool that works with the Kubernetes API. As Radius is unopinionated about how infrastructure is deployed through Recipes, Crossplane could be used within a Recipe. Both Bicep and Terraform modules are able to include Kubernetes resources and Crossplane CRDs. +[Crossplane](https://crossplane.io/) is an open-source Kubernetes add-on that extends any cluster with the ability to provision and manage cloud infrastructure, services, and applications using kubectl, GitOps, or any tool that works with the Kubernetes API. As Radius is unopinionated about how infrastructure is deployed through Recipes, Crossplane could be used within a Recipe. Both Bicep and Terraform modules are able to include Kubernetes resources and Crossplane CRDs. Once deployed, Crossplane-managed infrastructure can be included in a Radius application and queried via the Radius application graph. @@ -180,6 +180,12 @@ While there isn't direct support for targeting Azure Arc for Radius containers t While Radius only supports Kubernetes today, it is architected to support other hosting platforms in the future, including serverless platforms such as Azure Container Apps. Serverless support is on our roadmap. +### How does Radius compare to .NET Aspire? + +[.NET Aspire](https://learn.microsoft.com/dotnet/aspire/get-started/aspire-overview) is an opinionated, cloud ready stack for building .NET applications. .NET Aspire is delivered through a collection of NuGet packages that provide a batteries-included experience for building cloud-native applications as well as tools and IDE integration. + +Where .NET Aspire is focused on the .NET experience from moving from local development with a debugger to the cloud, Radius is not opinionated about the application runtime and doesn't seek to solve running applications locally as processes. Radius also offers tools for developers and operators to collaborate on an application throughout its lifecycle, such as the application graph and Recipes. + ### How does Radius compare to Azure Developer CLI (azd)? The [Azure Developer CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/) is an open-source tool that provides developer-friendly commands to simplify the process of building, deploying, and managing Azure resources. While both azd and Radius are geared towards the development and deployment workflows, the most apparent difference is that azd can be only be used to manage Azure resources, whereas Radius supports multiple cloud providers. Radius also introduces a way to model (and not just deploy) entire applications and automate these through [Recipes]({{< ref "guides/recipes/overview">}}), which allows for complete [separation of concerns]({{< ref "collaboration-concept" >}}) between operators and developers. With azd, even though developers may leverage CLI templates to deploy infrastructure, they still need to understand the underlying infrastructure and how to connect to it. \ No newline at end of file diff --git a/docs/content/concepts/multi-cloud-concept/index.md b/docs/content/concepts/multi-cloud-concept/index.md index 038d3a5af..1cffcd45a 100644 --- a/docs/content/concepts/multi-cloud-concept/index.md +++ b/docs/content/concepts/multi-cloud-concept/index.md @@ -2,7 +2,7 @@ type: docs title: "Concept: Open-source and multi-cloud" linkTitle: Open-source and multi-cloud -description: For many enterprises, their cloud native computing strategy involves using multiple cloud providers. Open source projects, like Kubernetes, help ensure these enterprises achieve their strategy. As a result, Radius was designed to be open-source and multi-cloud from the start. +description: For many enterprises, their cloud native computing strategy involves using multiple cloud providers. Open-source projects, like Kubernetes, help ensure these enterprises achieve their strategy. As a result, Radius was designed to be open-source and multi-cloud from the start. weight: 100 categories: "Concept" --- @@ -29,7 +29,7 @@ Some enterprises explained that they were multi-cloud through acquisitions. Thei Finally, some enterprises explained that they were multi-cloud due to inertia. They had started with one cloud provider, but later, switched to using a different provider as their primary choice for new applications. Like the acquisition case above, there was no requirement to move existing applications to the new cloud provider. -Radius was designed with these enterprises in mind. Enterprises can "radify" their applications regardless of cloud provider, enabling these enterprises to use Radius regardless of whether or not the application is using a particular public cloud provider or a private cloud operated by the enterprise itself. Radius applications can use cloud vendor specific technologies, like Amazon's DynamoDB or Azure's Cosmos DB, or they can use open source technologies like Redis. +Radius was designed with these enterprises in mind. Enterprises can "radify" their applications regardless of cloud provider, enabling these enterprises to use Radius regardless of whether or not the application is using a particular public cloud provider or a private cloud operated by the enterprise itself. Radius applications can use cloud vendor specific technologies, like Amazon's DynamoDB or Azure's Cosmos DB, or they can use open-source technologies like Redis. ### Cloud-agnostic applications @@ -37,11 +37,11 @@ There were some enterprises that ran the same application in multiple clouds. Of Radius was designed to support this specific use case from the start. We wanted to make it possible for IT teams, platform engineering teams, or cloud center of excellence teams to make decisions about which cloud provider an application would use. We wanted them to be able to make that decision without having an impact on their developers and the application logic those developers were writing. -Radius supports cloud-agnostic applications in two ways. First, enterprises can use open source technologies in their applications. For example, developers that need a cache might use a Redis cache in their application. The platform engineering team would build Radius Recipes that, depending on the cloud provider, would use a different underlying Redis compatible service. This might mean using Azure Cache for Redis when deploying to Azure or Amazon ElastiCache for Redis on AWS. The developer's application logic and deployment assets like Helm charts should be the same, regardless of which cloud they're using. +Radius supports cloud-agnostic applications in two ways. First, enterprises can use open-source technologies in their applications. For example, developers that need a cache might use a Redis cache in their application. The platform engineering team would build Radius Recipes that, depending on the cloud provider, would use a different underlying Redis compatible service. This might mean using Azure Cache for Redis when deploying to Azure or Amazon ElastiCache for Redis on AWS. The developer's application logic and deployment assets like Helm charts should be the same, regardless of which cloud they're using. The second way Radius supports cloud-agnostic applications is with [Dapr, the Distributed Application Runtime](https://dapr.io). Dapr provides developers with APIs that abstract away the complexity of common challenges developers encounter regularly when building cloud native applications. These API building blocks abstract away services that provide state management, secrets management, or publish and subscribe systems. Developers can write to Dapr and platform engineering teams can use Radius to provide the underlying infrastructure for these Dapr based applications. For example, a Dapr application that's persisting state could use Azure Blob Storage or Amazon DynamoDB as the underlying state store depending on which cloud provider was used to host the application. -Radius was designed from the start to support enterprises in implementing their multi-cloud strategy. Enterprises can use cloud vendor technologies, like DynamoDB, or they can build on open source technologies like Redis and Dapr. +Radius was designed from the start to support enterprises in implementing their multi-cloud strategy. Enterprises can use cloud vendor technologies, like DynamoDB, or they can build on open-source technologies like Redis and Dapr. ## Open-source Many enterprises use open-source technologies as a way of *achieving* their multi-cloud strategy. Kubernetes adoption is a great example of this trend. Customers building on Kubernetes can leverage their Kubernetes experience, tools, and practices with any cloud provider and they're confident Kubernetes, with it's broad community, will continue to be a multi-cloud technology. diff --git a/docs/content/concepts/overview/index.md b/docs/content/concepts/overview/index.md index c4b5da2e3..50d5a1d9f 100644 --- a/docs/content/concepts/overview/index.md +++ b/docs/content/concepts/overview/index.md @@ -11,7 +11,7 @@ toc_hide: true App teams today struggle to model and deploy their applications. Complex architectures, cross-platform portability requirements, and org-level best-practices all make it difficult to not only model and deploy, but also maintain and troubleshoot large applications. -Apps today are modeled and deployed with Dockerfiles, Kubernetes CRDs, Helm charts, and infrastructure-as-code templates, with scripts to glue it all together. Plus, the range of infrastructure types (cloud, on-premises, serverless) can double or triple the work as teams figure out how to move apps between platforms. +Apps today are modeled and deployed with Dockerfiles, Kubernetes custom resources (CRDs), Helm charts, and infrastructure-as-code templates, with scripts to glue it all together. Plus, the range of infrastructure types (cloud, on-premises, serverless) can double or triple the work as teams figure out how to move apps between platforms. {{< image alt="Diagram showing all of the technologies needed to model an application today" src="cloud-apps-today.png" width="600px" >}} diff --git a/docs/content/concepts/overview/snippets/appmodel-concept.bicep b/docs/content/concepts/overview/snippets/appmodel-concept.bicep index 0b2ddceff..3d8af9cc8 100644 --- a/docs/content/concepts/overview/snippets/appmodel-concept.bicep +++ b/docs/content/concepts/overview/snippets/appmodel-concept.bicep @@ -31,7 +31,7 @@ resource frontend 'Applications.Core/containers@2023-10-01-preview' = { } } //CONTAINER - // Connect container to database + // Connect container to database connections: { itemstore: { source: databaseId diff --git a/docs/content/concepts/why-radius-concept/index.md b/docs/content/concepts/why-radius-concept/index.md index 68add0a2c..b02491ea9 100644 --- a/docs/content/concepts/why-radius-concept/index.md +++ b/docs/content/concepts/why-radius-concept/index.md @@ -29,7 +29,7 @@ Our philosophy is to be inclusive when considering what is *part of the applicat ## Developers and platform engineers need to collaborate -Enterprises are creating specialized roles and initiatives to improve their speed, efficiency, and security when adopting the cloud. Platform engineering is an emerging discipline that's combining a product mindset with learnings from DevOps and DevSecOps teams to create internal development platforms. When successful, platform engineers deliver a set of tools that provide sufficient automation, tracking, governance, and observability that guide development teams naturally fall “into the pit of success.” Often these endeavors can come up a little short, looking like a set of repository templates, cloud resource templates, and a software catalog for application developers to use. Unfortunately, the tools and assets that are frequently used don't encourage collaboration between developers and the platform engineers supporting those developers. Platform engineering is new as a discipline, and the patterns that will make enterprises successful long-term are still emerging. +Enterprises are creating specialized roles and initiatives to improve their speed, efficiency, and security when adopting the cloud. Platform engineering is an emerging discipline that's combining a product mindset with learnings from DevOps and DevSecOps teams to create internal development platforms. When successful, platform engineers deliver a set of tools that provide sufficient automation, tracking, governance, and observability that guide development teams to naturally fall into "the pit of success." Often these endeavors can come up a little short, looking like a set of repository templates, cloud resource templates, and a software catalog for application developers to use. Unfortunately, the tools and assets that are frequently used don't encourage collaboration between developers and the platform engineers supporting those developers. Platform engineering is new as a discipline, and the patterns that will make enterprises successful long-term are still emerging. Radius provides concepts like Environments and Recipes that support a separation of concerns. Platform engineers can create repository templates with CI/CD pipelines and starter code for deployment. IT operators can deploy and govern the Environments where those pipelines deploy applications. Cloud and security experts can provide the Recipes used to create and update cloud resources. Developers are only responsible for describing the requirements and architecture of the application, understanding which environments to use, and choosing dependencies from the supported set of Recipes. @@ -43,11 +43,11 @@ We hope that this holistic way of thinking about applications becomes the standa ## What we're not rethinking -Many practices and technologies in cloud-native development are a success and don't need to be re-thought. +Many practices and technologies in cloud-native development are a success and don't need to be re-thought. -- Radius makes is easy for application developers to adopt because it supports your existing containerized code, Dockerfiles, and Helm charts. +- Radius makes is easy for application developers to adopt because it supports your existing containerized code, Dockerfiles, and Helm charts. - We believe that [twelve-factor](https://12factor.net/) is still a great set of ideas and so any twelve-factor style application should be easy to use with Radius. -- We like infrastructure-as-code as for its repeatability and use it for both Recipes and application descriptions. +- We like infrastructure-as-code as for its repeatability and use it for both Recipes and application descriptions. - There are plenty of great CI/CD systems, application delivery pipelines, and Gitops systems out there and Radius can work with any of them. ## Open-source from the start diff --git a/docs/content/getting-started/index.md b/docs/content/getting-started/index.md index 007020c1c..c9b17ed5e 100644 --- a/docs/content/getting-started/index.md +++ b/docs/content/getting-started/index.md @@ -22,12 +22,6 @@ The Radius getting-started guide can be [run **for free** in a GitHub Codespace] [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/radius-project/samples) {{< /alert >}} -{{< alert title="🚀 Run in a free GitHub Codespace" color="primary" >}} -The Radius getting-started guide can be [run **for free** in a GitHub Codespace](https://github.blog/changelog/2022-11-09-codespaces-for-free-and-pro-accounts/). Visit the following link to get started in seconds: - -[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/radius-project/samples) -{{< /alert >}} - ## 1. Have your Kubernetes cluster handy Radius runs inside [Kubernetes]({{< ref "guides/operations/kubernetes" >}}). However you run Kubernetes, get a cluster ready. @@ -52,7 +46,7 @@ mkdir first-app cd first-app ``` -Initialize Radius. For this example, accept all the default options (press ENTER to confirm): +Initialize Radius. For this example, accept all the default options (press ENTER to confirm): ```bash rad init @@ -61,21 +55,21 @@ rad init Example output: ``` -Initializing Radius... +Initializing Radius... -✅ Install Radius {{< param version >}} - - Kubernetes cluster: k3d-k3s-default - - Kubernetes namespace: radius-system -✅ Create new environment default - - Kubernetes namespace: default - - Recipe pack: local-dev -✅ Scaffold application docs -✅ Update local configuration +✅ Install Radius {{< param version >}} + - Kubernetes cluster: k3d-k3s-default + - Kubernetes namespace: radius-system +✅ Create new environment default + - Kubernetes namespace: default + - Recipe pack: local-dev +✅ Scaffold application docs +✅ Update local configuration Initialization complete! Have a RAD time 😎 ``` -In addition to starting Radius services in your Kubernetes cluster, this initialization command creates a default application (`app.bicep`) as your starting point. It contains a single container definition (`demo`). +In addition to starting Radius services in your Kubernetes cluster, this initialization command creates a default application (`app.bicep`) as your starting point. It contains a single container definition (`demo`). {{< rad file="snippets/app.bicep" embed=true markdownConfig="{linenos=table,linenostart=1}" >}} @@ -181,7 +175,7 @@ Resources: ## Recap and next steps -It's easy to build on the default app and add more resources to the app. +It's easy to build on the default app and add more resources to the app. To delete your app, see [rad app delete]({{< ref rad_application_delete >}}). diff --git a/docs/content/guides/author-apps/application/overview/index.md b/docs/content/guides/author-apps/application/overview/index.md index 26d5edd71..339d9d0c7 100644 --- a/docs/content/guides/author-apps/application/overview/index.md +++ b/docs/content/guides/author-apps/application/overview/index.md @@ -38,7 +38,7 @@ Radius Applications are more than just client-side configuration and automation, {{< image src="app-graph.png" alt="Diagram of the application graph" width=500px >}} -## Resource schema +## Resource schema Refer to the [application schema docs]({{< ref application-schema >}}) for more information on how to define an application. 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 5aa3b5e4d..d002241dc 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 @@ -13,25 +13,25 @@ This how-to guide will show you: - How to model an AWS S3 resource in Bicep - How to use a sample application to interact with AWS S3 bucket - {{< image src="s3appdiagram.png" alt="Screenshot of the sample application to interact with s3 bucket " width=400 >}} +{{< image src="s3appdiagram.png" alt="Screenshot of the sample application to interact with s3 bucket " width=400 >}} ## Prerequisites - Make sure you have an [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) - - [Create an IAM AWS access key](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) and copy the AWS Access Key ID and the AWS Secret Access Key to a secure location for use later. If you have already created an Access Key pair, you can use that instead. + - [Create an IAM AWS access key](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) and copy the AWS Access Key ID and the AWS Secret Access Key to a secure location for use later. If you have already created an Access Key pair, you can use that instead. - [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) - - Configure your CLI with [`aws configure`](https://docs.aws.amazon.com/cli/latest/reference/configure/index.html), specifying your configuration values + - Configure your CLI with [`aws configure`](https://docs.aws.amazon.com/cli/latest/reference/configure/index.html), specifying your configuration values - [eksctl CLI](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html) -- [kubectl CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) +- [kubectl CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) - [rad CLI]({{< ref "installation#step-1-install-the-rad-cli" >}}) - [Radius Bicep VSCode extension]({{< ref "installation#step-2-install-the-radius-bicep-extension" >}}) ## Step 1: Create an EKS Cluster -Create an EKS cluster by using the `eksctl` CLI. +Create an EKS cluster by using the `eksctl` CLI. ```bash -eksctl create cluster --name --region= +eksctl create cluster --name --region= ``` ## Step 2: Create a Radius Environment with the AWS cloud provider @@ -79,9 +79,10 @@ This creates a container that will be deployed to your Kubernetes cluster. This ```bash rad deploy ./app.bicep -p aws_access_key_id= -p aws_secret_access_key= ``` + > Replace `` and `` with the values obtained from the previous step. - {{% alert title="Warning" color="warning" %}}It is always recommended to have separate IAM credentials for your container to communicate with S3 or any other data store. + {{% alert title="Warning" color="warning" %}}It is always recommended to have separate IAM credentials for your container to communicate with S3 or any other data store. Radius is currently working on supporting direct connections to AWS resources so that your container can automatically communicate with the data store securely without having to manage separate credentials for data plane operations{{% /alert %}} 1. Port-forward the container to your machine with [`rad resource expose`]({{< ref rad_resource_expose >}}): @@ -98,7 +99,7 @@ This creates a container that will be deployed to your Kubernetes cluster. This 1. When you're done with testing, you can use the rad CLI to [delete an environment]({{< ref rad_env_delete.md >}}) to delete all Radius resources running on the EKS Cluster. -2. Cleanup AWS Resources - AWS resources are not deleted when deleting a Radius Environment, so make sure to delete all resources created in this reference app to prevent additional charges. You can delete these resources in the AWS Console or via the AWS CLI. Instructions to delete an AWS S3 Bucket are available [here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html). +1. Cleanup AWS Resources - AWS resources are not deleted when deleting a Radius Environment, so make sure to delete all resources created in this reference app to prevent additional charges. You can delete these resources in the AWS Console or via the AWS CLI. Instructions to delete an AWS S3 Bucket are available [here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html). ## Troubleshooting @@ -106,11 +107,12 @@ If you hit errors while deploying the application, please follow the steps below 1. Check if the AWS credentials are valid. Login to the AWS console and check if the IAM access key and secret access key are valid and not expired. -2. Look at the control plane logs to see if there are any errors. You can use the following command to view the logs: +1. Look at the control plane logs to see if there are any errors. You can use the following command to view the logs: ```bash rad debug-logs ``` + Inspect the UCP logs to see if there are any errors If you have issues with the sample application, where the container doesn't connect with the S3 bucket, please follow the steps below to troubleshoot: @@ -120,10 +122,11 @@ If you have issues with the sample application, where the container doesn't conn ```bash rad resource logs containers frontend -a s3app ``` + Also make sure to [open an Issue](https://github.com/radius-project/radius/issues/new/choose) if you encounter a generic `Internal server error` message or an error message that is not self-serviceable, so we can address the root error not being forwarded to the user. ## Further Reading {{< categorizeby category="Overview" tag="AWS" >}} -{{< categorizeby category="How-To" tag="AWS" >}} \ No newline at end of file +{{< categorizeby category="How-To" tag="AWS" >}} diff --git a/docs/content/guides/author-apps/aws/overview/index.md b/docs/content/guides/author-apps/aws/overview/index.md index a00005157..71a3743ea 100644 --- a/docs/content/guides/author-apps/aws/overview/index.md +++ b/docs/content/guides/author-apps/aws/overview/index.md @@ -21,13 +21,13 @@ The AWS provider allows you to deploy and connect to AWS resources from a Radius {{< tabs Bicep >}} {{% codetab %}} -In the following example, a [Container]({{< ref "guides/author-apps/containers" >}}) is connecting to an S3 bucket. +In the following example, a [Container]({{< ref "guides/author-apps/containers" >}}) is connecting to an S3 bucket. {{< rad file="snippets/aws.bicep" embed=true >}} -{{% /codetab %}} +{{% /codetab %}} {{< /tabs >}} ## Resource library -{{< button text="AWS resource library" link="/reference/resource-schema/aws" newtab="true" >}} \ No newline at end of file +{{< button text="AWS resource library" link="/reference/resource-schema/aws" newtab="true" >}} diff --git a/docs/content/guides/author-apps/aws/overview/snippets/aws.bicep b/docs/content/guides/author-apps/aws/overview/snippets/aws.bicep index 906c4fc52..c1db7cbd4 100644 --- a/docs/content/guides/author-apps/aws/overview/snippets/aws.bicep +++ b/docs/content/guides/author-apps/aws/overview/snippets/aws.bicep @@ -7,7 +7,7 @@ param environment string param bucket string = 'mybucket' @secure() -param aws_access_key_id string +param aws_access_key_id string @secure() param aws_secret_access_key string 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 a21fb0a73..a9608a548 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 @@ -2,7 +2,7 @@ type: docs title: "How-To: Connect a container to an Azure resource" linkTitle: "Deploy Azure resources" -description: "Learn how to connect a container to an Azure resource with managed identities and RBAC" +description: "Learn how to connect a container to an Azure resource with managed identities and RBAC" weight: 600 slug: 'azure-connection' categories: "How-To" @@ -24,7 +24,7 @@ The steps below will showcase a "rad-ified" version of the existing [Azure AD wo - [Setup a supported Kubernetes cluster]({{< ref "/guides/operations/kubernetes/overview#supported-clusters" >}}) - [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/installation.html) installed in your cluster, including the [Mutating Admission Webhook](https://azure.github.io/azure-workload-identity/docs/installation/mutating-admission-webhook.html) -## Step 1: Initialize Radius +## Step 1: Initialize Radius Begin by running [`rad init --full`]({{< ref rad_init >}}). Make sure to configure an Azure cloud provider: @@ -32,7 +32,7 @@ Begin by running [`rad init --full`]({{< ref rad_init >}}). Make sure to configu rad init --full ``` -## Step 2: Define a Radius Environment +## Step 2: Define a Radius Environment Create a file named `app.bicep` and define a Radius Environment with [identity property]({{< ref "/guides/deploy-apps/environments/overview" >}}) set. This configures your environment to use your Azure AD workload identity installation with your cluster's OIDC endpoint: @@ -60,7 +60,7 @@ rad deploy ./app.bicep -p oidcIssuer= rad resource logs containers mycontainer -a myapp ``` -2. You should see the contents of the secret from your Key Vault: +1. You should see the contents of the secret from your Key Vault: ```txt [myapp-mycontainer-79c54bd7c7-tgdpn] I1108 18:39:53.636314 1 main.go:33] "successfully got secret" secret="supersecret" @@ -76,4 +76,4 @@ rad deploy ./app.bicep -p oidcIssuer= rad app delete myapp --yes ``` -2. Delete the deployed Azure Key Vault via the Azure portal or the Azure CLI +1. Delete the deployed Azure Key Vault via the Azure portal or the Azure CLI diff --git a/docs/content/guides/author-apps/azure/howto-azure-resources/snippets/container-wi.bicep b/docs/content/guides/author-apps/azure/howto-azure-resources/snippets/container-wi.bicep index 9840e5735..e57420aad 100644 --- a/docs/content/guides/author-apps/azure/howto-azure-resources/snippets/container-wi.bicep +++ b/docs/content/guides/author-apps/azure/howto-azure-resources/snippets/container-wi.bicep @@ -5,7 +5,7 @@ import radius as radius param azLocation string = resourceGroup().location @description('Specifies the OIDC issuer URL') -param oidcIssuer string +param oidcIssuer string resource env 'Applications.Core/environments@2023-10-01-preview' = { name: 'iam-quickstart' @@ -68,7 +68,7 @@ resource keyvault 'Microsoft.KeyVault/vaults@2021-10-01' = { properties: { enabledForTemplateDeployment: true tenantId: subscription().tenantId - enableRbacAuthorization:true + enableRbacAuthorization: true sku: { name: 'standard' family: 'A' diff --git a/docs/content/guides/author-apps/containers/howto-connect-dependencies/index.md b/docs/content/guides/author-apps/containers/howto-connect-dependencies/index.md index 9cdf24527..54e22b152 100644 --- a/docs/content/guides/author-apps/containers/howto-connect-dependencies/index.md +++ b/docs/content/guides/author-apps/containers/howto-connect-dependencies/index.md @@ -41,10 +41,11 @@ Connections from a container to a resource result in environment variables for c ```bash rad run ./app.bicep -a demo ``` + 1. Visit [localhost:3000](http://localhost:3000) in your browser. You should see the following page, now showing injected environment variables: {{< image src="./demo-with-redis-screenshot.png" alt="Screenshot of the demo app with all environment variables" width=1000px >}} - + ## Step 5: View the Application Connections Radius Connections are more than just environment variables and configuration. You can also access the "application graph" and understand the connections within your application with the following command: 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 97b054876..927fda410 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 @@ -2,7 +2,7 @@ type: docs title: "How-To: Mount an Azure Key Vault as a volume to a container" linkTitle: "Mount a Key Vault" -description: "Learn how to mount an Azure Key Vault as a volume to a container" +description: "Learn how to mount an Azure Key Vault as a volume to a container" weight: 600 slug: 'volume-keyvault' categories: "How-To" @@ -23,9 +23,9 @@ This how-to guide will provide an overview of how to: - [Supported Kubernetes cluster]({{< ref "guides/operations/kubernetes" >}}) - [Azure AD Workload Identity](https://azure.github.io/azure-workload-identity/docs/installation.html) installed on your cluster - [Azure Keyvault Provider](https://azure.github.io/secrets-store-csi-driver-provider-azure/docs/getting-started/installation/) - - The above installation will also install the required [Secrets Store CSI Driver](https://secrets-store-csi-driver.sigs.k8s.io/getting-started/installation.html) + - The above installation will also install the required [Secrets Store CSI Driver](https://secrets-store-csi-driver.sigs.k8s.io/getting-started/installation.html) -## Step 1: Initialize Radius +## Step 1: Initialize Radius Begin by running [`rad init --full`]({{< ref rad_init >}}). Make sure to configure an Azure cloud provider: @@ -67,13 +67,13 @@ rad deploy ./app.bicep -p oidcIssuer= rad resource logs containers mycontainer -a myapp ``` -2. You should see the contents of the `/var/secrets` mount path defined in your `app.bicep` file: +1. You should see the contents of the `/var/secrets` mount path defined in your `app.bicep` file: ``` [myapp-mycontainer-d8b4fc44-qrhnn] secret context : supersecret ``` - Note: You might need to wait 1-2 minutes for the pods and identities to be set up completely. Retry in a few minutes if you are unable to view the secret contents. + Note: You might need to wait 1-2 minutes for the pods and identities to be set up completely. Retry in a few minutes if you are unable to view the secret contents. ## Cleanup @@ -83,4 +83,4 @@ rad deploy ./app.bicep -p oidcIssuer= rad app delete myapp --yes ``` -2. Delete the deployed Azure Key Vault via the Azure portal or the Azure CLI +1. Delete the deployed Azure Key Vault via the Azure portal or the Azure CLI diff --git a/docs/content/guides/author-apps/containers/howto-keyvault-volume/snippets/keyvault-wi.bicep b/docs/content/guides/author-apps/containers/howto-keyvault-volume/snippets/keyvault-wi.bicep index a2910e02e..774c42e21 100644 --- a/docs/content/guides/author-apps/containers/howto-keyvault-volume/snippets/keyvault-wi.bicep +++ b/docs/content/guides/author-apps/containers/howto-keyvault-volume/snippets/keyvault-wi.bicep @@ -84,13 +84,11 @@ resource container 'Applications.Core/containers@2023-10-01-preview' = { volkv: { kind: 'persistent' source: volume.id - mountPath: '/var/secrets' + mountPath: '/var/secrets' } } - + } } } //CONTAINER - - diff --git a/docs/content/guides/author-apps/containers/howto-volumes/index.md b/docs/content/guides/author-apps/containers/howto-volumes/index.md index 0be989c3f..e510b0818 100644 --- a/docs/content/guides/author-apps/containers/howto-volumes/index.md +++ b/docs/content/guides/author-apps/containers/howto-volumes/index.md @@ -34,11 +34,13 @@ The `samples/volumes` container will display the status and contents of the `/tm ```bash rad deploy ./app.bicep ``` + 1. Once complete, port forward to your container with [`rad resource expose`]({{< ref rad_resource_expose >}}): ```bash rad resource expose containers mycontainer -a myapp --port 5000 ``` + 1. Visit [localhost:5000](http://localhost:5000) in your browser. You should see a message warning that the directory `/tmpdir` does not exist: {{< image src="screenshot-error.jpg" width=500px alt="Screenshot of container showing that the tmp directory does not exist" >}} @@ -62,7 +64,7 @@ Within the `container.volume` property, add a new volume named `temp` and config ```bash rad resource expose containers mycontainer -a myapp --port 5000 ``` - + 1. Visit [localhost:5000](http://localhost:5000) in your browser. You should see the contents of `/tmpdir`, showing an empty directory. {{< image src="screenshot-empty.jpg" width=500px alt="Screenshot of container showing that the tmp directory has no items" >}} diff --git a/docs/content/guides/author-apps/containers/overview/index.md b/docs/content/guides/author-apps/containers/overview/index.md index bbf5e125a..2a7285725 100644 --- a/docs/content/guides/author-apps/containers/overview/index.md +++ b/docs/content/guides/author-apps/containers/overview/index.md @@ -28,9 +28,9 @@ Radius provides a way to apply custom Kubernetes configurations to container res ##### Base Kubernetes YAML -You can provide a Kubernetes YAML definition as a base or foundation upon which Radius will build your containers, enabling you to incrementally adopting Radius by starting with your existing YAML definition and use applying Radius customizations on top. The provided YAML is fully passed through to Kubernetes when Radius creates the container resource, which means that you may even provide a definition for a CRD that Radius has no visibility into. +You can provide a Kubernetes YAML definition as a base or foundation upon which Radius will build your containers, enabling you to incrementally adopting Radius by starting with your existing YAML definition and use applying Radius customizations on top. The provided YAML is fully passed through to Kubernetes when Radius creates the container resource, which means that you may even provide a definition for a custom resources (CRD) that Radius has no visibility into. -Radius currently supports the following Kubernetes resource types for the `base` property: +Radius currently supports the following Kubernetes resource types for the `base` property: | Kubernetes Resource Types | Number of resources | Limitation | |---------------------------|---------------------|------------| @@ -66,7 +66,7 @@ Health probes are used to determine the health of a container. There are two typ ### Readiness Probe -Readiness probes detect when a container begins reporting it is ready to receive traffic, such as after loading a large configuration file that may take a couple seconds to process. There are three types of probes available, httpGet, tcp and exec. +Readiness probes detect when a container begins reporting it is ready to receive traffic, such as after loading a large configuration file that may take a couple seconds to process. There are three types of probes available, httpGet, tcp and exec. For an **httpGet** probe, an HTTP GET request at the specified endpoint will be used to probe the application. If a success code is returned, the probe passes. If no code or an error code is returned, the probe fails, and the container won’t receive any requests after a specified number of failures. Any code greater than or equal to 200 and less than 400 indicates success. Any other code indicates failure. @@ -92,7 +92,7 @@ Refer to the probes section of the [container resource schema]({{< ref "containe When a connection between two resources is declared, Radius injects resource related information into environment variables that are then used to access the respective resource without having to hard code URIs, connection strings, access keys, or anything that application code needs to successfully communicate. -These environment variables follow a naming convention that makes their use predictable. The naming pattern is derived from the connection name and resource type, which determines what values are required. This way the code that needs to read the values gets to define how they are named. Refer to the [reference documentation]({{< ref resource-schema >}}) of each resource for more information. +These environment variables follow a naming convention that makes their use predictable. The naming pattern is derived from the connection name and resource type, which determines what values are required. This way the code that needs to read the values gets to define how they are named. Refer to the [reference documentation]({{< ref resource-schema >}}) of each resource for more information. For example, adding a connection called `database` that connects to a MongoDB resource would result in the following environment variables being injected: @@ -103,7 +103,7 @@ For example, adding a connection called `database` that connects to a MongoDB re | `CONNECTION_DATABASE_USERNAME` | Username of the target database | | `CONNECTION_DATABASE_PASSWORD` | Password of the target database | -Alternatively, if you already have another convention you would like to follow or if you just prefer to be explicit, you may ignore the values generated by a connection and instead override it by setting your own environment variable values. +Alternatively, if you already have another convention you would like to follow or if you just prefer to be explicit, you may ignore the values generated by a connection and instead override it by setting your own environment variable values. diff --git a/docs/content/guides/author-apps/custom/_index.md b/docs/content/guides/author-apps/custom/_index.md new file mode 100644 index 000000000..c1fb44584 --- /dev/null +++ b/docs/content/guides/author-apps/custom/_index.md @@ -0,0 +1,7 @@ +--- +type: docs +title: "Custom resources" +linkTitle: "Custom resources" +description: "Model and deploy your own resource types" +weight: 550 +--- diff --git a/docs/content/guides/author-apps/custom/howto-extenders/index.md b/docs/content/guides/author-apps/custom/howto-extenders/index.md new file mode 100644 index 000000000..7f593c5d8 --- /dev/null +++ b/docs/content/guides/author-apps/custom/howto-extenders/index.md @@ -0,0 +1,78 @@ +--- +type: docs +title: "How-To: Model any resource with an extender" +linkTitle: "Extenders" +description: "Learn how to use extenders in an application" +weight: 300 +--- + +This guide will walk you through how to use an [extender]({{< ref "/guides/author-apps/custom/overview#extenders" >}}) in an application to model resources beyond those currently built into Radius. These might be abstractions or resources unique to your organization, or resources that don't yet have a native Radius type. + +## Prerequisites + +- [rad CLI]({{< ref "installation#step-1-install-the-rad-cli" >}}) +- [Radius Bicep VSCode extension]({{< ref "installation#step-2-install-the-vs-code-extension" >}}) +- [Radius environment]({{< ref "installation#step-3-initialize-radius" >}}) + +## Step 1: Register an extender Recipe + +In this guide you will leverage a [Recipe]({{< ref "/guides/recipes/overview" >}}) to deploy backing infrastructure for your resource. Begin by registering the 'extender-postgresql' Recipe in your environment: + +```bash +rad recipe register postgresql --resource-type "Applications.Core/extenders" --template-kind bicep --template-path "ghcr.io/radius-project/recipes/local-dev/postgresql:latest" +``` + +## Step 2: Define an extender + +Open a new file named `app.bicep` and define an extender: + +{{< rad file="snippets/app.bicep" embed=true >}} + +## Step 3: Add a container + +Add a container to your `app.bicep` file, accessing the extender's properties and secrets: + +{{< rad file="snippets/app-container.bicep" embed=true marker="//CONTAINER" >}} + +## Step 4: Deploy the app + +Deploy and [run]({{< ref rad_run >}}) the app using the following command: + +```bash +rad run app.bicep -a demo +``` + +You should see your application deployed: + +``` +Building .\app.bicep... +Deploying template '.\app.bicep' for application 'demo' and environment 'default' from workspace 'default'... + +Deployment In Progress... + + +Deployment Complete + +Resources: + demo Applications.Core/containers + extender Applications.Core/extenders + +Starting log stream... + +demo-bb9df8798-b68rc › demo +demo-bb9df8798-b68rc demo Using in-memory store: no connection string found +demo-bb9df8798-b68rc demo Server is running at http://localhost:3000 +demo-bb9df8798-b68rc demo [port-forward] connected from localhost:3000 -> ::3000 +``` + +## Step 5: Test the app + +Visit [https://localhost:3000](https://localhost:3000) to see your app running. You should see the environment variables and secrets you referenced in your container. + +## Cleanup + +To clean up the resources created in this guide, run: + +```bash +rad app delete demo -y +``` diff --git a/docs/content/guides/author-apps/custom/howto-extenders/snippets/app-container.bicep b/docs/content/guides/author-apps/custom/howto-extenders/snippets/app-container.bicep new file mode 100644 index 000000000..f32c6baff --- /dev/null +++ b/docs/content/guides/author-apps/custom/howto-extenders/snippets/app-container.bicep @@ -0,0 +1,46 @@ +import radius as rad + +@description('The ID of your Radius environment. Set automatically by the rad CLI.') +param environment string + +@description('The ID of your Radius application. Set automatically by the rad CLI.') +param application string + +resource extender 'Applications.Core/extenders@2023-10-01-preview' = { + name: 'postgresql' + properties: { + environment: environment + application: application + recipe: { + name: 'postgresql' + } + } +} + +//CONTAINER +resource demo 'Applications.Core/containers@2023-10-01-preview' = { + name: 'demo' + properties: { + application: application + container: { + image: 'ghcr.io/radius-project/samples/demo:latest' + env: { + POSTGRESQL_HOST: extender.properties.host + POSTGRESQL_PORT: extender.properties.port + POSTGRESQL_USERNAME: extender.properties.username + POSTGRESQL_PASSWORD: extender.secrets('password') + } + ports: { + web: { + containerPort: 3000 + } + } + } + connections: { + postgresql: { + source: extender.id + } + } + } +} +//CONTAINER diff --git a/docs/content/guides/author-apps/custom/howto-extenders/snippets/app.bicep b/docs/content/guides/author-apps/custom/howto-extenders/snippets/app.bicep new file mode 100644 index 000000000..cefd772b1 --- /dev/null +++ b/docs/content/guides/author-apps/custom/howto-extenders/snippets/app.bicep @@ -0,0 +1,18 @@ +import radius as rad + +@description('The ID of your Radius environment. Set automatically by the rad CLI.') +param environment string + +@description('The ID of your Radius application. Set automatically by the rad CLI.') +param application string + +resource extender 'Applications.Core/extenders@2023-10-01-preview' = { + name: 'postgresql' + properties: { + environment: environment + application: application + recipe: { + name: 'postgresql' + } + } +} diff --git a/docs/content/guides/author-apps/custom/overview/index.md b/docs/content/guides/author-apps/custom/overview/index.md new file mode 100644 index 000000000..92aaaee0b --- /dev/null +++ b/docs/content/guides/author-apps/custom/overview/index.md @@ -0,0 +1,17 @@ +--- +type: docs +title: "Overview: Custom resource types" +linkTitle: "Overview" +description: "Learn how to model and deploy your own resource types in Radius" +weight: 100 +--- + +When you have a need for types beyond those currently built into Radius, you can model and deploy your own resource types. Currently, Radius supports an untyped "extender" resource which allows you to pass in any property or secret. + +## Extenders + +Extenders are a special type of resource that allows you to pass in any property or secret. This is useful for modeling resources that aren't natively supported by Radius. + +[Recipes]({{< ref "/guides/recipes/overview" >}}) can be used with extenders to manage the backing infrastructure. + +Refer to the [How-To: Extenders guide]({{< ref howto-extenders >}}) for more information on how to use an extender. diff --git a/docs/content/guides/author-apps/dapr/overview/index.md b/docs/content/guides/author-apps/dapr/overview/index.md index bdfad1fe4..c26f7668e 100644 --- a/docs/content/guides/author-apps/dapr/overview/index.md +++ b/docs/content/guides/author-apps/dapr/overview/index.md @@ -10,7 +10,7 @@ tags: ["Dapr"] Radius offers first-class support for the [Dapr](https://dapr.io) runtime and building blocks to make it easy to make your code fully portable across code and infrastructure. Simply drop in your Dapr building blocks as resources and Radius will automatically configure and apply the accompanying Dapr configuration. -## Installation +## Installation Follow the [Dapr installation instructions](https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/) to install Dapr in your Kubernetes cluster. Once installed, you can begin adding Dapr sidecars and building blocks. diff --git a/docs/content/guides/author-apps/kubernetes/how-to-patch-pod/index.md b/docs/content/guides/author-apps/kubernetes/how-to-patch-pod/index.md index 5a4c58e32..65afeaeb5 100644 --- a/docs/content/guides/author-apps/kubernetes/how-to-patch-pod/index.md +++ b/docs/content/guides/author-apps/kubernetes/how-to-patch-pod/index.md @@ -56,8 +56,7 @@ Begin by creating a file named `app.bicep` with a Radius [container]({{< ref "gu
When you're ready to move on to the next step, use `CTRL` + `C` to exit the command. -2. Run the command below, which will list the pods in your Kubernetes cluster, using the `-o` flag to specify the relevant information to output: - +1. Run the command below, which will list the pods in your Kubernetes cluster, using the `-o` flag to specify the relevant information to output: ```bash kubectl get pods -A -l app.kubernetes.io/name=demo -o custom-columns=POD:.metadata.name,STATUS:.status.phase,CONTAINER_NAMES:spec.containers[:].name,CONTAINER_IMAGES:spec.containers[:].image @@ -106,7 +105,7 @@ Add the following [`runtimes`]({{< ref "reference/resource-schema/core-schema/co
When you're ready to move on to the next step, use `CTRL` + `C` to exit the command. -2. Run the command below, which will list the pods in your Kubernetes cluster, using the `-o` flag to specify the relevant information to output: +1. Run the command below, which will list the pods in your Kubernetes cluster, using the `-o` flag to specify the relevant information to output: ```bash kubectl get pods -A -l app.kubernetes.io/name=demo -o custom-columns=POD:.metadata.name,STATUS:.status.phase,CONTAINER_NAMES:spec.containers[:].name,CONTAINER_IMAGES:spec.containers[:].image @@ -126,7 +125,7 @@ Add the following [`runtimes`]({{< ref "reference/resource-schema/core-schema/co ## Cleanup Run the following command to [delete]({{< ref "guides/deploy-apps/howto-delete" >}}) your app and container: - + ```bash rad app delete demo ``` diff --git a/docs/content/guides/author-apps/networking/howto-tls/index.md b/docs/content/guides/author-apps/networking/howto-tls/index.md index fd8718a4c..2c68a3679 100644 --- a/docs/content/guides/author-apps/networking/howto-tls/index.md +++ b/docs/content/guides/author-apps/networking/howto-tls/index.md @@ -16,8 +16,8 @@ This guide will show you how to add TLS and HTTPS to an application with a gatew - [Radius Bicep VSCode extension]({{< ref "installation#step-2-install-the-vs-code-extension" >}}) - [Radius environment]({{< ref "installation#step-3-initialize-radius" >}}) - Domain name + DNS A-record pointing to your Kubernetes cluster - - 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. - - If running Radius on an Elastic Kubernetes Service (EKS) cluster you can optionally leverage an [Application Load Balancer](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html) for a hosted DNS name and record. + - 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. + - If running Radius on an Elastic Kubernetes Service (EKS) cluster you can optionally leverage an [Application Load Balancer](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html) for a hosted DNS name and record. ## Step 1: Define a container @@ -37,7 +37,6 @@ TLS certificates need to be referenced via a Radius [secret store]({{< ref "/gui [cert-manager](https://cert-manager.io/docs/) is a great way to manage certificates in Kubernetes and make them available as a Kubernetes secret. This example uses a Kubernetes secret that was setup by cert-manager {{< /alert >}} - {{< rad file="snippets/app-existing.bicep" marker="//SECRETS" embed=true >}} {{< /codetab >}} @@ -65,6 +64,7 @@ Now that your certificate data is ready add a gateway and reference the secret s ```sh rad deploy app.bicep -a tlsdemo ``` + {{% /codetab %}} {{% codetab %}} @@ -72,6 +72,7 @@ rad deploy app.bicep -a tlsdemo ```sh rad deploy app.bicep -a tlsdemo -p tlscrt= -p tlskey= ``` + {{% /codetab %}} {{< /tabs >}} diff --git a/docs/content/guides/author-apps/secrets/howto-new-secretstore/index.md b/docs/content/guides/author-apps/secrets/howto-new-secretstore/index.md index 5f9e0c67c..9589ceee6 100644 --- a/docs/content/guides/author-apps/secrets/howto-new-secretstore/index.md +++ b/docs/content/guides/author-apps/secrets/howto-new-secretstore/index.md @@ -12,10 +12,10 @@ Radius secret stores securely manage secrets for your Environment and Applicatio By default, Radius leverages the hosting platform's secrets management solution to create and store the secret. For example, if you are deploying to Kubernetes, the secret store will be created as a Kubernetes Secret. -## Pre-requisites +## Pre-requisites - [rad CLI]({{< ref "installation#step-1-install-the-rad-cli" >}}) -- [kubectl CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) +- [kubectl CLI](https://kubernetes.io/docs/tasks/tools/install-kubectl/) - [Radius Bicep VSCode extension]({{< ref "installation#step-2-install-the-radius-bicep-vs-code-extension" >}}) - [Radius environment]({{< ref "installation#step-3-initialize-the-radius-control-plane-and-the-radius-environment" >}}) @@ -25,7 +25,7 @@ Open the `app.bicep` from the current working directory and add a new Secret Sto {{< rad file="snippets/secretstore.bicep" embed=true marker="//SECRET_STORE_NEW" >}} -In this example a new secret store resource is created for storing a TLS certificate in it. +In this example a new secret store resource is created for storing a TLS certificate in it. ## Step 2: Deploy the application @@ -35,9 +35,9 @@ Deploy the application with [`rad deploy`]({{< ref "rad_deploy" >}}): rad deploy app.bicep -a secretdemo ``` -## Step 3: Verify the secrets are deployed +## Step 3: Verify the secrets are deployed -Use the below command to verify if the secret got deployed +Use the below command to verify if the secret got deployed: ```bash kubectl get secret -n default-secretdemo diff --git a/docs/content/guides/author-apps/secrets/overview/index.md b/docs/content/guides/author-apps/secrets/overview/index.md index fba40d2c3..8a4e1f9fa 100644 --- a/docs/content/guides/author-apps/secrets/overview/index.md +++ b/docs/content/guides/author-apps/secrets/overview/index.md @@ -14,7 +14,7 @@ Sensitive data, such as TLS certificates, tokens, passwords, and keys that serve An independent resource with its own lifecycle, a Radius Secret Store ensures that data is persisted across container restarts or mounts and can interact directly with the Radius Application Model. For instance, an Applications.Core/gateways resource can use this resource to store a TLS certificate and reference it. -## Create a new Secret Store +## Create a new Secret Store Radius leverages the secrets management solution available on the hosting platform to create and store the secret. For example, if you are deploying to Kubernetes, the secret will be created in Kubernetes Secrets. Follow the [how-to guide on creating new secret store]({{< ref "/guides/author-apps/secrets/howto-new-secretstore" >}}) to learn more about creating a new secret store resource and storing a TLS certificate in it. 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 bf1241797..b86fe8f1f 100644 --- a/docs/content/guides/deploy-apps/environments/howto-environment/index.md +++ b/docs/content/guides/deploy-apps/environments/howto-environment/index.md @@ -24,23 +24,23 @@ Radius Environments can be setup with the rad CLI via two paths: interactive or ```bash rad init ``` - + Select `Yes` to setup the app.bicep in the current directory ``` - Initializing Radius... - - 🕔 Install Radius {{< param version >}} + Initializing Radius... + + 🕔 Install Radius {{< param version >}} - Kubernetes cluster: kind - - Kubernetes namespace: radius-system - ⏳ Create new environment default - - Kubernetes namespace: default - - Recipe pack: local-dev - ⏳ Scaffold application - ⏳ Update local configuration - ``` - -2. Verify the initialization by running: + - Kubernetes namespace: radius-system + ⏳ Create new environment default + - Kubernetes namespace: default + - Recipe pack: local-dev + ⏳ Scaffold application + ⏳ Update local configuration + ``` + +1. Verify the initialization by running: ```bash kubectl get deployments -n radius-system ``` @@ -56,24 +56,27 @@ Radius Environments can be setup with the rad CLI via two paths: interactive or ``` You can also use [`rad env list`]({{< ref rad_env_list.md >}}) to view your environment: - + ```bash rad env list ``` -3. Use `rad recipe list` to see the list of available Recipes: +1. Use `rad recipe list` to see the list of available Recipes: ```bash rad recipe list ``` + ``` NAME TYPE TEMPLATE KIND TEMPLATE default Applications.Datastores/mongoDatabases bicep ghcr.io/radius-project/recipes/local-dev/mongodatabases:latest default Applications.Datastores/redisCaches bicep ghcr.io/radius-project/recipes/local-dev/rediscaches:latest - ``` + ``` + You can follow the [Recipes]({{< ref "/guides/recipes/overview" >}}) documentation to learn more about the Recipes and how to use them in your application. ## Create an environment interactively 1. Initialize a new environment with [`rad init --full`]({{< ref rad_init >}}): + ```bash rad init --full ``` @@ -87,21 +90,22 @@ Radius Environments can be setup with the rad CLI via two paths: interactive or You should see the following output: ``` - Initializing Radius... + Initializing Radius... - ✅ Install Radius {{< param version >}} - - Kubernetes cluster: k3d-k3s-default - - Kubernetes namespace: radius-system - ✅ Create new environment default - - Kubernetes namespace: default - - Recipe pack: dev - ✅ Scaffold application samples - ✅ Update local configuration + ✅ Install Radius {{< param version >}} + - Kubernetes cluster: k3d-k3s-default + - Kubernetes namespace: radius-system + ✅ Create new environment default + - Kubernetes namespace: default + - Recipe pack: dev + ✅ Scaffold application samples + ✅ Update local configuration Initialization complete! Have a RAD time 😎 ``` 1. Verify the Radius services were installed by running: + ```bash kubectl get deployments -n radius-system ``` @@ -152,7 +156,6 @@ Radius can also be installed and an environment created with manual rad CLI comm Run [`rad install kubernetes`]({{< ref rad_install_kubernetes >}}) to install Radius into your default Kubernetes context and cluster: - ```bash rad install kubernetes ``` @@ -181,9 +184,9 @@ Radius can also be installed and an environment created with manual rad CLI comm 1. Create your Radius Environment: - + Run [`rad env create`]({{< ref rad_env_create >}}) to create a new environment in your resource group. Specify the `--namespace` flag to select the Kubernetes namespace to deploy resources into: - + ```bash rad env create myEnvironment --group myGroup --namespace my-namespace ``` @@ -223,6 +226,6 @@ Radius can also be installed and an environment created with manual rad CLI comm myEnvironment ``` -## Next steps +## Next steps -Follow the [cloud provider guides]({{< ref providers >}}) to configure cloud providers for your environment to deploy and manage cloud resources \ No newline at end of file +Follow the [cloud provider guides]({{< ref providers >}}) to configure cloud providers for your environment to deploy and manage cloud resources. \ No newline at end of file diff --git a/docs/content/guides/deploy-apps/environments/overview/index.md b/docs/content/guides/deploy-apps/environments/overview/index.md index 02f056e5e..23baf7fc5 100644 --- a/docs/content/guides/deploy-apps/environments/overview/index.md +++ b/docs/content/guides/deploy-apps/environments/overview/index.md @@ -41,6 +41,10 @@ Supported identity providers: - [Azure AD workload identity](https://azure.github.io/azure-workload-identity/docs/introduction.html) +### Simulated environments + +You can optionally designate an environment as "simulated". When enabled, a simulated environment will not deploy any output any resources or run any Recipes when an application is deployed. This is useful for dry runs or testing. + ## CLI commands The following commands let you interact with Radius Environments: diff --git a/docs/content/guides/deploy-apps/howto-delete/index.md b/docs/content/guides/deploy-apps/howto-delete/index.md index ff1275a3b..bb7eda08a 100644 --- a/docs/content/guides/deploy-apps/howto-delete/index.md +++ b/docs/content/guides/deploy-apps/howto-delete/index.md @@ -12,7 +12,7 @@ tags: ["delete"] - A [deployed application]({{< ref deploy-apps >}}) in a Radius Environment. -## Step 1: Delete the Radius Application from the environment +## Step 1: Delete the Radius Application from the environment You can delete the Radius Application using the [`rad app delete`]({{< ref rad_application_delete >}}) command: @@ -21,9 +21,9 @@ rad app delete ``` This will delete the following resources from the Radius Environment - + 1. All the resources created by Radius on the Kubernetes cluster under the `-` namespace -2. All the resources provisioned by Recipes +1. All the resources provisioned by Recipes ## Step 2: Delete any cloud/platform resources 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 1cedabc3d..6d65551ec 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 @@ -2,7 +2,7 @@ type: docs title: "How-To: Deploy an application with Github Actions" linkTitle: "Deploy via GitHub Actions" -description: "Learn about adding your Radius apps to your deployment pipelines with GitHub Actions" +description: "Learn about adding your Radius apps to your deployment pipelines with GitHub Actions" weight: 300 categories: "How-To" tags: ["CI/CD"] @@ -71,6 +71,7 @@ Ensure the service principal created above has the proper RBAC assignment to dow - name: Configure kubectl context run: az aks get-credentials --name ${CLUSTER} --resource-group ${RESOURCE_GROUP} --subscription ${SUBSCRIPTION_ID} ``` + {{% /codetab %}} {{% codetab %}} diff --git a/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-rad-cli/index.md b/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-rad-cli/index.md index 407f39bf4..3d6d33397 100644 --- a/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-rad-cli/index.md +++ b/docs/content/guides/deploy-apps/howto-deploy/howto-deploy-rad-cli/index.md @@ -8,7 +8,8 @@ categories: "How-To" tags: ["deployments"] --- -## Pre-requisites +## Pre-requisites + - [An authored Radius Application]({{< ref author-apps >}}) ## Step 1 : Deploy an application into a Radius Environment @@ -21,6 +22,7 @@ An application can be deployed to an environment with [`rad deploy`]({{< ref rad ```bash rad deploy app.bicep ``` + This will deploy the application to the created Radius Environment. {{% /codetab %}} @@ -39,4 +41,3 @@ Parameters can be included as part of `rad deploy` via the `-p/--parameters` fla {{< /tabs >}} > Follow the [how-to guide]({{< ref howto-troubleshootapps >}}) for guidance on troubleshooting your Radius Application - diff --git a/docs/content/guides/deploy-apps/howto-deploy/howto-run-app/index.md b/docs/content/guides/deploy-apps/howto-deploy/howto-run-app/index.md index baf03af94..b9f168d21 100644 --- a/docs/content/guides/deploy-apps/howto-deploy/howto-run-app/index.md +++ b/docs/content/guides/deploy-apps/howto-deploy/howto-run-app/index.md @@ -8,7 +8,8 @@ categories: "How-To" tags: ["deployments"] --- -## Pre-requisites +## Pre-requisites + - [An authored Radius Application]({{< ref author-apps >}}) ## Step 1: Run an application @@ -39,4 +40,4 @@ You can find more examples of deploying applications with parameters [here]({{< {{< /tabs >}} - > Follow the [how-to guide]({{< ref howto-troubleshootapps >}}) for guidance on troubleshooting your apps + > Follow the [how-to guide]({{< ref howto-troubleshootapps >}}) for guidance on troubleshooting your apps. diff --git a/docs/content/guides/deploy-apps/howto-troubleshootapps/index.md b/docs/content/guides/deploy-apps/howto-troubleshootapps/index.md index f22ef1fb4..d7570acc5 100644 --- a/docs/content/guides/deploy-apps/howto-troubleshootapps/index.md +++ b/docs/content/guides/deploy-apps/howto-troubleshootapps/index.md @@ -19,6 +19,7 @@ Use the below command to port-forward the container to your local machine. This ```bash rad resource expose containers -a --port ``` + Refer to [`rad resource expose`]({{< ref rad_resource_expose >}}) for more details on the command. ## Step 2: Inspect container logs @@ -29,7 +30,7 @@ If your Radius Application is unresponsive or does not connect to its dependenci rad resource logs containers -a ``` -> Also refer to the [connections section]({{< ref "guides/author-apps/containers/overview#connections" >}}) to know about the naming convention of the environment variables and inspect if your application uses the right variables. +> Also refer to the [connections section]({{< ref "guides/author-apps/containers/overview#connections" >}}) to know about the naming convention of the environment variables and inspect if your application uses the right variables. ## Step 3: Inspect control-plane logs @@ -38,6 +39,7 @@ If you hit errors while deploying the application, look at the control plane log ```bash rad debug-logs ``` -Inspect the UCP and DE logs to see if there are any errors + +Inspect the UCP and DE logs to see if there are any errors. >Also make sure to [open an Issue](https://github.com/radius-project/radius/issues/new/choose) if you encounter a generic `Internal server error` message or an error message that is not self-serviceable, so we can address the root error not being forwarded to the user. diff --git a/docs/content/guides/operations/control-plane/howto-postman/index.md b/docs/content/guides/operations/control-plane/howto-postman/index.md index 1597b4b5b..6533ff1ff 100644 --- a/docs/content/guides/operations/control-plane/howto-postman/index.md +++ b/docs/content/guides/operations/control-plane/howto-postman/index.md @@ -73,7 +73,7 @@ Now that you have created the necessary Kubernetes objects, you can generate a t 1. Run the following command to generate a token for the `postman-account` service account: ```bash - kubectl create token postman-account -n radius-system + kubectl create token postman-account -n radius-system ``` This will create a token with the default expiration time of 1 hour. If you want to set a different expiration time, you can use the `--duration` flag to specify a duration in seconds (up to 48 hours). @@ -98,13 +98,13 @@ Next, you'll need to get the control plane API endpoint and use Postman to inter 1. Open Postman and create a new request 1. Set the method to `GET` 1. Set the URL to the following, which will [retrieve all your resource groups]({{< ref api-ucp >}}): - + ``` /apis/api.ucp.dev/v1alpha3/planes/radius/local/resourcegroups?api-version=2023-10-01-preview ``` {{< image src="postman-url.png" width=900px alt="Screenshot of Postman with filled out URL" >}} - + 1. Open the `Authorization` tab and select `Bearer Token` from the `Type` dropdown. Paste the token you generated in step 2 into the `Token` field: {{< image src="postman-auth.png" width=900px alt="Screenshot of Postman with filled out auth token" >}} @@ -124,6 +124,7 @@ Next, you'll need to get the control plane API endpoint and use Postman to inter ] } ``` + 1. Update your request URL to [list all the Radius Environments]({{< ref api-environments >}}) in your resource group (_make sure to update the name of your resource group in the URL. In this example the resource group name is default_): ``` @@ -155,8 +156,6 @@ Next, you'll need to get the control plane API endpoint and use Postman to inter } ``` - - ## Next step: Explore the Radius API Now that you have successfully authenticated to the Radius API and interacted with resources, you can explore the API using the [Radius API reference]({{< ref api >}}). diff --git a/docs/content/guides/operations/control-plane/logs/fluentd/index.md b/docs/content/guides/operations/control-plane/logs/fluentd/index.md index 59c6e3e1d..e6ac7453c 100644 --- a/docs/content/guides/operations/control-plane/logs/fluentd/index.md +++ b/docs/content/guides/operations/control-plane/logs/fluentd/index.md @@ -22,14 +22,14 @@ tags: ["logs","observability"] kubectl create namespace radius-monitoring ``` -2. Add the helm repo for Elastic Search +1. Add the helm repo for Elastic Search ```bash helm repo add elastic https://helm.elastic.co helm repo update ``` -3. Install Elastic Search using Helm +1. Install Elastic Search using Helm _By default, the chart creates three replicas which must be on different nodes. If your cluster has fewer than 3 nodes, specify a smaller number of replicas with the `--set replicas=1` flag:_ @@ -43,13 +43,13 @@ tags: ["logs","observability"] helm install elasticsearch elastic/elasticsearch --version 7.17.3 -n radius-monitoring --set persistence.enabled=false,replicas=1 ``` -4. Install Kibana +1. Install Kibana ```bash helm install kibana elastic/kibana --version 7.17.3 -n radius-monitoring ``` -5. Ensure that Elastic Search and Kibana are running in your Kubernetes cluster +1. Ensure that Elastic Search and Kibana are running in your Kubernetes cluster ```bash kubectl get pods -n radius-monitoring @@ -80,7 +80,7 @@ tags: ["logs","observability"] kubectl apply -f ./fluentd-radius-with-rbac.yaml ``` -2. Ensure that Fluentd is running as a daemonset. The number of Fluentd instances should be the same as the number of cluster nodes. In the example below, there is only one node in the cluster: +1. Ensure that Fluentd is running as a daemonset. The number of Fluentd instances should be the same as the number of cluster nodes. In the example below, there is only one node in the cluster: ```bash kubectl get pods -n kube-system -w @@ -96,7 +96,7 @@ tags: ["logs","observability"] fluentd-sdrld 1/1 Running 0 14s ``` -## Install Radius control plane +## Install Radius control plane Visit the [Kubernetes docs]({{< ref "guides/operations/kubernetes" >}}) to learn how to install the Radius control plane. By default, Radius has JSON logging enabled. @@ -117,9 +117,9 @@ _Note: There is a small delay for Elastic Search to index the logs that Fluentd ```bash kubectl port-forward svc/kibana-kibana 5601 -n radius-monitoring ``` - + You should see: - + ``` Forwarding from 127.0.0.1:5601 -> 5601 Forwarding from [::1]:5601 -> 5601 @@ -129,37 +129,37 @@ _Note: There is a small delay for Elastic Search to index the logs that Fluentd 1. Browse to `http://localhost:5601` -2. Expand the drop-down menu and click **Management → Stack Management** +1. Expand the drop-down menu and click **Management → Stack Management** ![Stack Management item under Kibana Management menu options](kibana-1.png) -3. On the Stack Management page, select **Data → Index Management** and wait until `radius-*` is indexed. +1. On the Stack Management page, select **Data → Index Management** and wait until `radius-*` is indexed. ![Index Management view on Kibana Stack Management page](kibana-2.png) -4. Once `radius-*` is indexed, click on **Kibana → Index Patterns** and then the **Create index pattern** button. +1. Once `radius-*` is indexed, click on **Kibana → Index Patterns** and then the **Create index pattern** button. ![Kibana create index pattern button](kibana-3.png) -5. Define a new index pattern by typing `radius*` into the **Index Pattern name** field, then click the **Next step** button to continue. +1. Define a new index pattern by typing `radius*` into the **Index Pattern name** field, then click the **Next step** button to continue. ![Kibana define an index pattern page](kibana-4.png) -6. Configure the primary time field to use with the new index pattern by selecting the `@timestamp` option from the **Time field** drop-down. Click the **Create index pattern** button to complete creation of the index pattern. +1. Configure the primary time field to use with the new index pattern by selecting the `@timestamp` option from the **Time field** drop-down. Click the **Create index pattern** button to complete creation of the index pattern. ![Kibana configure settings page for creating an index pattern](kibana-5.png) -7. The newly created index pattern should be shown. Confirm that the fields of interest such as `scope`, `type`, `app_id`, `level`, etc. are being indexed by using the search box in the **Fields** tab. +1. The newly created index pattern should be shown. Confirm that the fields of interest such as `scope`, `type`, `app_id`, `level`, etc. are being indexed by using the search box in the **Fields** tab. _Note: If you cannot find the indexed field, please wait. The time it takes to search across all indexed fields depends on the volume of data and size of the resource that the elastic search is running on._ ![View of created Kibana index pattern](kibana-6.png) -8. To explore the indexed data, expand the drop-down menu and click **Analytics → Discover**. +1. To explore the indexed data, expand the drop-down menu and click **Analytics → Discover**. ![Discover item under Kibana Analytics menu options](kibana-7.png) -9. In the search box, type in a query string such as `scope:*` and click the **Refresh** button to view the results. +1. In the search box, type in a query string such as `scope:*` and click the **Refresh** button to view the results. _Note: This can take a long time. The time it takes to return all results depends on the volume of data and size of the resource that the elastic search is running on._ @@ -167,7 +167,7 @@ _Note: There is a small delay for Elastic Search to index the logs that Fluentd ## References -* [Fluentd for Kubernetes](https://docs.fluentd.org/v/0.12/articles/kubernetes-fluentd) -* [Elastic search helm chart](https://github.com/elastic/helm-charts/tree/master/elasticsearch) -* [Kibana helm chart](https://github.com/elastic/helm-charts/tree/master/kibana) -* [Kibana Query Language](https://www.elastic.co/guide/en/kibana/current/kuery-query.html) +- [Fluentd for Kubernetes](https://docs.fluentd.org/v/0.12/articles/kubernetes-fluentd) +- [Elastic search helm chart](https://github.com/elastic/helm-charts/tree/master/elasticsearch) +- [Kibana helm chart](https://github.com/elastic/helm-charts/tree/master/kibana) +- [Kibana Query Language](https://www.elastic.co/guide/en/kibana/current/kuery-query.html) diff --git a/docs/content/guides/operations/control-plane/metrics/grafana/index.md b/docs/content/guides/operations/control-plane/metrics/grafana/index.md index 61ced907d..8c6d2eefc 100644 --- a/docs/content/guides/operations/control-plane/metrics/grafana/index.md +++ b/docs/content/guides/operations/control-plane/metrics/grafana/index.md @@ -8,7 +8,7 @@ categories: "How-To" tags: ["metrics", "observability"] --- -[Grafana](https://grafana.com/) is an open source visualization and analytics tool that allows you to query, visualize, alert on, and explore your metrics. This guide will show you how to install Grafana and configure it to visualize the Radius control plane metrics from Prometheus. +[Grafana](https://grafana.com/) is an open-source visualization and analytics tool that allows you to query, visualize, alert on, and explore your metrics. This guide will show you how to install Grafana and configure it to visualize the Radius control plane metrics from Prometheus. ## Example dashboards @@ -37,7 +37,6 @@ The [radius-resource-provider-dashboard.json](https://raw.githubusercontent.com/ - [Setup Prometheus]({{}}) on your Kubernetes cluster - [Helm 3](https://helm.sh/) - ### Install Grafana 1. Add the Grafana Helm repo: @@ -72,6 +71,7 @@ The [radius-resource-provider-dashboard.json](https://raw.githubusercontent.com/ ```bash kubectl get pods -n radius-monitoring ``` + You should see something similar to the following: ``` @@ -135,13 +135,13 @@ Now that Grafana is installed, you need to configure it to use Prometheus as a d ### Import dashboards in Grafana 1. Download the Grafana dashboard templates: - - [radius-overview-dashboard.json](https://raw.githubusercontent.com/radius-project/radius/main/grafana/radius-overview-dashboard.json) + - [radius-overview-dashboard.json](https://raw.githubusercontent.com/radius-project/radius/main/grafana/radius-overview-dashboard.json) - [radius-resource-provider-dashboard.json](https://raw.githubusercontent.com/radius-project/radius/main/grafana/radius-resource-provider-dashboard.json) 1. In the upper left corner of the Grafana home screen, click the "+" option, then "Import", and select your templates. 1. Select the dashboard that you imported and enjoy! ## References -* [Prometheus Installation](https://github.com/prometheus-community/helm-charts) -* [Prometheus on Kubernetes](https://github.com/coreos/kube-prometheus) -* [Prometheus Query Language](https://prometheus.io/docs/prometheus/latest/querying/basics/) +- [Prometheus Installation](https://github.com/prometheus-community/helm-charts) +- [Prometheus on Kubernetes](https://github.com/coreos/kube-prometheus) +- [Prometheus Query Language](https://prometheus.io/docs/prometheus/latest/querying/basics/) 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 660b4e91f..809f65469 100644 --- a/docs/content/guides/operations/control-plane/metrics/prometheus/index.md +++ b/docs/content/guides/operations/control-plane/metrics/prometheus/index.md @@ -25,7 +25,7 @@ tags: ["metrics", "observability"] kubectl create namespace radius-monitoring ``` -2. Install Prometheus into your monitoring namespace: +1. Install Prometheus into your monitoring namespace: ```bash helm repo add prometheus-community https://prometheus-community.github.io/helm-charts @@ -39,7 +39,7 @@ tags: ["metrics", "observability"] helm install radius-prom prometheus-community/prometheus -n radius-monitoring --set alertmanager.persistentVolume.enable=false --set pushgateway.persistentVolume.enabled=false --set server.persistentVolume.enabled=false ``` -3. Validate your Prometheus installation: +1. Validate your Prometheus installation: ```bash kubectl get pods -n radius-monitoring diff --git a/docs/content/guides/operations/control-plane/traces/jaeger/index.md b/docs/content/guides/operations/control-plane/traces/jaeger/index.md index 68329e2c3..9b4ebdbf3 100644 --- a/docs/content/guides/operations/control-plane/traces/jaeger/index.md +++ b/docs/content/guides/operations/control-plane/traces/jaeger/index.md @@ -8,7 +8,7 @@ categories: "How-To" tags: ["tracing", "observability"] --- -[Jaeger](https://www.jaegertracing.io/) is an open source distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. +[Jaeger](https://www.jaegertracing.io/) is an open-source distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. The following steps show you how to configure the Radius control plane to send distributed tracing data to Jaeger running as a container in your Kubernetes cluster and how to view the data. @@ -24,17 +24,17 @@ The following steps show you how to configure the Radius control plane to send d kubectl create namespace radius-monitoring ``` -2. Create the file `jaeger.yaml`, and paste the following YAML: +1. Create the file `jaeger.yaml`, and paste the following YAML: {{< button text="Download jaeger.yaml" link="jaeger.yaml" >}} -3. Install Jaeger: +1. Install Jaeger: ```bash kubectl apply -f jaeger.yaml ``` -4. Wait for Jaeger to be up and running +1. Wait for Jaeger to be up and running ```bash kubectl wait deploy --selector app=jaeger --for=condition=available -n radius-monitoring @@ -55,13 +55,13 @@ The following steps show you how to configure the Radius control plane to send d 1. Port forward the Jaeger service to your local machine: ```bash - kubectl port-forward svc/tracing 16686 -n radius-monitoring + kubectl port-forward svc/tracing 16686 -n radius-monitoring ``` -2. In your browser, go to [http://localhost:16686](http://localhost:16686) to see the Jaeger UI: +1. In your browser, go to [http://localhost:16686](http://localhost:16686) to see the Jaeger UI: {{< image src="jaeger_ui.png" alt="" style="width:100%" >}} ## References -- [Jaeger Getting Started](https://www.jaegertracing.io/docs/1.21/getting-started/#all-in-one) \ No newline at end of file +- [Jaeger Getting Started](https://www.jaegertracing.io/docs/1.21/getting-started/#all-in-one) diff --git a/docs/content/guides/operations/control-plane/traces/zipkin/index.md b/docs/content/guides/operations/control-plane/traces/zipkin/index.md index 498b2543b..a422eda1e 100644 --- a/docs/content/guides/operations/control-plane/traces/zipkin/index.md +++ b/docs/content/guides/operations/control-plane/traces/zipkin/index.md @@ -8,7 +8,7 @@ categories: "How-To" tags: ["tracing", "observability"] --- -[Zipkin](https://zipkin.io/) is an open source distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. +[Zipkin](https://zipkin.io/) is an open-source distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in microservice architectures. It manages both the collection and lookup of this data. The following steps show you how to configure the [Radius control plane]({{< ref architecture-concept >}}) components to send distributed tracing data to Zipkin running as a container in your Kubernetes cluster and how to view the data. @@ -24,7 +24,7 @@ The following steps show you how to configure the [Radius control plane]({{< ref kubectl create namespace radius-monitoring ``` -2. Deploy the Zipkin deployment and service: +1. Deploy the Zipkin deployment and service: ```bash kubectl create deployment zipkin --image openzipkin/zipkin -n radius-monitoring @@ -52,11 +52,11 @@ The following steps show you how to configure the [Radius control plane]({{< ref kubectl port-forward svc/zipkin 9411:9411 -n radius-monitoring ``` -2. In your browser, go to [http://localhost:9411](http://localhost:9411) to see the Zipkin UI and run a query: +1. In your browser, go to [http://localhost:9411](http://localhost:9411) to see the Zipkin UI and run a query: {{< image src="zipkin_ui.png" alt="" style="width:100%" >}} -3. Done! You can now use the Zipkin UI to view tracing data for your Radius control plane. +1. Done! You can now use the Zipkin UI to view tracing data for your Radius control plane. ## References diff --git a/docs/content/guides/operations/groups/howto-resourcegroups/index.md b/docs/content/guides/operations/groups/howto-resourcegroups/index.md index 2f870c40c..7ff18769e 100644 --- a/docs/content/guides/operations/groups/howto-resourcegroups/index.md +++ b/docs/content/guides/operations/groups/howto-resourcegroups/index.md @@ -49,7 +49,7 @@ rad group show myGroup You should see: ``` -ID NAME +ID NAME /planes/radius/local/resourcegroups/myGroup myGroup ``` diff --git a/docs/content/guides/operations/kubernetes/kubernetes-install/index.md b/docs/content/guides/operations/kubernetes/kubernetes-install/index.md index e9dcb1617..21136dc34 100644 --- a/docs/content/guides/operations/kubernetes/kubernetes-install/index.md +++ b/docs/content/guides/operations/kubernetes/kubernetes-install/index.md @@ -34,15 +34,20 @@ 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 https://radius.azurecr.io/helm/v1/repo 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 ``` diff --git a/docs/content/guides/operations/kubernetes/kubernetes-metadata/index.md b/docs/content/guides/operations/kubernetes/kubernetes-metadata/index.md index f4f3c8310..e2c4d7755 100644 --- a/docs/content/guides/operations/kubernetes/kubernetes-metadata/index.md +++ b/docs/content/guides/operations/kubernetes/kubernetes-metadata/index.md @@ -65,7 +65,7 @@ Other extensions may set Kubernetes metadata. For example, the `daprSidecar` ext The order in which extensions are executed is as follows, from first to last: -1. Dapr sidecar extension +1. Dapr sidecar extension 1. Manual scale extension 1. Kubernetes metadata extension @@ -116,4 +116,4 @@ The labels & annotations were set based on the following: | `radapp.io/resource-type` | `applications.core-containers` | Radius-injected label | **Annotations** | `prometheus.io/port` | `9090` | Application annotation is applied -| `prometheus.io/scrape` | `true `| Application annotation is applied +| `prometheus.io/scrape` | `true`| Application annotation is applied diff --git a/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md b/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md index 600eb76d6..dc942e341 100644 --- a/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md +++ b/docs/content/guides/operations/kubernetes/kubernetes-upgrade/index.md @@ -9,12 +9,12 @@ categories: "How-To" Radius does not offer backward compatibility with previous releases. Breaking changes may happen between releases and we recommend doing a fresh installation of the latest version of Radius after every release. -## Step 1 : Delete any existing Radius Environments +## Step 1 : Delete any existing Radius Environments To delete any existing Radius Environments, run the following command: ```bash -rad env delete +rad env delete ``` ## Step 2: Uninstall the existing Radius control-plane diff --git a/docs/content/guides/operations/providers/howto-aws-provider/index.md b/docs/content/guides/operations/providers/howto-aws-provider/index.md index 341138bc8..e61f19ad2 100644 --- a/docs/content/guides/operations/providers/howto-aws-provider/index.md +++ b/docs/content/guides/operations/providers/howto-aws-provider/index.md @@ -9,6 +9,7 @@ tags: ["AWS"] --- The AWS provider allows you to deploy and connect to AWS resources from a Radius Environment on an EKS cluster. It can be configured: + - [Interactively via `rad init`](#interactive-configuration) - [Manually via `rad env update` and `rad credential register`](#manual-configuration) @@ -20,6 +21,7 @@ The AWS provider allows you to deploy and connect to AWS resources from a Radius ## Interactive configuration 1. Initialize a new environment with [`rad init --full`]({{< ref rad_init >}}): + ```bash rad init --full ``` @@ -32,17 +34,17 @@ The AWS provider allows you to deploy and connect to AWS resources from a Radius You should see the following output: ``` - Initializing Radius... - - ✅ Install Radius {{< param version >}} - - Kubernetes cluster: k3d-k3s-default - - Kubernetes namespace: radius-system - - AWS IAM access key ID: **** - ✅ Create new environment default - - Kubernetes namespace: default - - AWS: account ***** and region: us-west-2 - ✅ Scaffold application samples - ✅ Update local configuration + Initializing Radius... + + ✅ Install Radius {{< param version >}} + - Kubernetes cluster: k3d-k3s-default + - Kubernetes namespace: radius-system + - AWS IAM access key ID: **** + ✅ Create new environment default + - Kubernetes namespace: default + - AWS: account ***** and region: us-west-2 + ✅ Scaffold application samples + ✅ Update local configuration Initialization complete! Have a RAD time 😎 ``` @@ -50,13 +52,17 @@ The AWS provider allows you to deploy and connect to AWS resources from a Radius ## Manual configuration 1. Update your Radius Environment with your AWS region and AWS account ID: + ```bash rad env update myEnvironment --aws-region myAwsRegion --aws-account-id myAwsAccountId ``` + This command updates the configuration of an environment for properties that are able to be changed. For more information visit [`rad env update`]({{< ref rad_env_update >}}) -2. Add your AWS cloud provider credentials: +1. Add your AWS cloud provider credentials: + ```bash rad credential register aws --access-key-id myAccessKeyId --secret-access-key mySecretAccessKey ``` + For more information on the command arguments visit [`rad credential register aws`]({{< ref rad_credential_register_aws >}}) diff --git a/docs/content/guides/operations/providers/howto-azure-provider/index.md b/docs/content/guides/operations/providers/howto-azure-provider/index.md index e1a62e13f..d55b95f9b 100644 --- a/docs/content/guides/operations/providers/howto-azure-provider/index.md +++ b/docs/content/guides/operations/providers/howto-azure-provider/index.md @@ -9,6 +9,7 @@ tags: ["Azure"] --- The Azure provider allows you to deploy and connect to Azure resources from a self-hosted Radius Environment. It can be configured: + - [Interactively via `rad init`](#interactive-configuration) - [Manually via `rad env update` and `rad credential register`](#manual-configuration) @@ -21,6 +22,7 @@ The Azure provider allows you to deploy and connect to Azure resources from a se ## Interactive configuration 1. Initialize a new environment with [`rad init --full`]({{< ref rad_init >}}): + ```bash rad init --full ``` @@ -29,6 +31,7 @@ The Azure provider allows you to deploy and connect to Azure resources from a se - **Namespace** - The Kubernetes namespace where your application containers and networking resources will be deployed (different than the Radius control-plane namespace, `radius-system`) - **Add an Azure provider** - Pick the subscription and resource group to deploy your Azure resources to Run `az ad sp create-for-rbac` to create a Service Principal without a role assignment and obtain your `appId`, `displayName`, `password`, and `tenant` information. + ``` { "appId": "****", @@ -38,26 +41,27 @@ The Azure provider allows you to deploy and connect to Azure resources from a se } ``` Enter the `appId`, `password`, and `tenant` information when prompted. + - **Environment name** - The name of the environment to create You should see the following output: ``` - Initializing Radius... - - ✅ Install Radius {{< param version >}} - - Kubernetes cluster: k3d-k3s-default - - Kubernetes namespace: radius-system - - Azure service principal: **** - ✅ Create new environment default - - Kubernetes namespace: default - - Azure: subscription ***** and resource group *** - ✅ Scaffold application samples - ✅ Update local configuration + Initializing Radius... + + ✅ Install Radius {{< param version >}} + - Kubernetes cluster: k3d-k3s-default + - Kubernetes namespace: radius-system + - Azure service principal: **** + ✅ Create new environment default + - Kubernetes namespace: default + - Azure: subscription ***** and resource group *** + ✅ Scaffold application samples + ✅ Update local configuration Initialization complete! Have a RAD time 😎 ``` - + ## Manual configuration 1. Use [`rad env update`]({{< ref rad_env_update >}}) to update your Radius Environment with your Azure subscription ID and Azure resource group: @@ -66,7 +70,7 @@ The Azure provider allows you to deploy and connect to Azure resources from a se rad env update myEnvironment --azure-subscription-id myAzureSubscriptionId --azure-resource-group myAzureResourceGroup ``` -2. Run `az ad sp create-for-rbac` to create a Service Principal without a role assignment and obtain your `appId`, `displayName`, `password`, and `tenant` information. +1. Run `az ad sp create-for-rbac` to create a Service Principal without a role assignment and obtain your `appId`, `displayName`, `password`, and `tenant` information. ``` { @@ -78,8 +82,10 @@ The Azure provider allows you to deploy and connect to Azure resources from a se ``` -3. Use [`rad credential register azure`]({{< ref rad_credential_register_azure >}}) to add the Azure service principal to your Radius installation: +1. Use [`rad credential register azure`]({{< ref rad_credential_register_azure >}}) to add the Azure service principal to your Radius installation: + ```bash rad credential register azure --client-id myClientId --client-secret myClientSecret --tenant-id myTenantId ``` + Radius will use the provided service principal for all interactions with Azure, including Bicep and Recipe deployments. diff --git a/docs/content/guides/operations/workspaces/howto-workspaces/index.md b/docs/content/guides/operations/workspaces/howto-workspaces/index.md index ebc6802e8..f2f1b74a9 100644 --- a/docs/content/guides/operations/workspaces/howto-workspaces/index.md +++ b/docs/content/guides/operations/workspaces/howto-workspaces/index.md @@ -17,35 +17,50 @@ categories: "How-To" When you have multiple environments initialized for different purposes workspaces enable you to switch between different environments easily. You can create separate workspaces and switch between them as you are working through your deployment lifecycle. 1. Install the Radius control plane on kubernetes cluster + ```sh rad install kubernetes ``` -1. Create a resource group named `myworkspace` using [`rad group create`]({{< ref rad_group_create >}}): + +1. Create a resource group named `mygroup` using [`rad group create`]({{< ref rad_group_create >}}): + ```sh - rad group create myworkspace + rad group create mygroup ``` -1. Create an environment named `myworkspace` using [`rad env create`]({{< ref rad_env_create >}}): + +1. Create an environment named `myenvironment` using [`rad env create`]({{< ref rad_env_create >}}): + ```sh - rad env create myworkspace + rad env create myenvironment ``` + 1. Create a workspace named `myworkspace` using [`rad workspace create`]({{< ref rad_workspace_create >}}): - ```sh - rad workspace create kubernetes myworkspace --group myworkspace --environment myworkspace + + ```sh + rad workspace create kubernetes myworkspace --group mygroup --environment myenvironment ``` + Radius writes the workspace details to your local configuration file (`~/.rad/config.yaml` on Linux and macOS, `%USERPROFILE%\.rad\config.yaml` on Windows). -1. Create another resource group named `yourworkspace` using [`rad group create`]({{< ref rad_group_create >}}): +1. Create another resource group named `yourgroup` using [`rad group create`]({{< ref rad_group_create >}}): + ```sh - rad group create yourworkspace + rad group create yourgroup ``` -1. Create an environment named `yourworkspace` using [`rad env create`]({{< ref rad_env_create >}}): + +1. Create an environment named `yourenvironment` using [`rad env create`]({{< ref rad_env_create >}}): + ```sh - rad env create yourworkspace + rad env create yourenvironment ``` + 1. Create a workspace named `yourworkspace` using [`rad workspace create`]({{< ref rad_workspace_create >}}): - ```sh - rad workspace create kubernetes yourworkspace --group yourworkspace --environment yourworkspace + + ```sh + rad workspace create kubernetes yourworkspace --group yourgroup --environment yourenvironment ``` + 1. Verify your `config.yaml` file. It should show both `myworkspace` and `yourworkspace` workspaces, with your environments: + ```yaml workspaces: default: yourworkspace @@ -54,15 +69,16 @@ When you have multiple environments initialized for different purposes workspace connection: context: mycluster kind: kubernetes - environment: /planes/radius/local/resourcegroups/yourworkspace - /providers/applications.core/environments/yourworkspace - scope: /planes/radius/local/resourceGroups/yourworkspace + environment: /planes/radius/local/resourcegroups/yourgroup + /providers/applications.core/environments/yourenvironment + scope: /planes/radius/local/resourceGroups/yourgroup myworkspace: connection: context: mycluster kind: kubernetes - environment: /planes/radius/local/resourcegroups/myworkspace - /providers/applications.core/environments/myworkspace - scope: /planes/radius/local/resourceGroups/myworkspace + environment: /planes/radius/local/resourcegroups/mygroup + /providers/applications.core/environments/myenvironment + scope: /planes/radius/local/resourceGroups/mygroup ``` + 1. You can now deploy applications to both myworkspace and yourworkspace using [`rad deploy`]({{< ref rad_deploy >}}), specifying the `-w` flag. diff --git a/docs/content/guides/operations/workspaces/overview/index.md b/docs/content/guides/operations/workspaces/overview/index.md index 5400e10a3..ed2eb8f01 100644 --- a/docs/content/guides/operations/workspaces/overview/index.md +++ b/docs/content/guides/operations/workspaces/overview/index.md @@ -23,14 +23,16 @@ The following commands let you interact with Radius Environments: ```bash rad workspace init kubernetes ``` + {{% /codetab %}} {{% codetab %}} [rad workspace list]({{< ref rad_workspace_list >}}) lists all of the workspaces in your configuration file: ```bash -rad workspacae list +rad workspace list ``` + {{% /codetab %}} {{% codetab %}} @@ -39,6 +41,7 @@ rad workspacae list ```bash rad workspace show ``` + {{% /codetab %}} {{% codetab %}} @@ -47,6 +50,7 @@ rad workspace show ```bash rad workspace delete -w myenv ``` + {{% /codetab %}} {{% codetab %}} @@ -55,6 +59,7 @@ rad workspace delete -w myenv ```bash rad env switch -e myenv ``` + {{% /codetab %}} {{< /tabs >}} diff --git a/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes-main.tf b/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes-main.tf index 936060371..68308f203 100644 --- a/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes-main.tf +++ b/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes-main.tf @@ -35,7 +35,7 @@ resource "kubernetes_deployment" "redis" { spec { container { name = "redis" - image = "redis:6" + image = "redis:6" port { container_port = 6379 } diff --git a/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes.bicep b/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes.bicep index 27c1b6a6e..b8d1d2469 100644 --- a/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes.bicep +++ b/docs/content/guides/recipes/howto-author-recipes/snippets/redis-kubernetes.bicep @@ -75,7 +75,7 @@ resource svc 'core/Service@v1' = { output result object = { values: { host: '${svc.metadata.name}.${svc.metadata.namespace}.svc.cluster.local' - port: svc.spec.ports[0].port + port: svc.spec.ports[0].port username: '' } secrets: { diff --git a/docs/content/guides/recipes/howto-dev-recipes/index.md b/docs/content/guides/recipes/howto-dev-recipes/index.md index 053adf59a..69714be45 100644 --- a/docs/content/guides/recipes/howto-dev-recipes/index.md +++ b/docs/content/guides/recipes/howto-dev-recipes/index.md @@ -24,7 +24,7 @@ Local development environments created by the rad init command include a set of mkdir recipes cd recipes ``` -2. Initialize a new dev environment: +1. Initialize a new dev environment: ```bash rad init @@ -32,14 +32,14 @@ Local development environments created by the rad init command include a set of **Select 'No' when prompted to create an application.** -3. Use [`rad recipe list`]({{< ref rad_recipe_list >}}) to view the Recipes in your environment: +1. Use [`rad recipe list`]({{< ref rad_recipe_list >}}) to view the Recipes in your environment: ```bash rad recipe list ``` You should see a table of available Recipes: - + ``` NAME TYPE TEMPLATE KIND TEMPLATE VERSION TEMPLATE default Applications.Datastores/sqlDatabases bicep ghcr.io/radius-project/recipes/local-dev/sqldatabases:latest @@ -50,6 +50,7 @@ Local development environments created by the rad init command include a set of default Applications.Datastores/mongoDatabases bicep ghcr.io/radius-project/recipes/local-dev/mongodatabases:latest default Applications.Datastores/redisCaches bicep ghcr.io/radius-project/recipes/local-dev/rediscaches:latest ``` + > Visit the [Recipes repo](https://github.com/radius-project/recipes) to learn more about the definition of these `local-dev` recipe templates. When a Recipe is named "default" it will be used automatically when a resource doesn't specify a Recipe name. This makes it easy for applications to fully defer to the Environment for how to manage infrastructure. @@ -71,6 +72,7 @@ Note that no Recipe name is specified within 'db', so it will be using the defau ``` You should see the following output: + ``` Building app.bicep... Deploying template './app.bicep' for application 'local-dev-app' and environment 'default' from workspace 'default'... diff --git a/docs/content/guides/recipes/overview/index.md b/docs/content/guides/recipes/overview/index.md index 9d528831f..222288c4e 100644 --- a/docs/content/guides/recipes/overview/index.md +++ b/docs/content/guides/recipes/overview/index.md @@ -8,7 +8,7 @@ categories: "Overview" tags: ["recipes"] --- -Recipes enable a **separation of concerns** between infrastructure operators and developers by **automating infrastructure deployment**. Developers select the resource they want in their app (_Mongo Database, Redis Cache, Dapr State Store, etc._), and infrastructure operators codify in their environment how these resources should be deployed and configured (_lightweight containers, Azure resources, AWS resources, etc._). When a developer deploys their application and its resources, Recipes automatically deploy the backing infrastructure and bind it to the developer's resources. +Recipes enable a **separation of concerns** between IT operators and developers by **automating infrastructure deployment**. Developers select the resource they want in their app (_Mongo Database, Redis Cache, Dapr State Store, etc._), and IT operators codify in their environment how these resources should be deployed and configured (_lightweight containers, Azure resources, AWS resources, etc._). When a developer deploys their application and its resources, Recipes automatically deploy the backing infrastructure and bind it to the developer's resources. {{< image src="recipes.png" alt="Diagram showing developers adding Redis to their app and operators adding a Recipe that Redis should deploy an Azure Cache for Redis" width=700px >}} @@ -25,7 +25,7 @@ Recipes enable a **separation of concerns** between infrastructure operators and Recipes can be used in any environment, from dev to prod. You can run a default recipe registered in your environment or select the specific Recipe you want to run. To run a default recipe, simply add the resource you want to your app and omit the Recipe name: -{{< rad file="snippets/recipe-link-example.bicep" embed=true marker="//DEFAULT" >}} +{{< rad file="snippets/recipe-link-example.bicep" embed=true marker="//DEFAULT" >}} If you want to use a specific Recipe, you can specify the Recipe name in the `recipe` parameter: @@ -53,11 +53,11 @@ It's easy to author and register your own Recipes which define how to deploy and Recipes currently support the following resources. Support for additional resources is actively being worked on. -| Supported resources | +| Supported resources | |---------------------| -| [`Applications.Datastores/redisCaches`]({{< ref redis >}}) | +| [`Applications.Datastores/redisCaches`]({{< ref redis >}}) | | [`Applications.Datastores/mongoDatabases`]({{< ref mongodb >}}) | -| [`Applications.Datastores/sqlDatabases`]({{< ref microsoft-sql >}}) | +| [`Applications.Datastores/sqlDatabases`]({{< ref microsoft-sql >}}) | | [`Applications.Messaging/rabbitmqQueues`]({{< ref rabbitmq >}}) | | [`Applications.Dapr/stateStores`]({{< ref dapr-statestore >}}) | | [`Applications.Dapr/pubSubBrokers`]({{< ref dapr-pubsub >}}) | 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 index 6c0f359b2..005d5727e 100644 --- a/docs/content/guides/tooling/rad-cli/howto-rad-cli/index.md +++ b/docs/content/guides/tooling/rad-cli/howto-rad-cli/index.md @@ -8,4 +8,4 @@ categories: "How-To" tags: ["rad CLI", "Bicep"] --- -{{< read file= "/shared-content/installation/rad-cli/install-rad-cli.md" >}} \ No newline at end of file +{{< 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 index 6cfd8f96d..1dfbb1e50 100644 --- a/docs/content/guides/tooling/rad-cli/overview/index.md +++ b/docs/content/guides/tooling/rad-cli/overview/index.md @@ -63,7 +63,7 @@ export RADIUS_INSTALL_DIR=~/ By default, the rad CLI installation script installs the rad CLI to `%LOCALAPPDATA%\radius\rad.exe` {{% /codetab %}} - + {{< /tabs >}} ### Configuration location @@ -79,12 +79,11 @@ The rad CLI stores configuration under `~/.rad` {{% codetab %}} The rad CLI stores configuration under `%USERPROFILE%\rad` {{% /codetab %}} - -{{< /tabs >}} +{{< /tabs >}} ## 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" >}} \ No newline at end of file +{{< button text="Reference docs" page="/reference/cli" >}} diff --git a/docs/content/reference/api/_index.md b/docs/content/reference/api/_index.md index dca1163fc..f1e396299 100644 --- a/docs/content/reference/api/_index.md +++ b/docs/content/reference/api/_index.md @@ -4,6 +4,4 @@ title: "Radius API reference" linkTitle: "Radius API" description: "Detailed reference documentation on the Radius API" weight: 400 ---- - -## API resource policies +--- \ No newline at end of file diff --git a/docs/content/reference/api/applications.dapr/_index.md b/docs/content/reference/api/applications.dapr/_index.md index dcfa31daa..71ec52145 100644 --- a/docs/content/reference/api/applications.dapr/_index.md +++ b/docs/content/reference/api/applications.dapr/_index.md @@ -3,6 +3,4 @@ type: docs title: "Applications.Dapr API reference" linkTitle: "Applications.Dapr" description: "Detailed reference documentation on the Applications.Dapr API" ---- - -{{< redoc "swagger/specification/applications/resource-manager/Applications.Dapr/preview/2023-10-01-preview/openapi.json" >}} +--- \ No newline at end of file diff --git a/docs/content/reference/api/applications.datastores/_index.md b/docs/content/reference/api/applications.datastores/_index.md index 997dfb13e..3d85d35be 100644 --- a/docs/content/reference/api/applications.datastores/_index.md +++ b/docs/content/reference/api/applications.datastores/_index.md @@ -5,4 +5,3 @@ linkTitle: "Applications.Datastores" description: "Detailed reference documentation on the Applications.Datastores API" --- -{{< redoc "swagger/specification/applications/resource-manager/Applications.Datastores/preview/2023-10-01-preview/openapi.json" >}} diff --git a/docs/content/reference/api/applications.messaging/_index.md b/docs/content/reference/api/applications.messaging/_index.md index 9eae15c61..2a8955814 100644 --- a/docs/content/reference/api/applications.messaging/_index.md +++ b/docs/content/reference/api/applications.messaging/_index.md @@ -4,5 +4,3 @@ title: "Applications.Messaging API reference" linkTitle: "Applications.Messaging" description: "Detailed reference documentation on the Applications.Messaging API" --- - -{{< redoc "swagger/specification/applications/resource-manager/Applications.Messaging/preview/2023-10-01-preview/openapi.json" >}} diff --git a/docs/content/reference/api/resource-policies/_index.md b/docs/content/reference/api/resource-policies/index.md similarity index 96% rename from docs/content/reference/api/resource-policies/_index.md rename to docs/content/reference/api/resource-policies/index.md index bcceebe1f..bab2d90da 100644 --- a/docs/content/reference/api/resource-policies/_index.md +++ b/docs/content/reference/api/resource-policies/index.md @@ -33,7 +33,7 @@ The default timeout times are listed below but be aware that the asynchronous ti Each resource type controller decides whether it will retry to process the operation when it fails, but the current async operation controller immediately marks any errors as a `Failed` operation except for the following scenario: - Panic happens while processing the async operation by code defect (retry once, then mark the operation Failed) -- RP process exits by unexpected process crashes (such as node failure, memory leak) and redeploying Radius. (retry once , then mark the operation Failed) +- Resource provider process exits by unexpected process crashes (such as node failure, memory leak) and redeploying Radius. (retry once , then mark the operation Failed) #### Applications.Core resource provider @@ -59,7 +59,6 @@ Each resource type controller decides whether it will retry to process the opera | Applications.Dapr/stateStores | LIST/GET/PUT/PATCH/DELETE | Synchronous | default | | | Applications.Dapr/stateStores | POST ListSecret | Synchronous | default | | - #### Applications.Datastores resource providers | Resource Type | Operation | API Type | Server Timeout (Seconds) | Async Operation retry condition| diff --git a/docs/content/reference/cli/_index.md b/docs/content/reference/cli/_index.md index 1e3b7e7de..342cc9be7 100644 --- a/docs/content/reference/cli/_index.md +++ b/docs/content/reference/cli/_index.md @@ -4,6 +4,4 @@ title: "Radius CLI reference" linkTitle: "rad CLI" description: "Detailed reference documentation on the Radius CLI" weight: 100 ---- - -## Available commands +--- \ No newline at end of file diff --git a/docs/content/reference/limitations.md b/docs/content/reference/limitations.md index c6d3eb56f..4e882b6f8 100644 --- a/docs/content/reference/limitations.md +++ b/docs/content/reference/limitations.md @@ -39,7 +39,7 @@ See [app name constraints]({{< ref "resource-schema.md#common-values" >}}) for m ### Application and resource names are lower-cased after deployment After deploying an application with application name `AppNAME` and container name `CONTAINERname`, casing information about the casing is lost, resulting in names to be lower-cased. The result is: - + ```bash rad application list RESOURCE TYPE @@ -118,5 +118,3 @@ Some of the [AWS resource types](/resource-schema/aws) are 'non-idempotent', thi We are currently building support for non-idempotent resources in Radius. Please like and comment on this [this issue](https://github.com/radius-project/radius/issues/6227) if you are interested in the same. As a workaround, you can try using [Terraform Recipes]({{< ref "/guides/recipes/overview" >}}) to deploy and manage those non-idempotent resource types. - - diff --git a/docs/content/reference/resource-schema/_index.md b/docs/content/reference/resource-schema/_index.md index c4c19f48e..1ae5f2338 100644 --- a/docs/content/reference/resource-schema/_index.md +++ b/docs/content/reference/resource-schema/_index.md @@ -5,59 +5,3 @@ linkTitle: "Resource schemas" description: "Schema docs for the resources that can comprise a Radius Application" weight: 300 --- - -## Common values - -The following properties and values are available across all Radius resources: - -| Key | Required | Description | Example | -|------|:--------:|-------------|---------| -| name | y | The name of your resource. | `mycontainer` -| location | y | The location of your resource. See [below](#location) for more information. The rad CLI defaults the value to 'global' for Radius resources. Direct API calls require `location` to be set to `'global'`. | `global` -| environment | y | The environment used by your resources for deployment. | `environment` | - -### Name - -The name of the resource defines how to address the resource within the context of the application. - -#### Naming constraints - -Radius resource names follow the DNS-1035 naming convention. This, plus other control-plane requirements, result in resource names that must: - -- Contain at most 63 user-entered characters -- Contain only alphanumeric characters or '-' -- Start with an alphabetic character -- End with an alphanumeric character - -#### Rendered names - -The combination of the resource name and application name results in the rendered resource name in a self-hosted Kubernetes environment. The resource group name and resource name also result in the full Universal Control Plane (UCP) identifier of the resource. - -For example, take the following values: - -- **Resource name:** `mycontainer` -- **Application name:** `myapp` -- **Resource group name:** `myrg` - -The resulting names are: - -- **Rendered Kubernetes pod name:** `myapp-mycontainer` -- **Universal Control Plane (UCP) ID:** `/planes/local/resourcegroups/myrg/providers/Applications.Core/containers/mycontainer` - -### Location - -The location property defines where to deploy a resource within the targeted platform. - -For self-hosted environments, the location property is defaulted to `global` by the rad CLI to indicate the resource is scoped to the entire underlying cluster. Direct API calls require `location` to be set to `'global'`. This is a point-in-time implementation that will be revisited in a future revision of self-hosted Kubernetes environments. - -### Environment parameter - -The `environment` string parameter is automatically injected into your Bicep template using the environment ID value specified in your default [workspace]({{< ref workspaces >}}). This value can also be overridden with the rad CLI: `rad deploy --params environment="/planes/radius/..."`. - -To access the auto-injected value, specify an `environment` string parameter in your Bicep file: - -```bicep -param environment string -``` - -## Resource categories diff --git a/docs/content/reference/resource-schema/aws/index.md b/docs/content/reference/resource-schema/aws/index.md index 995997ca7..49b8cb51a 100644 --- a/docs/content/reference/resource-schema/aws/index.md +++ b/docs/content/reference/resource-schema/aws/index.md @@ -6,7 +6,7 @@ description: "Learn about the supported AWS resource types in Radius" categories: "Schema" --- -Radius supports AWS resource types that are supported by the [AWS Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html) +Radius supports AWS resource types that are supported by the [AWS Cloud Control API](https://docs.aws.amazon.com/cloudcontrolapi/latest/userguide/what-is-cloudcontrolapi.html). Following table lists the resource types that are currently supported and the limitations for each of the resource types. diff --git a/docs/content/reference/resource-schema/azure/index.md b/docs/content/reference/resource-schema/azure/index.md new file mode 100644 index 000000000..4c40c860a --- /dev/null +++ b/docs/content/reference/resource-schema/azure/index.md @@ -0,0 +1,8 @@ +--- +type: docs +title: "Supported Azure resources" +linkTitle: "Supported Azure resources " +manualLink: "https://learn.microsoft.com/azure/templates/" +manualLinkTarget: _blank +categories: "Schema" +--- diff --git a/docs/content/reference/resource-schema/cache/_index.md b/docs/content/reference/resource-schema/cache/_index.md index 75bb893b3..245b6c236 100644 --- a/docs/content/reference/resource-schema/cache/_index.md +++ b/docs/content/reference/resource-schema/cache/_index.md @@ -3,5 +3,5 @@ type: docs title: "Cache links" linkTitle: "Cache" description: "Learn what cache links are available in your application" -weight: 300 +weight: 400 --- diff --git a/docs/content/reference/resource-schema/core-schema/_index.md b/docs/content/reference/resource-schema/core-schema/_index.md index cdc09708c..e13d22b42 100644 --- a/docs/content/reference/resource-schema/core-schema/_index.md +++ b/docs/content/reference/resource-schema/core-schema/_index.md @@ -3,7 +3,5 @@ type: docs title: "Core resource schemas" linkTitle: "Core" description: "Reference the schemas of the core Radius resources" -weight: 100 ---- - -## Core resources +weight: 200 +--- \ No newline at end of file diff --git a/docs/content/reference/resource-schema/core-schema/application-schema/_index.md b/docs/content/reference/resource-schema/core-schema/application-schema/index.md similarity index 100% rename from docs/content/reference/resource-schema/core-schema/application-schema/_index.md rename to docs/content/reference/resource-schema/core-schema/application-schema/index.md diff --git a/docs/content/reference/resource-schema/core-schema/container-schema/_index.md b/docs/content/reference/resource-schema/core-schema/container-schema/index.md similarity index 100% rename from docs/content/reference/resource-schema/core-schema/container-schema/_index.md rename to docs/content/reference/resource-schema/core-schema/container-schema/index.md diff --git a/docs/content/reference/resource-schema/core-schema/environment-schema/index.md b/docs/content/reference/resource-schema/core-schema/environment-schema/index.md index 2e9f8bcf6..e1041b2af 100644 --- a/docs/content/reference/resource-schema/core-schema/environment-schema/index.md +++ b/docs/content/reference/resource-schema/core-schema/environment-schema/index.md @@ -24,6 +24,7 @@ weight: 000 |------|:--------:|-------------|---------| | [compute](#compute) | y | Container runtime configuration. | [See below](#compute) | [recipes](#recipes) | n | Recipes registered to the environment | [See below](#recipes) +| simulated | n | When enabled, a simulated environment will not deploy any output resources or run any Recipes when an application is deployed. This is useful for dry runs or testing. Defaults to `false`. | `true` ### compute diff --git a/docs/content/reference/resource-schema/core-schema/extender/_index.md b/docs/content/reference/resource-schema/core-schema/extender/index.md similarity index 100% rename from docs/content/reference/resource-schema/core-schema/extender/_index.md rename to docs/content/reference/resource-schema/core-schema/extender/index.md diff --git a/docs/content/reference/resource-schema/core-schema/extender/snippets/extender-recipe.bicep b/docs/content/reference/resource-schema/core-schema/extender/snippets/extender-recipe.bicep index 9723169f8..8b436cbe9 100644 --- a/docs/content/reference/resource-schema/core-schema/extender/snippets/extender-recipe.bicep +++ b/docs/content/reference/resource-schema/core-schema/extender/snippets/extender-recipe.bicep @@ -30,6 +30,3 @@ resource publisher 'Applications.Core/containers@2023-10-01-preview' = { } } } - - - diff --git a/docs/content/reference/resource-schema/core-schema/gateway/snippets/gateway.bicep b/docs/content/reference/resource-schema/core-schema/gateway/snippets/gateway.bicep index eefc5fa15..0af5ade47 100644 --- a/docs/content/reference/resource-schema/core-schema/gateway/snippets/gateway.bicep +++ b/docs/content/reference/resource-schema/core-schema/gateway/snippets/gateway.bicep @@ -16,7 +16,7 @@ resource gateway 'Applications.Core/gateways@2023-10-01-preview' = { application: app.id hostname: { // Omitting hostname properties results in gatewayname.appname.PUBLIC_HOSTNAME_OR_IP.nip.io - + // Results in prefix.appname.PUBLIC_HOSTNAME_OR_IP.nip.io prefix: 'prefix' // Alternately you can specify your own hostname that you've configured externally diff --git a/docs/content/reference/resource-schema/core-schema/secretstore/_index.md b/docs/content/reference/resource-schema/core-schema/secretstore/index.md similarity index 100% rename from docs/content/reference/resource-schema/core-schema/secretstore/_index.md rename to docs/content/reference/resource-schema/core-schema/secretstore/index.md diff --git a/docs/content/reference/resource-schema/core-schema/volumes/_index.md b/docs/content/reference/resource-schema/core-schema/volumes/_index.md index 90c4f26d8..fec6ee37f 100644 --- a/docs/content/reference/resource-schema/core-schema/volumes/_index.md +++ b/docs/content/reference/resource-schema/core-schema/volumes/_index.md @@ -3,10 +3,4 @@ type: docs title: "Radius Volumes" linkTitle: "Volumes" description: "Learn about Radius volumes" ---- - -A Radius volume allows you to model an outside resource as a volume that can be mounted to one or more containers. It has a lifecycle that is separate from the container lifecycle, ensuring that data is persisted across container restarts and mounts. - -Refer to the [container docs]({{< ref container-schema >}}) to learn how to mount a volume to a container. - -## Supported resources +--- \ No newline at end of file diff --git a/docs/content/reference/resource-schema/core-schema/volumes/volume-azure-keyvault/snippets/volume-keyvault.bicep b/docs/content/reference/resource-schema/core-schema/volumes/volume-azure-keyvault/snippets/volume-keyvault.bicep index 33cb3da31..9618054c6 100644 --- a/docs/content/reference/resource-schema/core-schema/volumes/volume-azure-keyvault/snippets/volume-keyvault.bicep +++ b/docs/content/reference/resource-schema/core-schema/volumes/volume-azure-keyvault/snippets/volume-keyvault.bicep @@ -46,8 +46,8 @@ resource volume 'Applications.Core/volumes@2023-10-01-preview' = { name: 'cert1' // required version: '1' // optional, defaults to latest version alias: 'certificatealias' // optional, defaults to certificate name (mycertificate) - encoding: 'base64' // optional, defaults to utf-8 - certType: 'privatekey' // optional, defaults to utf-8 + encoding: 'base64' // optional, defaults to utf-8, only available when value is privatekey + value: 'privatekey' // required format: 'pem' // optional, defaults to pfx } } diff --git a/docs/content/reference/resource-schema/dapr-schema/dapr-pubsub/_index.md b/docs/content/reference/resource-schema/dapr-schema/dapr-pubsub/index.md similarity index 100% rename from docs/content/reference/resource-schema/dapr-schema/dapr-pubsub/_index.md rename to docs/content/reference/resource-schema/dapr-schema/dapr-pubsub/index.md diff --git a/docs/content/reference/resource-schema/dapr-schema/dapr-secretstore/_index.md b/docs/content/reference/resource-schema/dapr-schema/dapr-secretstore/index.md similarity index 100% rename from docs/content/reference/resource-schema/dapr-schema/dapr-secretstore/_index.md rename to docs/content/reference/resource-schema/dapr-schema/dapr-secretstore/index.md diff --git a/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/_index.md b/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/index.md similarity index 100% rename from docs/content/reference/resource-schema/dapr-schema/dapr-statestore/_index.md rename to docs/content/reference/resource-schema/dapr-schema/dapr-statestore/index.md diff --git a/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/snippets/dapr-statestore-recipe.bicep b/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/snippets/dapr-statestore-recipe.bicep index d19dfc521..7726cc1c6 100644 --- a/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/snippets/dapr-statestore-recipe.bicep +++ b/docs/content/reference/resource-schema/dapr-schema/dapr-statestore/snippets/dapr-statestore-recipe.bicep @@ -26,7 +26,7 @@ resource myapp 'Applications.Core/containers@2023-10-01-preview' = { ] } } - + //SAMPLE resource statestore 'Applications.Dapr/stateStores@2023-10-01-preview' = { name: 'statestore' @@ -44,4 +44,3 @@ resource statestore 'Applications.Dapr/stateStores@2023-10-01-preview' = { } } //SAMPLE - diff --git a/docs/content/reference/resource-schema/databases/_index.md b/docs/content/reference/resource-schema/databases/_index.md index b78dfcb05..cb6a0cd1d 100644 --- a/docs/content/reference/resource-schema/databases/_index.md +++ b/docs/content/reference/resource-schema/databases/_index.md @@ -3,5 +3,5 @@ type: docs title: "Database links" linkTitle: "Databases" description: "Learn what database resources are available in your application" -weight: 200 +weight: 300 --- diff --git a/docs/content/reference/resource-schema/messaging/_index.md b/docs/content/reference/resource-schema/messaging/_index.md index 7a75d04bf..e94651a91 100644 --- a/docs/content/reference/resource-schema/messaging/_index.md +++ b/docs/content/reference/resource-schema/messaging/_index.md @@ -3,5 +3,5 @@ type: docs title: "Messaging" linkTitle: "Messaging" description: "Learn what messaging resources are available in your application" -weight: 400 +weight: 500 --- diff --git a/docs/content/reference/resource-schema/overview/index.md b/docs/content/reference/resource-schema/overview/index.md new file mode 100644 index 000000000..258e02139 --- /dev/null +++ b/docs/content/reference/resource-schema/overview/index.md @@ -0,0 +1,62 @@ +--- +type: docs +title: "Overview: Resource schemas" +linkTitle: "Overview" +description: "Schema docs for the resources that can comprise a Radius Application" +categories: "Overview" +weight: 100 +--- + +## Common values + +The following properties and values are available across all Radius resources: + +| Key | Required | Description | Example | +|------|:--------:|-------------|---------| +| name | y | The name of your resource. | `mycontainer` +| location | y | The location of your resource. See [below](#location) for more information. The rad CLI defaults the value to 'global' for Radius resources. Direct API calls require `location` to be set to `'global'`. | `global` +| environment | y | The environment used by your resources for deployment. | `environment` | + +### Name + +The name of the resource defines how to address the resource within the context of the application. + +#### Naming constraints + +Radius resource names follow the DNS-1035 naming convention. This, plus other control-plane requirements, result in resource names that must: + +- Contain at most 63 user-entered characters +- Contain only alphanumeric characters or '-' +- Start with an alphabetic character +- End with an alphanumeric character + +#### Rendered names + +The combination of the resource name and application name results in the rendered resource name in a self-hosted Kubernetes environment. The resource group name and resource name also result in the full Universal Control Plane (UCP) identifier of the resource. + +For example, take the following values: + +- **Resource name:** `mycontainer` +- **Application name:** `myapp` +- **Resource group name:** `myrg` + +The resulting names are: + +- **Rendered Kubernetes pod name:** `myapp-mycontainer` +- **Universal Control Plane (UCP) ID:** `/planes/local/resourcegroups/myrg/providers/Applications.Core/containers/mycontainer` + +### Location + +The location property defines where to deploy a resource within the targeted platform. + +For self-hosted environments, the location property is defaulted to `global` by the rad CLI to indicate the resource is scoped to the entire underlying cluster. Direct API calls require `location` to be set to `'global'`. This is a point-in-time implementation that will be revisited in a future revision of self-hosted Kubernetes environments. + +### Environment parameter + +The `environment` string parameter is automatically injected into your Bicep template using the environment ID value specified in your default [workspace]({{< ref workspaces >}}). This value can also be overridden with the rad CLI: `rad deploy --params environment="/planes/radius/..."`. + +To access the auto-injected value, specify an `environment` string parameter in your Bicep file: + +```bicep +param environment string +``` diff --git a/docs/content/tutorials/eshop/_index.md b/docs/content/tutorials/eshop/_index.md index 8d62f42d1..bdb3a4457 100644 --- a/docs/content/tutorials/eshop/_index.md +++ b/docs/content/tutorials/eshop/_index.md @@ -26,7 +26,7 @@ eShop on Containers uses a microservice oriented architecture implementation wit [Deploying eShop without Radius](https://github.com/dotnet-architecture/eShopOnContainers/tree/dev/deploy/k8s) requires deploying a cluster and the backing infrastructure, configuring multiple CLIs and tools, running deployment scripts, and manually copying/pasting credentials and endpoints. -eShop provides instructions to [deploy to Azure](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploying-Azure-resources) or to [deploy to an AKS cluster](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)) (and even to [deploy to AKS using ARM/Bicep templates](https://github.com/Azure/bicep/tree/main/docs/examples/101/aks)). +eShop provides instructions to [deploy to Azure](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploying-Azure-resources) or to [deploy to an AKS cluster](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)) (and even to [deploy to AKS using ARM/Bicep templates](https://github.com/Azure/bicep/tree/main/docs/examples/101/aks)). Once the cluster and infrastructure resources are deployed, you can [deploy the eShop application using Helm charts and PowerShell](https://github.com/dotnet-architecture/eShopOnContainers/wiki/Deploy-to-Azure-Kubernetes-Service-(AKS)#install-eshoponcontainers-using-helm). @@ -40,4 +40,4 @@ Adding Radius to the eShop on containers application allows teams to: {{< button text="View eShop sample" githubRepo="samples" githubPath="samples/eshop" color="success" size="btn-lg" >}} -*Visit the [GitHub docs]({{< ref github >}}) if you need access to the organization* \ No newline at end of file +*Visit the [GitHub docs]({{< ref github >}}) if you need access to the organization* diff --git a/docs/content/tutorials/helm/index.md b/docs/content/tutorials/helm/index.md index 33343bc59..cf6bf170d 100644 --- a/docs/content/tutorials/helm/index.md +++ b/docs/content/tutorials/helm/index.md @@ -108,11 +108,11 @@ rad init {{< alert title="💡 Redis" color="info" >}} For now you're not going to actually deploy Redis and the URL in this step is fake. You will deploy Redis using a Recipe later in the tutorial that will replace the fake URL contained within `redis-secret` with an actual container and URL.{{< /alert >}} -2. Complete these steps by running the following commands: +1. Complete these steps by running the following commands: ```bash kubectl create namespace demo - kubectl create secret generic --namespace demo --from-literal=url=redis://fake-server redis-secret + kubectl create secret generic --namespace demo --from-literal=url=redis://fake-server redis-secret helm upgrade demo ./Chart -n demo --install ``` @@ -122,7 +122,7 @@ rad init > kubectl create namespace demo namespace/demo created - > kubectl create secret generic --namespace demo --from-literal=url=redis://fake-server redis-secret + > kubectl create secret generic --namespace demo --from-literal=url=redis://fake-server redis-secret secret/redis-secret created > helm upgrade demo ./Chart -n demo --install @@ -137,7 +137,7 @@ rad init {{< alert title="⚠️ Chart Directory" color="warning" >}} If you see an error message like **Error: path "./Chart" not found** then you are in the wrong directory. Make sure your terminal is in the `./demo` directory of the `samples` repository.{{< /alert >}} -3. Run the following command to check if everything is running: +1. Run the following command to check if everything is running: ```bash kubectl get all -n demo @@ -198,7 +198,7 @@ From here you will go through a series of steps to incrementally add more Radius Adding the `radapp.io/enabled: 'true'` annotation enables Radius for the deployment. -2. Save the file after you have made the edits and deploy the application again using Helm. Since the namespace and secret have already been created, we only need to run the `helm` command. +1. Save the file after you have made the edits and deploy the application again using Helm. Since the namespace and secret have already been created, we only need to run the `helm` command. ```bash helm upgrade demo ./Chart -n demo --install @@ -219,7 +219,7 @@ From here you will go through a series of steps to incrementally add more Radius You should confirm that your output contains `REVISION: 2`, that means that the changes were applied. -3. Run the following command to confirm that everything is running: +1. Run the following command to confirm that everything is running: ```bash kubectl get all -n demo @@ -241,7 +241,7 @@ From here you will go through a series of steps to incrementally add more Radius Notice that the `AGE` of `pod/webapp-...` reflects the time of your **first** deployment. Enabling Radius for an application does not change any of its behaviors, so Kubernetes did not need to restart the container. -4. Now that Radius has been enabled, run this command to display the state of the Radius application: +1. Now that Radius has been enabled, run this command to display the state of the Radius application: ```bash rad app graph -a demo -g default-demo @@ -297,11 +297,11 @@ In this step you will: {{< alert title="💡 Recipes" color="info" >}} Radius includes Recipes for local development when you use `rad init`. These [**local-dev**](https://github.com/radius-project/recipes/tree/main/local-dev) Recipes run popular OSS technologies as containerized infrastructure without requiring a cloud account. - + In a production environment you can substitute recipes that will create cloud or on-premises dependencies instead. {{< /alert >}} -2. Make sure the `app.yaml` file from `./demo/Chart/templates/app.yaml` is open in your editor. At the bottom of the file add the following text, including the `---`: +1. Make sure the `app.yaml` file from `./demo/Chart/templates/app.yaml` is open in your editor. At the bottom of the file add the following text, including the `---`: ```yaml --- @@ -320,7 +320,7 @@ In this step you will: - The `.spec.type` field defines the type of resource to create. `Applications.Datastores/redisCaches` is the type for a Redis Cache. - The `.spec.secretName` field tells Radius where to store connection information. This is optional, and should be used to interoperate with other Kubernetes technologies that read from secrets. This tutorial example uses the secret to populate an environment variable. -3. Save the file after you have made the edits and deploy the application again using Helm. Since the namespace and secret have already been created, you only need to run the `helm` command. +1. Save the file after you have made the edits and deploy the application again using Helm. Since the namespace and secret have already been created, you only need to run the `helm` command. ```bash helm upgrade demo ./Chart -n demo --install @@ -341,7 +341,7 @@ In this step you will: This time you should see `REVISION: 3`. -4. Now that you are using a Recipe, you should see more resources running in Kubernetes. Run the following command: +1. Now that you are using a Recipe, you should see more resources running in Kubernetes. Run the following command: ```bash kubectl get all -n demo @@ -374,7 +374,7 @@ In this step you will: {{< alert title="⚠️ Missing resources" color="warning" >}} If you do not see the additional resources starting with `redis-` then it's likely they are in a different Kubernetes namespace. Run `kubectl get all -A` to see everything.{{< /alert >}} -5. Now that you have added a Recipe, run this command to display the state of the Radius application: +1. Now that you have added a Recipe, run this command to display the state of the Radius application: ```bash rad app graph -a demo -g default-demo @@ -406,7 +406,7 @@ In this step you will: The Redis Cache created by the recipe is visible as part of the application. You can also see the `Resources` created in Kubernetes that make up the Redis Cache. In a previous step you saw these listed by `kubectl`. Since Radius deployed the Recipe, it knows that these resources *logically* are part of the Redis Cache in the application. -6. You can also see the contents of `redis-secret` as created by Radius. Run the following command: +1. You can also see the contents of `redis-secret` as created by Radius. Run the following command: ```bash kubectl get secret -n demo redis-secret -o yaml @@ -476,7 +476,7 @@ Make sure the `app.yaml` file from `./demo/Chart/templates/app.yaml` is open in Since you're using a connection called `redis`, Radius will automatically define the `CONNECTION_REDIS_URL` environment variable. The prefix of `CONNECTION_REDIS_` will be combined with each of the settings that you could see in the `redis-secret` secret in the previous step. -2. You can remove the manual definition of `CONNECTION_REDIS_URL` from `app.yaml` since Radius will provide it automatically. Find the `env` property and delete all of its contents. You can also remove `.spec.secretName` from the `Recipe`. +1. You can remove the manual definition of `CONNECTION_REDIS_URL` from `app.yaml` since Radius will provide it automatically. Find the `env` property and delete all of its contents. You can also remove `.spec.secretName` from the `Recipe`. The final contents of `app.yaml` should look like: @@ -513,7 +513,7 @@ Make sure the `app.yaml` file from `./demo/Chart/templates/app.yaml` is open in type: Applications.Datastores/redisCaches ``` -3. Save the file after you have made the edits and deploy the application again using Helm. +1. Save the file after you have made the edits and deploy the application again using Helm. ```bash helm upgrade demo ./Chart -n demo --install @@ -567,7 +567,7 @@ Make sure the `app.yaml` file from `./demo/Chart/templates/app.yaml` is open in Depending on the timing you may see pods in the `Terminating` state. This is normal as old replicas take some time to shut down. -4. Check the Radius status again. Now Radius is aware of the connection from `webapp->db`: +1. Check the Radius status again. Now Radius is aware of the connection from `webapp->db`: ```bash rad app graph -a demo -g default-demo @@ -614,7 +614,7 @@ In this step you can access the application and explore its features. Since the You can use the homepage to view information about the container and its settings. -2. Navigate to the ToDo List tab and test out the application. Using the ToDo page will update the saved state in Redis. +1. Navigate to the ToDo List tab and test out the application. Using the ToDo page will update the saved state in Redis. Screenshot of the todolist

diff --git a/docs/content/tutorials/new-app/index.md b/docs/content/tutorials/new-app/index.md index 7cadf5464..ef4103987 100644 --- a/docs/content/tutorials/new-app/index.md +++ b/docs/content/tutorials/new-app/index.md @@ -37,7 +37,7 @@ By the end of the tutorial, you will have created and deployed a new Radius Appl ``` 1. Initialize a new Radius Environment with [`rad init`]({{< ref rad_init >}}): - + ```bash rad init ``` @@ -59,7 +59,7 @@ Radius Applications are where all your app's resources and relationships come to ``` You will see the full App definition in its raw JSON format: - + ``` { "id": "/planes/radius/local/resourcegroups/default/providers/Applications.Core/applications/myapp", @@ -80,7 +80,7 @@ Radius Applications are where all your app's resources and relationships come to "type": "Applications.Core/applications" } ``` - + There are a few important things to note about the application definition: - **`id`** is the fully-qualified UCP resource ID of the application. This value is used to uniquely identify the application in the Radius system. @@ -98,7 +98,7 @@ Radius Applications are where all your app's resources and relationships come to ``` Displaying application: myapp - + (empty) ``` @@ -126,7 +126,6 @@ Radius Applications are where all your app's resources and relationships come to Deployment In Progress... - Deployment Complete Resources: @@ -138,12 +137,12 @@ Radius Applications are where all your app's resources and relationships come to ```bash rad app connections ``` - + You should see the container you just deployed, along with the underlying Kubernetes resources that were created to run it: - + ``` Displaying application: myapp - + Name: demo (Applications.Core/containers) Connections: (none) Resources: @@ -157,7 +156,7 @@ Radius Applications are where all your app's resources and relationships come to {{< alert title="💡 Kubernetes mapping" color="info" >}} Radius Environments map how Applications "bind" to a particular platform. Earlier we saw the Application compute was set to `kubernetes` and the namespace was set to `default-myapp`. This means the container resources were deployed to the `default-myapp` namespace in the Kubernetes cluster where Radius is installed. Visit the [Kubernetes mapping docs]({{< ref "/guides/operations/kubernetes/overview#resource-mapping" >}}) to learn more. {{< /alert >}} - + ## Step 4: Run your application When working with Radius Applications you will probably want to access container endpoints and view logs. [`rad run`]({{< ref rad_run >}}) makes it simple to deploy your application and automatically set up port-forwarding and log streaming: @@ -212,13 +211,13 @@ In addition to containers, you can add dependencies like Redis caches, Dapr Stat ```bash rad recipe show default --resource-type Applications.Datastores/mongoDatabases ``` - + You'll see details on the Recipe, including available parameters and defaults: ``` NAME TYPE TEMPLATE KIND TEMPLATE VERSION TEMPLATE default Applications.Datastores/mongoDatabases bicep ghcr.io/radius-project/recipes/local-dev/mongodatabases:latest - + PARAMETER NAME TYPE DEFAULT VALUE MIN MAX username string admin - - password secureString Password1234== - - @@ -244,17 +243,16 @@ In addition to containers, you can add dependencies like Redis caches, Dapr Stat ``` Building .\app.bicep... Deploying template '.\app.bicep' for application 'myapp' and environment 'default' from workspace 'default'... - + Deployment In Progress... - - + Deployment Complete - + Resources: myapp Applications.Core/applications demo Applications.Core/containers mongodb Applications.Datastores/mongoDatabases - + Starting log stream... ``` @@ -269,12 +267,12 @@ In addition to containers, you can add dependencies like Redis caches, Dapr Stat ```bash rad app connections ``` - + You should see the container and Mongo database you just deployed, along with the underlying Kubernetes resources that were created to run them: - + ``` Displaying application: myapp - + Name: demo (Applications.Core/containers) Connections: demo -> mongodb (Applications.Datastores/mongoDatabases) @@ -285,7 +283,7 @@ In addition to containers, you can add dependencies like Redis caches, Dapr Stat demo (kubernetes: core/ServiceAccount) demo (kubernetes: rbac.authorization.k8s.io/Role) demo (kubernetes: rbac.authorization.k8s.io/RoleBinding) - + Name: mongodb (Applications.Datastores/mongoDatabases) Connections: demo (Applications.Core/containers) -> mongodb @@ -315,17 +313,16 @@ In addition to dependencies, you can add more containers to make your applicatio ``` Building .\app.bicep... Deploying template '.\app.bicep' for application 'myapp' and environment 'default' from workspace 'default'... - + Deployment In Progress... - - + Deployment Complete - + Resources: demo Applications.Core/containers backend Applications.Core/containers mongodb Applications.Datastores/mongoDatabases - + Starting log stream... ``` @@ -352,18 +349,17 @@ Finally, you can add a gateway to your application. Gateways are used to expose ``` Building .\app.bicep... Deploying template '.\app.bicep' for application 'myapp' and environment 'default' from workspace 'default'... - + Deployment In Progress... - - + Deployment Complete - + Resources: demo Applications.Core/containers backend Applications.Core/containers gateway Applications.Core/gateways mongodb Applications.Datastores/mongoDatabases - + Public Endpoints: gateway Applications.Core/gateways http://localhost ``` @@ -375,4 +371,3 @@ Finally, you can add a gateway to your application. Gateways are used to expose ## Next steps Now that you've created your first application, try out more [tutorials]({{< ref tutorials >}}) or jump into the [user guides]({{< ref guides >}}) to learn more about Radius. - diff --git a/docs/content/tutorials/tutorial-add-radius/index.md b/docs/content/tutorials/tutorial-add-radius/index.md index 01d2ee96d..9ec1f3500 100644 --- a/docs/content/tutorials/tutorial-add-radius/index.md +++ b/docs/content/tutorials/tutorial-add-radius/index.md @@ -40,7 +40,7 @@ The Guestbook application consists of a web front end along with primary and sec git clone https://github.com/radius-project/samples.git ``` -2. Navigate to the `samples/kubernetes/guestbook` directory: +1. Navigate to the `samples/kubernetes/guestbook` directory: ```bash cd samples/kubernetes/guestbook @@ -48,25 +48,25 @@ The Guestbook application consists of a web front end along with primary and sec > The `kubernetes/guestbook` directory contains the Kubernetes YAML manifest files for their Guestbook sample application, copied directly from the [Kubernetes examples repo](https://github.com/kubernetes/examples/tree/master/guestbook). -3. Initialize Radius - +1. Initialize Radius: + Run this command to initialize Radius. For this example, answer **NO** when asked whether to set up an application: ```bash rad init ``` - + You should see output similar to: ``` - Initializing Radius... - ✅ Install Radius {{< param version >}} - - Kubernetes cluster: k3d-k3s-default - - Kubernetes namespace: radius-system - ✅ Create new environment default - - Kubernetes namespace: default - - Recipe pack: local-dev - ✅ Update local configuration + Initializing Radius... + ✅ Install Radius {{< param version >}} + - Kubernetes cluster: k3d-k3s-default + - Kubernetes namespace: radius-system + ✅ Create new environment default + - Kubernetes namespace: default + - Recipe pack: local-dev + ✅ Update local configuration Initialization complete! Have a RAD time 😎 ``` @@ -78,13 +78,13 @@ Step 2: Deploy and test the existing Guestbook application using `kubectl` kubectl create namespace demo ``` -2. Create and deploy the Guestbook application to the `demo` namespace: +1. Create and deploy the Guestbook application to the `demo` namespace: ```bash kubectl apply -n demo -f ./deploy ``` -3. Verify that the application successfully deployed: +1. Verify that the application successfully deployed: ```bash kubectl get all -n demo @@ -117,7 +117,7 @@ Step 2: Deploy and test the existing Guestbook application using `kubectl` replicaset.apps/frontend-77dfc58d7c 3 3 3 10s ``` -4. Validate that the application is running as expected: +1. Validate that the application is running as expected: Run this command to port forward the Guestbook application to port `8080` on your local machine: @@ -131,7 +131,7 @@ Step 2: Deploy and test the existing Guestbook application using `kubectl` Terminate the port forwarding process by pressing `CTRL+C` in your terminal. -5. Confirm that Radius has not yet been added: +1. Confirm that Radius has not yet been added: Run this command to view the state of your application using Radius: @@ -209,7 +209,7 @@ You will now add Radius to the Guestbook application's Kubernetes deployment man - containerPort: 80 ``` -2. Save your changes to the YAML files. +1. Save your changes to the YAML files. ## Step 4: Deploy and test the updated Guestbook application using `kubectl` @@ -219,10 +219,10 @@ You will now add Radius to the Guestbook application's Kubernetes deployment man kubectl apply -n demo -f ./deploy ``` -2. Verify that the application successfully deployed: +1. Verify that the application successfully deployed: ```bash - kubectl get deployments -n demo; + kubectl get deployments -n demo kubectl get services -n demo ``` @@ -239,7 +239,7 @@ You will now add Radius to the Guestbook application's Kubernetes deployment man redis-replica ClusterIP 10.43.118.183 6379/TCP 10m ``` -3. Validate that the application is running as expected: +1. Validate that the application is running as expected: Once again, run this command to port forward the Guestbook application to port `8080` on your local machine: @@ -303,7 +303,7 @@ This output shows that Radius has detected the three container resources in the service "redis-replica" deleted ``` -2. Run the following command to delete the `demo` namespace: +1. Run the following command to delete the `demo` namespace: ```bash kubectl delete namespace demo @@ -319,4 +319,4 @@ This output shows that Radius has detected the three container resources in the - To learn more about authoring Radius applications, visit the [Authoring applications guide]({{< ref "guides/author-apps" >}}) - To learn more about deploying applications using Radius, visit the [Deploying applications guide]({{< ref "guides/deploy-apps" >}}) -- To learn more about Radius Recipes, visit the [Recipes guide]({{< ref "guides/recipes" >}}) \ No newline at end of file +- To learn more about Radius Recipes, visit the [Recipes guide]({{< ref "guides/recipes" >}}) diff --git a/docs/content/tutorials/tutorial-dapr/index.md b/docs/content/tutorials/tutorial-dapr/index.md index 7b82b66bb..fedb7020e 100644 --- a/docs/content/tutorials/tutorial-dapr/index.md +++ b/docs/content/tutorials/tutorial-dapr/index.md @@ -33,8 +33,8 @@ For more details on the app and access to the source code, visit the `tutorials/ cd dapr ``` -2. Initialize a new dev environment: - +1. Initialize a new dev environment: + *Select 'Yes' when prompted to create an application.* ```bash @@ -82,8 +82,8 @@ Begin by creating a new file named `dapr.bicep` with a Radius Application that c You should see the following output: ``` - NAMESPACE NAME TYPE VERSION SCOPES CREATED AGE - default-dapr statestore state.redis v1 2023-07-21 16:04.27 21m + NAMESPACE NAME TYPE VERSION SCOPES CREATED AGE + default-dapr statestore state.redis v1 2023-07-21 16:04.27 21m ``` ## Step 4: Define the `frontend` container diff --git a/docs/content/tutorials/tutorial-recipe/index.md b/docs/content/tutorials/tutorial-recipe/index.md index 03c835f23..23ff53618 100644 --- a/docs/content/tutorials/tutorial-recipe/index.md +++ b/docs/content/tutorials/tutorial-recipe/index.md @@ -44,7 +44,7 @@ Developers don't need to specify what cloud resources they're using in their app mkdir recipes cd recipes ``` -2. Initialize a new dev environment: +1. Initialize a new dev environment: ```bash rad init @@ -52,14 +52,14 @@ Developers don't need to specify what cloud resources they're using in their app **Select 'Yes' when prompted to create an application.** -3. Use [`rad recipe list`]({{< ref rad_recipe_list >}}) to view the Recipes in your environment: +1. Use [`rad recipe list`]({{< ref rad_recipe_list >}}) to view the Recipes in your environment: ```bash - rad recipe list + rad recipe list ``` You should see a table of available Recipes: - + ``` NAME TYPE TEMPLATE KIND TEMPLATE VERSION TEMPLATE default Applications.Datastores/sqlDatabases bicep ghcr.io/radius-project/recipes/local-dev/sqldatabases:latest @@ -103,20 +103,18 @@ Note that no Recipe name is specified with 'db', so it will be using the default Deployment In Progress... Completed db Applications.Datastores/redisCaches - Completed webapp Applications.Core/applications Completed frontend Applications.Core/containers Deployment Complete Resources: - webapp Applications.Core/applications frontend Applications.Core/containers db Applications.Datastores/redisCaches ``` Your application is now deployed and running in your Kubernetes cluster. -2. List your Kubernetes Pods to see the infrastructure container deployed by the Recipe: +1. List your Kubernetes Pods to see the infrastructure container deployed by the Recipe: ```bash kubectl get pods -n default-recipes @@ -130,13 +128,13 @@ Note that no Recipe name is specified with 'db', so it will be using the default redis-ymbjcqyjzwkpg-66fdbf8bb6-brb6q 2/2 Running 0 13m ``` -3. Port-forward the container to your machine with `rad resource expose`: +1. Port-forward the container to your machine with `rad resource expose`: ```bash rad resource expose containers frontend --port 3000 ``` -4. Visit [`http://localhost:3000`](http://localhost:3000) in your browser. +1. Visit [`http://localhost:3000`](http://localhost:3000) in your browser. You can now see both the environment variables of your container under Radius Connections as well as interact with the `Todo App` and add/remove items in it as wanted: @@ -158,20 +156,20 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou Follow the steps [here]({{< ref "howto-azure-provider#manual-configuration" >}}) to add the Azure cloud provider to your existing environment. -2. Register the Recipe to your Radius Environment: +1. Register the Recipe to your Radius Environment: ```bash - rad recipe register azure --environment default --template-kind bicep --template-path ghcr.io/radius-project/recipes/azure/rediscaches:{{< param tag_version >}} --resource-type Applications.Datastores/redisCaches + rad recipe register azure --environment default --template-kind bicep --template-path ghcr.io/radius-project/recipes/azure/rediscaches:{{< param tag_version >}} --resource-type Applications.Datastores/redisCaches ``` -3. Update your db resource to use the `azure` Recipe, instead of the default Recipe: +1. Update your db resource to use the `azure` Recipe, instead of the default Recipe: {{< rad file="snippets/app-azure.bicep" marker="//DB" embed=true >}} -4. Redeploy your application to your environment: +1. Redeploy your application to your environment: ```bash - rad deploy ./app.bicep + rad deploy ./app.bicep ``` This operation may take some time, as the 'azure' Recipe is deploying an Azure Cache for Redis resource into your Azure subscription. Once complete, you should see: @@ -182,22 +180,20 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou Deployment In Progress... - Completed webapp Applications.Core/applications Completed db Applications.Datastores/redisCaches Completed frontend Applications.Core/containers Deployment Complete Resources: - webapp Applications.Core/applications frontend Applications.Core/containers db Applications.Datastores/redisCaches ``` -5. Use the az CLI to see your newly deployed Azure Cache for Redis: +1. Use the az CLI to see your newly deployed Azure Cache for Redis: ```bash - az redis list --subscription "My Subscription" --query "[].name" + az redis list --subscription "My Subscription" --query "[].name" ``` You should see the name of your Redis cache, which is prefixed `cache`: @@ -215,7 +211,7 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou 1. Visit [`http://localhost:3000`](http://localhost:3000) in your browser. - You can now see environment variables of your container under Radius Connections updated with the details of the Azure Cache for Redis and the Todo app now uses the Azure cache for Redis as the data store + You can now see environment variables of your container under Radius Connections updated with the details of the Azure Cache for Redis, and the Todo app now uses the Azure cache for Redis as the data store. {{< image src="todoapp.png" width="700px" alt="screenshot of the todo application" >}} @@ -251,7 +247,7 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou 1. Deploy your application to your environment: ```bash - rad deploy ./app.bicep + rad deploy ./app.bicep ``` This operation may take some time, as the ‘aws’ Recipe is deploying an AWS MemoryDB for Redis resource in your AWS account. Once complete, you should see: @@ -262,14 +258,12 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou Deployment In Progress... - Completed webapp Applications.Core/applications Completed db Applications.Link/redisCaches Completed frontend Applications.Core/containers Deployment Complete Resources: - webapp Applications.Core/applications frontend Applications.Core/containers db Applications.Link/redisCaches ``` @@ -282,7 +276,7 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou 1. Visit [`http://localhost:3000`](http://localhost:3000) in your browser. - You can now see environment variables of your container under Radius Connections updated with the details of the Amazon Memory Db for Redis and the Todo app now uses the Amazon Memory Db for Redis as the data store + You can now see environment variables of your container under Radius Connections updated with the details of the Amazon Memory Db for Redis, and the Todo app now uses the Amazon Memory Db for Redis as the data store. {{< image src="todoapp.png" width="700px" alt="screenshot of the todo application" >}} @@ -290,11 +284,10 @@ This step requires an Azure subscription or an AWS account to deploy cloud resou {{< /tabs >}} - ## Step 5: Cleanup your environment 1. You can use the rad CLI to [delete your environment]({{< ref rad_env_delete.md >}}) and all the Radius resources running on your cluster: - + ```bash rad env delete default --yes ``` diff --git a/docs/layouts/partials/page-meta-links.html b/docs/layouts/partials/page-meta-links.html index 2e117191d..623fdcd9b 100644 --- a/docs/layouts/partials/page-meta-links.html +++ b/docs/layouts/partials/page-meta-links.html @@ -7,7 +7,7 @@ {{ $gh_branch := (default "master" ($.Param "github_branch")) }}
{{ if $gh_url }} - {{ T "post_edit_this" }} + {{ T "post_edit_this" }} {{ else if $gh_repo }} {{ $gh_repo_path := printf "%s/content/%s" $gh_branch $pathFormatted }} {{ if and ($gh_subdir) (.Site.Language.Lang) }} diff --git a/docs/layouts/partials/section-index.html b/docs/layouts/partials/section-index.html index 06635e17a..04d814f1e 100644 --- a/docs/layouts/partials/section-index.html +++ b/docs/layouts/partials/section-index.html @@ -82,10 +82,10 @@
function filterCards() { // Get the search input value var searchInput = document.getElementById('search-input').value; - + // Get all the cards var cards = document.querySelectorAll('.card'); - + // Loop through the cards and show only the ones that match the search input value for (var i = 0; i < cards.length; i++) { var card = cards[i]; diff --git a/docs/layouts/shortcodes/categorizeby.html b/docs/layouts/shortcodes/categorizeby.html index f33236cd7..2853f4674 100644 --- a/docs/layouts/shortcodes/categorizeby.html +++ b/docs/layouts/shortcodes/categorizeby.html @@ -5,7 +5,7 @@ {{ $pages := where site.Pages "Params.categories" (printf "%s" $categories) }} {{ $pages = where $pages "Params.tags" "intersect" (slice $tags ) }} -
+
 
@@ -32,12 +32,9 @@

{{ $key }}

  • {{ .Title }}
  • {{ end }} {{ end }} -
    +
    {{end}} {{ end }} {{ end }} - - - diff --git a/docs/layouts/shortcodes/redoc.html b/docs/layouts/shortcodes/redoc.html index 720e4b6fc..4f8816e0f 100644 --- a/docs/layouts/shortcodes/redoc.html +++ b/docs/layouts/shortcodes/redoc.html @@ -108,4 +108,4 @@ }, document.getElementById('redoc-container') ) - \ No newline at end of file + \ No newline at end of file diff --git a/docs/shared-content/installation/install-radius/initialize-radius.md b/docs/shared-content/installation/install-radius/initialize-radius.md index da2c78385..4f12ce4cf 100644 --- a/docs/shared-content/installation/install-radius/initialize-radius.md +++ b/docs/shared-content/installation/install-radius/initialize-radius.md @@ -2,7 +2,7 @@ Initializing Radius installs the Radius control-plane and creates a Radius Envir 1. Create a Kubernetes cluster - Radius runs inside [Kubernetes]({{< ref "guides/operations/kubernetes" >}}). Create one from the [supported k8s clusters]({{< ref "/guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}}) + Radius runs inside [Kubernetes]({{< ref "guides/operations/kubernetes" >}}). Create one from the [supported k8s clusters]({{< ref "/guides/operations/kubernetes/overview#supported-kubernetes-clusters" >}}) > *If you don't have a preferred way to create Kubernetes clusters, you could try using [k3d](https://k3d.io/), which runs a minimal Kubernetes distribution in Docker.* Ensure your cluster is set as your current context: diff --git a/docs/shared-content/installation/vscode-bicep/install-vscode-bicep.md b/docs/shared-content/installation/vscode-bicep/install-vscode-bicep.md index e74e1b9db..e5af7e5f0 100644 --- a/docs/shared-content/installation/vscode-bicep/install-vscode-bicep.md +++ b/docs/shared-content/installation/vscode-bicep/install-vscode-bicep.md @@ -8,19 +8,19 @@ You can only have one VSCode Bicep extension installed at a time. To build on Ra Screenshot of Radius Bicep extension in VSCode Marketplace

    -2. Select Install +1. Select Install To verify you've installed the extension, open any file with the .bicep file extension and start [authoring Radius application]({{< ref author-apps >}}) to verify the auto-complete and other validation features. {{< /latest >}} {{< edge >}} 1. Visit the [GitHub Actions runs](https://github.com/radius-project/bicep/actions/workflows/radius-build.yml?query=event%3Apush+branch%3Abicep-extensibility) -2. Click on the latest successful run -3. Scroll down to Artifacts and download `release` -4. Extract the archive and Install the `rad-vscode-bicep.vsix` file: +1. Click on the latest successful run +1. Scroll down to Artifacts and download `release` +1. Extract the archive and Install the `rad-vscode-bicep.vsix` file: In VSCode, manually install the extension using the *Install from VSIX* command in the Extensions view command drop-down. Screenshot of installing a vsix extension
    - + You can also import this extension on the [command-line](https://code.visualstudio.com/docs/editor/extension-gallery#_install-from-a-vsix) with: ```bash @@ -28,6 +28,6 @@ To verify you've installed the extension, open any file with the .bicep file ext ``` If you're on macOS, make sure to [setup the `code` alias](https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line). -5. If running on Windows Subsystem for Linux (WSL), make sure to install the extension in WSL as well:
    +1. If running on Windows Subsystem for Linux (WSL), make sure to install the extension in WSL as well:
    Screenshot of installing a vsix extension in WSL {{< /edge >}}