Skip to content

Commit

Permalink
Whitespace removal and formatting (#979)
Browse files Browse the repository at this point in the history
* whitespace and markdown formatting

Signed-off-by: Emanuel Palm <[email protected]>

* Markdown numbered lists changed to 1

Signed-off-by: Emanuel Palm <[email protected]>

---------

Signed-off-by: Emanuel Palm <[email protected]>
Co-authored-by: Aaron Crawfis <[email protected]>
  • Loading branch information
PalmEmanuel and AaronCrawfis authored Nov 27, 2023
1 parent d8c44b6 commit 43d6905
Show file tree
Hide file tree
Showing 60 changed files with 311 additions and 270 deletions.
31 changes: 15 additions & 16 deletions docs/assets/scss/_nav.scss
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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;
}
Expand All @@ -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;
}

Expand All @@ -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;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -344,7 +345,6 @@ resource app 'radius.dev/Application@v1alpha1' = {
//BINDINGS
connections: {
backend: {
source: other.id
}
}
Expand Down Expand Up @@ -591,7 +591,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

Expand Down
14 changes: 7 additions & 7 deletions docs/content/concepts/api-concept/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,22 @@ 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.

A resource could be anything that's useful to manage through an API. For example, a resource could be an on-premises networking configuration, a 3rd party SaaS account, a Kubernetes `Pod`, or a value stored in a cloud secret store. Resources with CRUDL+ operations, types, and universal identifiers are the central concepts in Radius' API because they are a tested approach for deployment and management of software systems.

## 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.

Expand All @@ -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?"*
Expand Down
5 changes: 2 additions & 3 deletions docs/content/concepts/collaboration-concept/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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.

Expand Down
20 changes: 10 additions & 10 deletions docs/content/concepts/faq/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@ 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.

### Can I incrementally adopt, or "try out" Radius?

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.

Expand All @@ -45,35 +45,35 @@ 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.

### Can I use any Terraform provider with Recipes?

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

### What AWS services does Radius support?

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions docs/content/concepts/why-radius-concept/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading

0 comments on commit 43d6905

Please sign in to comment.