diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 688d1a316..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-name: Bug report
-about: Report a bug in Dapr docs
-title: ''
-labels: kind/bug
-assignees: ''
-
----
-## Expected Behavior
-
-
-
-
-## Actual Behavior
-
-
-
-
-## Steps to Reproduce the Problem
-
-
-
-## Release Note
-
-
-
-
-
-
-
-RELEASE NOTE:
diff --git a/.github/ISSUE_TEMPLATE/discussion.md b/.github/ISSUE_TEMPLATE/discussion.md
deleted file mode 100644
index 887cf14df..000000000
--- a/.github/ISSUE_TEMPLATE/discussion.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: Feature Request
-about: Start a discussion for Dapr docs
-title: ''
-labels: kind/discussion
-assignees: ''
-
----
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index d8877f7a5..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-name: Feature Request
-about: Create a Feature Request for Dapr docs
-title: ''
-labels: kind/enhancement
-assignees: ''
-
----
-## Describe the feature
-
-## Release Note
-
-
-
-
-
-
-
-RELEASE NOTE:
diff --git a/.github/ISSUE_TEMPLATE/new-content-needed.md b/.github/ISSUE_TEMPLATE/new-content-needed.md
new file mode 100644
index 000000000..7f89c0f90
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/new-content-needed.md
@@ -0,0 +1,20 @@
+---
+name: New Content Needed
+about: Topic is missing and needs to be written
+title: "[CONTENT]"
+labels: content/missing-information
+assignees: ''
+
+---
+
+**What content needs to be created or modified?**
+A clear and concise description of what the problem is. Ex. There should be docs on how pub/sub works...
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Where should the new material be placed?**
+Please suggest where in the docs structure the new content should be created.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/proposal.md b/.github/ISSUE_TEMPLATE/proposal.md
deleted file mode 100644
index 9a14f70a9..000000000
--- a/.github/ISSUE_TEMPLATE/proposal.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: Proposal
-about: Create a proposal for Dapr docs
-title: ''
-labels: kind/proposal
-assignees: ''
-
----
-## Describe the proposal
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
deleted file mode 100644
index 6b2559855..000000000
--- a/.github/ISSUE_TEMPLATE/question.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-name: Question
-about: Ask a question about Dapr docs
-title: ''
-labels: kind/question
-assignees: ''
-
----
-## Ask your question here
diff --git a/.github/ISSUE_TEMPLATE/typo.md b/.github/ISSUE_TEMPLATE/typo.md
new file mode 100644
index 000000000..f6b7f6fea
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/typo.md
@@ -0,0 +1,23 @@
+---
+name: Typo
+about: Report incorrect language/small updates to fix readability
+title: "[TYPO]"
+labels: content/typo
+assignees: ''
+
+---
+
+**URL of the docs page**
+The URL(s) on docs.dapr.io where the typo occurs
+
+**How is it currently worded?**
+Please copy and paste the sentence where the typo occurs.
+
+**How should it be worded?**
+Please correct the sentence
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/website-issue.md b/.github/ISSUE_TEMPLATE/website-issue.md
new file mode 100644
index 000000000..141fef38f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/website-issue.md
@@ -0,0 +1,38 @@
+---
+name: Website Issue
+about: The website is broken or not working correctly.
+title: "[WEBSITE]"
+labels: website/functionality
+assignees: AaronCrawfis
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Desktop (please complete the following information):**
+ - OS: [e.g. iOS]
+ - Browser [e.g. chrome, safari]
+ - Version [e.g. 22]
+
+**Smartphone (please complete the following information):**
+ - Device: [e.g. iPhone6]
+ - OS: [e.g. iOS8.1]
+ - Browser [e.g. stock browser, safari]
+ - Version [e.g. 22]
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/wrong-information-code-steps.md b/.github/ISSUE_TEMPLATE/wrong-information-code-steps.md
new file mode 100644
index 000000000..cbf2fec27
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/wrong-information-code-steps.md
@@ -0,0 +1,23 @@
+---
+name: Wrong Information/Code/Steps
+about: Something in the docs is incorrect
+title: "[CONTENT]"
+labels: P1, content/incorrect-information
+assignees: ''
+
+---
+
+**Describe the issue**
+A clear and concise description of what the bug is.
+
+**URL of the docs**
+Paste the URL (docs.dapr.io/concepts/......) of the page
+
+**Expected content**
+A clear and concise description of what you expected to happen.
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/README.md b/README.md
index e3c429ec4..3845f7cfd 100644
--- a/README.md
+++ b/README.md
@@ -30,17 +30,13 @@ git clone https://github.com/dapr/docs.git
```
3. Change to daprdocs directory:
```sh
-cd daprdocs
+cd ./docs/daprdocs
```
-4. Add Docsy submodule:
-```sh
-git submodule add https://github.com/google/docsy.git themes/docsy
-```
-5. Update submodules:
+4. Update submodules:
```sh
git submodule update --init --recursive
```
-6. Install npm packages:
+5. Install npm packages:
```sh
npm install
```
diff --git a/daprdocs/content/en/concepts/overview.md b/daprdocs/content/en/concepts/overview.md
index 46e9cad18..fb1a029b9 100644
--- a/daprdocs/content/en/concepts/overview.md
+++ b/daprdocs/content/en/concepts/overview.md
@@ -7,7 +7,9 @@ description: >
Introduction to the Distributed Application Runtime
---
-Dapr is a portable, event-driven runtime that makes it easy for enterprise developers to build resilient, stateless and stateful microservice applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
+Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
+
+{{< youtube 9o9iDAgYBA8 >}}
## Any language, any framework, anywhere
@@ -118,4 +120,4 @@ The `dapr-sentry` service is a certificate authority that enables mutual TLS bet
-Deploying and running a Dapr enabled application into your Kubernetes cluster is a simple as adding a few annotations to the deployment schemes. You can see some examples [here](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes/deploy) in the Kubernetes getting started sample. Try this out with the [Kubernetes quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes).
+Deploying and running a Dapr enabled application into your Kubernetes cluster is as simple as adding a few annotations to the deployment schemes. You can see some examples [here](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes/deploy) in the Kubernetes getting started sample. Try this out with the [Kubernetes quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes).
diff --git a/daprdocs/content/en/contributing/contributing-docs.md b/daprdocs/content/en/contributing/contributing-docs.md
index ca08f9739..179934fe6 100644
--- a/daprdocs/content/en/contributing/contributing-docs.md
+++ b/daprdocs/content/en/contributing/contributing-docs.md
@@ -26,6 +26,7 @@ These conventions should be followed throughout all Dapr documentation to ensure
- **Use simple sentences** - Easy-to-read sentences mean the reader can quickly use the guidance you share.
- **Avoid the first person** - Use 2nd person "you", "your" instead of "I", "we", "our".
- **Assume a new developer audience** - Some obvious steps can seem hard. E.g. Now set an environment variable Dapr to a value X. It is better to give the reader the explicit command to do this, rather than having them figure this out.
+- **Use present tense** - Avoid sentences like "this command will install redis", which implies the action is in the future. Instead use "This command installs redis" which is in the present tense.
## Contributing a new docs page
- Make sure the documentation you are writing is in the correct place in the hierarchy.
diff --git a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md
index e4370564b..8d3029d6a 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md
@@ -31,6 +31,7 @@ metadata:
namespace: default
spec:
type: bindings.kafka
+ version: v1
metadata:
- name: brokers
value: localhost:9092
diff --git a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-triggers.md b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-triggers.md
index f70e052b4..6dde81ec2 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-triggers.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-triggers.md
@@ -39,6 +39,7 @@ metadata:
namespace: default
spec:
type: bindings.kafka
+ version: v1
metadata:
- name: topics
value: topic1
diff --git a/daprdocs/content/en/developing-applications/building-blocks/observability/tracing.md b/daprdocs/content/en/developing-applications/building-blocks/observability/tracing.md
index c31e15e28..d0e72b6d9 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/observability/tracing.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/observability/tracing.md
@@ -29,7 +29,7 @@ Read [W3C distributed tracing]({{< ref w3c-tracing >}}) for more background on W
Dapr uses [probabilistic sampling](https://opencensus.io/tracing/sampling/probabilistic/) as defined by OpenCensus. The sample rate defines the probability a tracing span will be sampled and can have a value between 0 and 1 (inclusive). The deafault sample rate is 0.0001 (i.e. 1 in 10,000 spans is sampled).
-To change the default tracing behavior, use a configuration file (in self hosted mode) or a Kubernetes configuration object (in Kubernetes mode). For example, the following configuration object changes the sample rate to 1 (i.e. every span is sampled):
+To change the default tracing behavior, use a configuration file (in self hosted mode) or a Kubernetes configuration object (in Kubernetes mode). For example, the following configuration object changes the sample rate to 1 (i.e. every span is sampled), and sends trace using Zipkin protocol to the Zipkin server at http://zipkin.default.svc.cluster.local
```yaml
apiVersion: dapr.io/v1alpha1
@@ -40,29 +40,14 @@ metadata:
spec:
tracing:
samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
```
-Similarly, changing `samplingRate` to 0 will disable tracing altogether.
+Changing `samplingRate` to 0 will disable tracing altogether.
See the [References](#references) section for more details on how to configure tracing on local environment and Kubernetes environment.
-Dapr supports pluggable exporters, defined by configuration files (in self hosted mode) or a Kubernetes custom resource object (in Kubernetes mode). For example, the following manifest defines a Zipkin exporter:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: zipkin
- namespace: default
-spec:
- type: exporters.zipkin
- metadata:
- - name: enabled
- value: "true"
- - name: exporterAddress
- value: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
-```
-
## References
- [How-To: Setup Application Insights for distributed tracing with OpenTelemetry Collector]({{< ref open-telemetry-collector.md >}})
diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md
index 6546e0c34..ac408ed3f 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md
@@ -31,6 +31,7 @@ metadata:
name: pubsub
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value: localhost:6379
@@ -52,6 +53,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value: localhost:6379
@@ -311,7 +313,7 @@ Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '{"status":
{{< /tabs >}}
-Dapr automatically wraps the user payload in a Cloud Events v1.0 compliant envelope.
+Dapr automatically wraps the user payload in a Cloud Events v1.0 compliant envelope, using `Content-Type` header value for `datacontenttype` attribute.
## Step 4: ACK-ing a message
diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md
index bd1047038..6e563b842 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md
@@ -8,44 +8,30 @@ description: "Overview of the Dapr Pub/Sub building block"
## Introduction
-The [publish/subscribe pattern](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) allows your microservices to communicate with each other purely by sending messages. In this system, the **producer** of a message sends it to a **topic**, with no knowledge of what service will receive the message. A messages can even be sent if there's no consumer for it.
+The [publish/subscribe pattern](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) allows microservices to communicate with each other using messages. The **producer** sends messages to a **topic** without knowledge of what application will receive them. Similarly, a **consumer** will subscribe to the topic and receive its messages without any knowledge of what application produced these messages. This pattern is especially useful when you need to decouple microservices from one another.
-Similarly, a **consumer** will receive messages from a topic without knowledge of what producer sent it. This pattern is especially useful when you need to decouple microservices from one another.
-
-Dapr provides a publish/subscribe API that provides at-least-once guarantees and integrates with various message brokers implementations. These implementations are pluggable, and developed outside of the Dapr runtime in [components-contrib](https://github.com/dapr/components-contrib/tree/master/pubsub).
+The publish/subscribe API in Dapr provides an at-least-once guarantee and integrates with various message brokers and queuing systems. The specific implementation to your application is pluggable and configured externally at runtime. This approach removes the dependency from your application and, as a result, makes your application more portable. The complete list of available publish/subscribe implementations is available [here]({{< ref supported-pubsub >}}).
## Features
### Publish/Subscribe API
-The API for Publish/Subscribe can be found in the [spec repo]({{< ref pubsub_api.md >}}).
+The publish/subscribe API is located in the [API reference]({{< ref pubsub_api.md >}}).
-### At-Least-Once guarantee
+### Message Format
-Dapr guarantees At-Least-Once semantics for message delivery.
-That means that when an application publishes a message to a topic using the Publish/Subscribe API, it can assume the message is delivered at least once to any subscriber when the response status code from that endpoint is `200`, or returns no error if using the gRPC client.
+To enable message routing and to provide additional context with each message Dapr uses the [CloudEvents 1.0 specification](https://github.com/cloudevents/spec/tree/v1.0) as its message format. Any message sent by an application to a topic using Dapr will automatically be "wrapped" in Cloud Events envelope, using `Content-Type` header value for `datacontenttype` attribute.
-### Consumer groups and multiple instances
+Dapr implements the following Cloud Events fields:
-The burden of dealing with concepts like consumer groups and multiple instances inside consumer groups is all handled autoamtically by Dapr:
-
-* When multiple instances of the same application (same IDs) subscribe to a topic, Dapr will deliver each message to only one instance of that application.
-* If two different applications (different IDs) subscribe to the same topic, Dapr will deliver each message to only one instance of each application.
-
-### Cloud events
-
-Dapr follows the [CloudEvents 1.0 Spec](https://github.com/cloudevents/spec/tree/v1.0) and wraps any payload sent to a topic inside a Cloud Events envelope.
-
-The following fields from the Cloud Events spec are implemented with Dapr:
-- `id`
-- `source`
-- `specversion`
-- `type`
-- `datacontenttype` (Optional)
-
-> Starting with Dapr v0.9, Dapr no longer wraps published content into CloudEvent if the published payload itself is already in CloudEvent format.
+* `id`
+* `source`
+* `specversion`
+* `type`
+* `datacontenttype` (Optional)
The following example shows an XML content in CloudEvent v1.0 serialized as JSON:
+
```json
{
"specversion" : "1.0",
@@ -59,11 +45,30 @@ The following example shows an XML content in CloudEvent v1.0 serialized as JSON
}
```
+> Starting with v0.9 release, Dapr no longer wraps published content into CloudEvent if the published payload is already in the CloudEvent format.
+
+### Message Subscription
+
+Dapr allows two methods by which you can subscribe to topics: **declarative**, where a subscription is defined in an external file, and **programmatic**, where a subscription is defined in the user code. For more information see Dapr's documentation on [subscribing to a topic](https://docs.dapr.io/developing-applications/building-blocks/pubsub/howto-publish-subscribe/#step-2-subscribe-to-topics).
+
+### Message Delivery
+
+In principle, Dapr considers message successfully delivered when the subscriber responds with a non-error response after processing the message. For more granular control, Dapr's publish/subscribe API also provides explicit statuses, defined in the response payload, which the subscriber can use to indicate the specific handling instructions to Dapr (e.g. `RETRY` or `DROP`). For more information message routing see [Dapr publish/subscribe API documentation] ({{< ref "pubsub_api.md#provide-routes-for-dapr-to-deliver-topic-events" >}})
+
+### At-Least-Once guarantee
+
+Dapr guarantees at-least-once semantics for message delivery. That means that when an application publishes a message to a topic using the publish/subscribe API, Dapr ensures that this message will be delivered at least once to every subscriber.
+
+### Consumer groups and multiple instances
+
+The burden of dealing with concepts like consumer groups and multiple application instances using a single consumer group is all handled automatically by Dapr. When multiple instances of the same application (same IDs) subscribe to a topic, Dapr delivers each message to only one instance of that application. Similarly, if two different applications (different IDs) subscribe to the same topic, Dapr will deliver each message to only one instance of each application.
+
### Topic scoping
-Limit which topics applications are able to publish/subscibe to in order to limit access to potentially sensitive data streams. Read [Pub/Sub scoping]({{< ref pubsub-scopes.md >}}) for more information.
+By default, all topics backing the Dapr publish/subscribe component (e.g. Kafka, Redis, RabbitMQ) are available to every application configured with that component. To limit which application can publish or subscribe to topics, Dapr provides topic scoping. See [publish/subscribe topic scoping]({{< ref pubsub-scopes.md >}}) for more information.
## Next steps
- Read the How-To guide on [publishing and subscribing]({{< ref howto-publish-subscribe.md >}})
- Learn about [Pub/Sub scopes]({{< ref pubsub-scopes.md >}})
+- Read the [API reference]({{< ref pubsub_api.md >}})
diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-scopes.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-scopes.md
index 40630dc67..8dca614f6 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-scopes.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-scopes.md
@@ -51,6 +51,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value: "localhost:6379"
@@ -97,6 +98,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value: "localhost:6379"
@@ -121,6 +123,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value: "localhost:6379"
diff --git a/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md b/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md
index 512704261..a73f15fe9 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md
@@ -36,7 +36,7 @@ Watch this [video](https://www.youtube.com/watch?v=OtbYCBt9C34&feature=youtu.be&
Now that the secret store is set up, you can call Dapr to get the secrets for a given key for a specific secret store.
-For a full API reference, go [here](https://github.com/dapr/docs/blob/master/reference/api/secrets_api.md).
+For a full API reference, go [here]({{< ref secrets_api.md >}}).
Here are a few examples in different programming languages:
diff --git a/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-scopes.md b/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-scopes.md
index 465621fc0..b45ae816f 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-scopes.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/secrets/secrets-scopes.md
@@ -31,7 +31,7 @@ spec:
defaultAccess: deny
```
-For applications that need to be deined access to the Kubernetes secret store, follow [these instructions]({{< ref kubernetes-overview.md >}}), and add the following annotation to the application pod.
+For applications that need to be denied access to the Kubernetes secret store, follow [these instructions]({{< ref kubernetes-overview.md >}}), and add the following annotation to the application pod.
```yaml
dapr.io/config: appconfig
diff --git a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md
index 1c5eed66d..324fc3711 100644
--- a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md
+++ b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md
@@ -117,3 +117,4 @@ The diagram below shows sequence 1-7 again on a local machine showing the API ca
* [How-to: Get started with Dapr and gRPC]({{< ref grpc >}})
* Try out the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md) which shows how to use HTTP service invocation or visit the samples in each of the [Dapr SDKs]({{< ref sdks >}})
* Read the [service invocation API specification]({{< ref service_invocation_api.md >}})
+* See the [service invocation performance]({{< ref perf-service-invocation.md >}}) numbers
diff --git a/daprdocs/content/en/developing-applications/integrations/authenticating/_index.md b/daprdocs/content/en/developing-applications/integrations/authenticating/_index.md
new file mode 100644
index 000000000..1fb3b3ffe
--- /dev/null
+++ b/daprdocs/content/en/developing-applications/integrations/authenticating/_index.md
@@ -0,0 +1,7 @@
+---
+type: docs
+title: "Authenticating to services"
+linkTitle: "Authenticating to services"
+weight: 3000
+description: "Information about authentication and configuration for various cloud providers"
+---
diff --git a/daprdocs/content/en/developing-applications/integrations/authenticating/authenticating-aws.md b/daprdocs/content/en/developing-applications/integrations/authenticating/authenticating-aws.md
new file mode 100644
index 000000000..20f221499
--- /dev/null
+++ b/daprdocs/content/en/developing-applications/integrations/authenticating/authenticating-aws.md
@@ -0,0 +1,62 @@
+---
+type: docs
+title: "Authenticating to AWS"
+linkTitle: "Authenticating to AWS"
+weight: 10
+description: "Information about authentication and configuration options for AWS"
+---
+
+All Dapr components using various AWS services (DynamoDB, SQS, S3, etc) use a standardized set of attributes for configuration, these are described below.
+
+[This article](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials) provides a good overview of how the AWS SDK (which Dapr uses) handles credentials
+
+None of the following attributes are required, since the AWS SDK may be configured using the default provider chain described in the link above. It's important to test the component configuration and inspect the log output from the Dapr runtime to ensure that components initialize correctly.
+
+`region`: Which AWS region to connect to. In some situations (when running Dapr in self-hosted mode, for example) this flag can be provided by the environment variable `AWS_REGION`. Since Dapr sidecar injection doesn't allow configuring environment variables on the Dapr sidecar, it is recommended to always set the `region` attribute in the component spec.
+`endpoint`: The endpoint is normally handled internally by the AWS SDK. However, in some situations it might make sense to set it locally - for example if developing against [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html).
+`accessKey`: AWS Access key id.
+`secretKey`: AWS Secret access key. Use together with `accessKey` to explicitly specify credentials.
+`sessionToken`: AWS Session token. Used together with `accessKey` and `secretKey`. When using a regular IAM user's access key and secret, a session token is normally not required.
+
+## Alternatives to explicitly specifying credentials in component manifest files
+In production scenarios, it is recommended to use a solution such as [Kiam](https://github.com/uswitch/kiam) or [Kube2iam](https://github.com/jtblin/kube2iam). If running on AWS EKS, you can [link an IAM role to a Kubernetes service account](https://docs.aws.amazon.com/eks/latest/userguide/create-service-account-iam-policy-and-role.html), which your pod can use.
+
+All of these solutions solve the same problem: They allow the Dapr runtime process (or sidecar) to retrive credentials dynamically, so that explicit credentials aren't needed. This provides several benefits, such as automated key rotation, and avoiding having to manage secrets.
+
+Both Kiam and Kube2IAM work by intercepting calls to the [instance metadata service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).
+
+## Using instance role/profile when running in stand-alone mode on AWS EC2
+If running Dapr directly on an AWS EC2 instance in stand-alone mode, instance profiles can be used. Simply configure an iam role and [attach it to the instance profile](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) for the ec2 instance, and Dapr should be able to authenticate to AWS without specifying credentials in the Dapr component manifest.
+
+## Authenticating to AWS when running dapr locally in stand-alone mode
+When running Dapr (or the Dapr runtime directly) in stand-alone mode, you have the option of injecting environment variables into the process like this (on Linux/MacOS:
+```bash
+FOO=bar daprd --app-id myapp
+```
+If you have [configured named AWS profiles](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) locally , you can tell Dapr (or the Dapr runtime) which profile to use by specifying the "AWS_PROFILE" environment variable:
+
+```bash
+AWS_PROFILE=myprofile dapr run...
+```
+or
+```bash
+AWS_PROFILE=myprofile daprd...
+```
+You can use any of the [supported environment variables](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html#envvars-list) to configure Dapr in this manner.
+
+On Windows, the environment variable needs to be set before starting the `dapr` or `daprd` command, doing it inline as shown above is not supported.
+
+## Authenticating to AWS if using AWS SSO based profiles
+If you authenticate to AWS using [AWS SSO](https://aws.amazon.com/single-sign-on/), some AWS SDKs (including the Go SDK) don't yet support this natively. There are several utilities you can use to "bridge the gap" between AWS SSO-based credentials, and "legacy" credentials, such as [AwsHelper](https://pypi.org/project/awshelper/) or [aws-sso-util](https://github.com/benkehoe/aws-sso-util).
+
+If using AwsHelper, start Dapr like this:
+```bash
+AWS_PROFILE=myprofile awshelper dapr run...
+```
+or
+```bash
+AWS_PROFILE=myprofile awshelper daprd...
+```
+
+On Windows, the environment variable needs to be set before starting the `awshelper` command, doing it inline as shown above is not supported.
+
diff --git a/daprdocs/content/en/developing-applications/integrations/autoscale-keda.md b/daprdocs/content/en/developing-applications/integrations/autoscale-keda.md
index abd206d94..8e17dfbfc 100644
--- a/daprdocs/content/en/developing-applications/integrations/autoscale-keda.md
+++ b/daprdocs/content/en/developing-applications/integrations/autoscale-keda.md
@@ -70,6 +70,7 @@ metadata:
name: autoscaling-pubsub
spec:
type: pubsub.kafka
+ version: v1
metadata:
- name: brokers
value: kafka-cp-kafka.kafka.svc.cluster.local:9092
diff --git a/daprdocs/content/en/developing-applications/middleware/middleware-opa-policies.md b/daprdocs/content/en/developing-applications/middleware/middleware-opa-policies.md
index 623a97a3f..0c6dd56b4 100644
--- a/daprdocs/content/en/developing-applications/middleware/middleware-opa-policies.md
+++ b/daprdocs/content/en/developing-applications/middleware/middleware-opa-policies.md
@@ -18,6 +18,7 @@ metadata:
namespace: default
spec:
type: middleware.http.opa
+ version: v1
metadata:
# `includedHeaders` is a comma-seperated set of case-insensitive headers to include in the request input.
# Request headers are not passed to the policy by default. Include to recieve incoming request headers in
diff --git a/daprdocs/content/en/getting-started/configure-redis.md b/daprdocs/content/en/getting-started/configure-redis.md
deleted file mode 100644
index fb7156790..000000000
--- a/daprdocs/content/en/getting-started/configure-redis.md
+++ /dev/null
@@ -1,228 +0,0 @@
----
-type: docs
-title: "How-To: Setup a customized Redis store"
-linkTitle: "(optional) Configure Redis"
-weight: 40
-description: "Configure Redis for Dapr state management or Pub/Sub"
----
-
-Dapr can use Redis in two ways:
-
-1. As state store component (state.redis) for persistence and restoration
-2. As pub/sub component (pubsub.redis) for async style message delivery
-
-## Create a Redis store
-
-Dapr can use any Redis instance - containerized, running on your local dev machine, or a managed cloud service. If you already have a Redis store, move on to the [configuration](#configure-dapr-components) section.
-
-{{< tabs "Self-Hosted" "Kubernetes (Helm)" "Azure Redis Cache" "AWS Redis" "GCP Memorystore" >}}
-
-{{% codetab %}}
-Redis is automatically installed in self-hosted environments by the Dapr CLI as part of the initialization process.
-{{% /codetab %}}
-
-{{% codetab %}}
-You can use [Helm](https://helm.sh/) to quickly create a Redis instance in our Kubernetes cluster. This approach requires [Installing Helm v3](https://github.com/helm/helm#install).
-
-1. Install Redis into your cluster:
-
- ```bash
- helm repo add bitnami https://charts.bitnami.com/bitnami
- helm repo update
- helm install redis bitnami/redis
- ```
-
- Note that you will need a Redis version greater than 5, which is what Dapr's pub/sub functionality requires. If you're intending on using Redis as just a state store (and not for pub/sub) a lower version can be used.
-
-2. Run `kubectl get pods` to see the Redis containers now running in your cluster:
-
- ```bash
- $ kubectl get pods
- NAME READY STATUS RESTARTS AGE
- redis-master-0 1/1 Running 0 69s
- redis-slave-0 1/1 Running 0 69s
- redis-slave-1 1/1 Running 0 22s
- ```
-
-3. Add `redis-master.default.svc.cluster.local:6379` as the `redisHost` in your [redis.yaml](#configure-dapr-components) file. For example:
-
- ```yaml
- metadata:
- - name: redisHost
- value: redis-master.default.svc.cluster.local:6379
- ```
-
-4. Securely reference the redis passoword in your [redis.yaml](#configure-dapr-components) file. For example:
-
- ```yaml
- - name: redisPassword
- secretKeyRef:
- name: redis
- key: redis-password
- ```
-
-5. (Alternative) It is **not recommended**, but you can use a hard code a password instead of using secretKeyRef. First you'll get the Redis password, which is slightly different depending on the OS you're using:
-
- - **Windows**: In Powershell run:
- ```powershell
- PS C:\> $base64pwd=kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}"
- PS C:\> $redispassword=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64pwd))
- PS C:\> $base64pwd=""
- PS C:\> $redispassword
- ```
- - **Linux/MacOS**: Run:
- ```bash
- kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" | base64 --decode
- ```
-
- Add this password as the `redisPassword` value in your [redis.yaml](#configure-dapr-components) file. For example:
-
- ```yaml
- metadata:
- - name: redisPassword
- value: lhDOkwTlp0
- ```
-{{% /codetab %}}
-
-{{% codetab %}}
-This method requires having an Azure Subscription.
-
-1. Open the [Azure Portal](https://ms.portal.azure.com/#create/Microsoft.Cache) to start the Azure Redis Cache creation flow. Log in if necessary.
-1. Fill out the necessary information
-1. Click "Create" to kickoff deployment of your Redis instance.
-1. Once your instance is created, you'll need to grab your access key. Navigate to "Access Keys" under "Settings" and copy your key.
-1. You'll need the hostname of your Redis instance, which you can retrieve from the "Overview" in Azure. It should look like `xxxxxx.redis.cache.windows.net:6380`.
-1. Finally, you'll need to add our key and our host to a `redis.yaml` file that Dapr can apply to our cluster. If you're running a sample, you'll add the host and key to the provided `redis.yaml`. If you're creating a project from the ground up, you'll create a `redis.yaml` file as specified in [Configuration](#configure-dapr-components).
-
- As the connection to Azure is encrypted, make sure to add the following block to the `metadata` section of your `redis.yaml` file.
-
- ```yaml
- metadata:
- - name: enableTLS
- value: "true"
- ```
-
-> **NOTE:** Dapr pub/sub uses [Redis streams](https://redis.io/topics/streams-intro) that was introduced by Redis 5.0, which isn't currently available on Azure Cache for Redis. Consequently, you can use Azure Cache for Redis only for state persistence.
-{{% /codetab %}}
-
-{{% codetab %}}
-Visit [AWS Redis](https://aws.amazon.com/redis/).
-{{% /codetab %}}
-
-{{% codetab %}}
-Visit [GCP Cloud MemoryStore](https://cloud.google.com/memorystore/).
-{{% /codetab %}}
-
-{{< /tabs >}}
-
-## Configure Dapr components
-
-Dapr can use Redis as a [`statestore` component]({{< ref setup-state-store >}}) for state persistence (`state.redis`) or as a [`pubsub` component]({{< ref setup-pubsub >}}) (`pubsub.redis`). The following yaml files demonstrates how to define each component using either a secretKey reference (which is preferred) or a plain text password.
-
-### Create component files
-
-#### State store component with secret reference
-
-Create a file called redis-state.yaml, and paste the following:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: statestore
- namespace: default
-spec:
- type: state.redis
- version: v1
- metadata:
- - name: redisHost
- value:
- - name: redisPassword
- secretKeyRef:
- name: redis
- key: redis-password
-```
-
-#### Pub/sub component with secret reference
-
-Create a file called redis-pubsub.yaml, and paste the following:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: pubsub
- namespace: default
-spec:
- type: pubsub.redis
- version: v1
- metadata:
- - name: redisHost
- value:
- - name: redisPassword
- secretKeyRef:
- name: redis
- key: redis-password
-```
-
-#### State store component with hard coded password (not recommended)
-
-For development purposes only, create a file called redis-state.yaml, and paste the following:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: statestore
- namespace: default
-spec:
- type: state.redis
- version: v1
- metadata:
- - name: redisHost
- value:
- - name: redisPassword
- value:
-```
-
-#### Pub/Sub component with hard coded password (not recommended)
-
-For development purposes only, create a file called redis-pubsub.yaml, and paste the following:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: pubsub
- namespace: default
-spec:
- type: pubsub.redis
- version: v1
- metadata:
- - name: redisHost
- value:
- - name: redisPassword
- value:
-```
-
-### Apply the configuration
-
-{{< tabs "Self-Hosted" "Kubernetes">}}
-
-{{% codetab %}}
-By default the Dapr CLI creates a local Redis instance when you run `dapr init`. However, if you want to configure a different Redis instance, create a `components` dir containing the YAML file and provide the path to the `dapr run` command with the flag `--components-path`.
-
-If you initialized Dapr using `dapr init --slim`, the Dapr CLI did not create a Redis instance or a default configuration file for it. Follow [the instructions above](#creat-a-redis-store) to create a Redis store. Create the `redis.yaml` following the configuration [instructions](#configure-dapr-components) in a `components` dir and provide the path to the `dapr run` command with the flag `--components-path`.
-{{% /codetab %}}
-
-{{% codetab %}}
-
-Run `kubectl apply -f ` for both state and pubsub files:
-
-```bash
-kubectl apply -f redis-state.yaml
-kubectl apply -f redis-pubsub.yaml
-```
-{{% /codetab %}}
-
-{{< /tabs >}}
\ No newline at end of file
diff --git a/daprdocs/content/en/getting-started/configure-state-pubsub.md b/daprdocs/content/en/getting-started/configure-state-pubsub.md
new file mode 100644
index 000000000..929694192
--- /dev/null
+++ b/daprdocs/content/en/getting-started/configure-state-pubsub.md
@@ -0,0 +1,232 @@
+---
+type: docs
+title: "How-To: Configure state store and pub/sub message broker"
+linkTitle: "Configure state & pub/sub"
+weight: 40
+description: "Configure state store and pub/sub message broker components for Dapr"
+aliases:
+ - /getting-started/configure-redis/
+---
+
+In order to get up and running with the state and pub/sub building blocks two components are needed:
+
+1. A state store component for persistence and restoration
+2. As pub/sub message broker component for async-style message delivery
+
+A full list of supported components can be found here:
+- [Supported state stores]({{< ref supported-state-stores >}})
+- [Supported pub/sub message brokers]({{< ref supported-pubsub >}})
+
+The rest of this page describes how to get up and running with Redis.
+
+{{% alert title="Self-hosted mode" color="warning" %}}
+When initialized in self-hosted mode, Dapr automatically runs a Redis container and sets up the required component yaml files. You can skip this page and go to [next steps](#next-steps)
+{{% /alert %}}
+
+## Create a Redis store
+
+Dapr can use any Redis instance - either containerized on your local dev machine or a managed cloud service. If you already have a Redis store, move on to the [configuration](#configure-dapr-components) section.
+
+{{< tabs "Self-Hosted" "Kubernetes" "Azure" "AWS" "GCP" >}}
+
+{{% codetab %}}
+Redis is automatically installed in self-hosted environments by the Dapr CLI as part of the initialization process. You are all set and can skip to the [next steps](next steps)
+{{% /codetab %}}
+
+{{% codetab %}}
+You can use [Helm](https://helm.sh/) to quickly create a Redis instance in our Kubernetes cluster. This approach requires [Installing Helm v3](https://github.com/helm/helm#install).
+
+1. Install Redis into your cluster:
+
+ ```bash
+ helm repo add bitnami https://charts.bitnami.com/bitnami
+ helm repo update
+ helm install redis bitnami/redis
+ ```
+
+ Note that you will need a Redis version greater than 5, which is what Dapr's pub/sub functionality requires. If you're intending on using Redis as just a state store (and not for pub/sub) a lower version can be used.
+
+2. Run `kubectl get pods` to see the Redis containers now running in your cluster:
+
+ ```bash
+ $ kubectl get pods
+ NAME READY STATUS RESTARTS AGE
+ redis-master-0 1/1 Running 0 69s
+ redis-slave-0 1/1 Running 0 69s
+ redis-slave-1 1/1 Running 0 22s
+ ```
+
+Note that the hostname is `redis-master.default.svc.cluster.local:6379`, and a Kubernetes secret, `redis`, is created automatically.
+
+{{% /codetab %}}
+
+{{% codetab %}}
+This method requires having an Azure Subscription.
+
+1. Open the [Azure Portal](https://ms.portal.azure.com/#create/Microsoft.Cache) to start the Azure Redis Cache creation flow. Log in if necessary.
+1. Fill out the necessary information
+ - Dapr pub/sub uses [Redis streams](https://redis.io/topics/streams-intro) that was introduced by Redis 5.0. If you would like to use Azure Redis Cache for pub/sub make sure to set the version to (PREVIEW) 6.
+1. Click "Create" to kickoff deployment of your Redis instance.
+1. You'll need the hostname of your Redis instance, which you can retrieve from the "Overview" in Azure. It should look like `xxxxxx.redis.cache.windows.net:6380`. Note this for later.
+1. Once your instance is created, you'll need to grab your access key. Navigate to "Access Keys" under "Settings" and create a Kubernetes secret to store your Redis password:
+ ```bash
+ kubectl create secret generic redis --from-literal=redis-password=*********
+ ```
+
+{{% /codetab %}}
+
+{{% codetab %}}
+1. Visit [AWS Redis](https://aws.amazon.com/redis/) to deploy a Redis instance
+1. Note the Redis hostname in the AWS portal for use later
+1. Create a Kubernetes secret to store your Redis password:
+ ```bash
+ kubectl create secret generic redis --from-literal=redis-password=*********
+ ```
+{{% /codetab %}}
+
+{{% codetab %}}
+1. Visit [GCP Cloud MemoryStore](https://cloud.google.com/memorystore/) to deploy a MemoryStore instance
+1. Note the Redis hostname in the GCP portal for use later
+1. Create a Kubernetes secret to store your Redis password:
+ ```bash
+ kubectl create secret generic redis --from-literal=redis-password=*********
+ ```
+{{% /codetab %}}
+
+{{< /tabs >}}
+
+## Configure Dapr components
+
+Dapr uses components to define what resources to use for building block functionality. These steps go through how to connect the resources you created above to Dapr for state and pub/sub.
+
+In self-hosted mode, component files are automatically created under:
+- **Windows**: `%USERPROFILE%\.dapr\components\`
+- **Linux/MacOS**: `$HOME/.dapr/components`
+
+For Kubernetes, files can be created in any directory, as they are applied with `kubectl`.
+
+### Create State store component
+
+Create a file named `redis-state.yaml`, and paste the following:
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: statestore
+ namespace: default
+spec:
+ type: state.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value:
+ - name: redisPassword
+ secretKeyRef:
+ name: redis
+ key: redis-password
+```
+
+This example uses the the kubernetes secret that was created when setting up a cluster with the above instructions.
+
+{{% alert title="Other stores" color="primary" %}}
+If using a state store other than Redis, refer to the [supported state stores]({{< ref supported-state-stores >}}) for information on what options to set.
+{{% /alert %}}
+
+### Create Pub/sub message broker component
+
+Create a file called redis-pubsub.yaml, and paste the following:
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: pubsub
+ namespace: default
+spec:
+ type: pubsub.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value:
+ - name: redisPassword
+ secretKeyRef:
+ name: redis
+ key: redis-password
+```
+
+This example uses the the kubernetes secret that was created when setting up a cluster with the above instructions.
+
+{{% alert title="Other stores" color="primary" %}}
+If using a pub/sub message broker other than Redis, refer to the [supported pub/sub message brokers]({{< ref supported-pubsub >}}) for information on what options to set.
+{{% /alert %}}
+
+### Hard coded passwords (not recommended)
+
+For development purposes only you can skip creating kubernetes secrets and place passwords directly into the Dapr component file:
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: statestore
+ namespace: default
+spec:
+ type: state.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value:
+ - name: redisPassword
+ value:
+```
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: pubsub
+ namespace: default
+spec:
+ type: pubsub.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value:
+ - name: redisPassword
+ value:
+```
+
+## Apply the configuration
+
+{{< tabs "Self-Hosted" "Kubernetes">}}
+
+{{% codetab %}}
+
+By default the Dapr CLI creates a local Redis instance when you run `dapr init`. However, if you want to configure a different Redis instance you can either:
+- Update the existing component files or create new ones in the default components directory
+ - **Linux/MacOS:** `$HOME/.dapr/components`
+ - **Windows:** `%USERPROFILE%\.dapr\components`
+- Create a new `components` directory in your app folder containing the YAML files and provide the path to the `dapr run` command with the flag `--components-path`
+
+{{% alert title="Self-hosted slim mode" color="primary" %}}
+If you initialized Dapr in [slim mode]({{< ref self-hosted-no-docker.md >}}) (without Docker) you need to manually create the default directory, or always specify a components directory using `--components-path`.
+{{% /alert %}}
+
+{{% /codetab %}}
+
+{{% codetab %}}
+
+Run `kubectl apply -f ` for both state and pubsub files:
+
+```bash
+kubectl apply -f redis-state.yaml
+kubectl apply -f redis-pubsub.yaml
+```
+{{% /codetab %}}
+
+{{< /tabs >}}
+
+## Next steps
+- [Setup your development environment]({{< ref dev-environment.md >}})
+- [Try out a Dapr quickstart]({{< ref quickstarts.md >}})
\ No newline at end of file
diff --git a/daprdocs/content/en/getting-started/dev-environment.md b/daprdocs/content/en/getting-started/dev-environment.md
new file mode 100644
index 000000000..7249393c4
--- /dev/null
+++ b/daprdocs/content/en/getting-started/dev-environment.md
@@ -0,0 +1,26 @@
+---
+type: docs
+title: "How-To: Setup a Dapr dev environment"
+linkTitle: "Setup Dev environment"
+weight: 50
+description: "How to get up and running with Dapr SDKs, extensions, and tooling"
+---
+
+As you get up and running with Dapr there are a variety of SDKs and tools to make things easier for you. Check out the below the options to get up and running in your preferred tools.
+
+## Dapr SDKs
+
+Dapr offers a variety of SDKs for developing with Dapr in your preferred language.
+
+Visit the [Dapr SDK docs]({{< ref sdks>}}) for more information and to get started in your preferred language.
+
+## IDE integrations
+
+For information on the available extensions and integrations with IDEs such as [VS Code]({{< ref vscode.md >}}) and [IntelliJ]({{< ref intellij.md >}}) visit the [Dapr IDE integrations docs]({{< ref ides >}}).
+
+## Dapr Dashboard
+
+For easy access to key information about your Dapr applications and components, make sure to run `dapr dashboard` to launch the [dashboard app](https://github.com/dapr/dashboard).
+
+## Next steps
+- [Try out a Dapr quickstart]({{< ref quickstarts.md >}})
\ No newline at end of file
diff --git a/daprdocs/content/en/getting-started/install-dapr-cli.md b/daprdocs/content/en/getting-started/install-dapr-cli.md
index 7b144e1e7..c9813720b 100644
--- a/daprdocs/content/en/getting-started/install-dapr-cli.md
+++ b/daprdocs/content/en/getting-started/install-dapr-cli.md
@@ -8,31 +8,31 @@ description: "Install the Dapr CLI to get started with Dapr"
## Dapr CLI installation scripts
-Begin by downloading and installing the Dapr CLI for v1.0.0-rc.2. This will be used to initialize your environment on your desired platform.
+Begin by downloading and installing the Dapr CLI for v0.11. This is used to initialize your environment on your desired platform.
{{% alert title="Note" color="warning" %}}
-This command will download and install Dapr v0.11. To install v1.0-rc.1, the release candidate for the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc.1 docs](https://v1-rc1.docs.dapr.io/getting-started/install-dapr-cli).
+This command downloads and install Dapr CLI v0.11. To install v1.0-rc2, our latest preview release prior to the release of the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc1 docs](https://v1-rc1.docs.dapr.io).
{{% /alert %}}
{{< tabs Linux Windows MacOS Binaries>}}
{{% codetab %}}
-This command will install the latest linux Dapr CLI to `/usr/local/bin`:
+This command installs the latest linux Dapr CLI to `/usr/local/bin`:
```bash
wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash
```
{{% /codetab %}}
{{% codetab %}}
-This command will install the latest windows Dapr cli to `%USERPROFILE%\.dapr\` and add this directory to User PATH environment variable:
+This command installs the latest windows Dapr cli to `C:\dapr` and add this directory to User PATH environment variable. Run in Command Prompt:
```powershell
powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex"
```
-Verify by opening Explorer and entering `%USERPROFILE%\.dapr\` into the address bar. You should see folders for bin, componenets and a config file.
+Verify by opening Explorer and entering `C:\dapr` into the address bar. You should see folders for bin, components, and a config file.
{{% /codetab %}}
{{% codetab %}}
-This command will install the latest darwin Dapr CLI to `/usr/local/bin`:
+This command installs the latest darwin Dapr CLI to `/usr/local/bin`:
```bash
curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash
```
@@ -57,6 +57,6 @@ Each release of Dapr CLI includes various OSes and architectures. These binary v
Learn more about the CLI and available commands in the [CLI docs]( {{< ref cli >}}).
## Next steps
-- [Init Dapr locally]({{< ref install-dapr.md >}})
+- [Init Dapr locally]({{< ref install-dapr-selfhost.md >}})
- [Init Dapr on Kubernetes]({{< ref install-dapr-kubernetes.md >}})
-- [Try a Dapr Quickstart]({{< ref quickstarts.md >}})
\ No newline at end of file
+
diff --git a/daprdocs/content/en/getting-started/install-dapr-kubernetes.md b/daprdocs/content/en/getting-started/install-dapr-kubernetes.md
index e8227826f..b3caf2653 100644
--- a/daprdocs/content/en/getting-started/install-dapr-kubernetes.md
+++ b/daprdocs/content/en/getting-started/install-dapr-kubernetes.md
@@ -8,14 +8,20 @@ description: "Install Dapr in a Kubernetes cluster"
When setting up Kubernetes you can use either the Dapr CLI or Helm.
-The following pods will be installed:
+As part of the Dapr initialization the following pods are installed:
-- dapr-operator: Manages component updates and Kubernetes services endpoints for Dapr (state stores, pub/subs, etc.)
-- dapr-sidecar-injector: Injects Dapr into annotated deployment pods
-- dapr-placement: Used for actors only. Creates mapping tables that map actor instances to pods
-- dapr-sentry: Manages mTLS between services and acts as a certificate authority
+- **dapr-operator:** Manages component updates and Kubernetes services endpoints for Dapr (state stores, pub/subs, etc.)
+- **dapr-sidecar-injector:** Injects Dapr into annotated deployment pods
+- **dapr-placement:** Used for actors only. Creates mapping tables that map actor instances to pods
+- **dapr-sentry:** Manages mTLS between services and acts as a certificate authority
-## Setup cluster
+## Prerequisites
+
+- Install [Dapr CLI]({{< ref install-dapr-cli.md >}})
+- Install [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/)
+- Kubernetes cluster (see below if needed)
+
+### Create cluster
You can install Dapr on any Kubernetes cluster. Here are some helpful links:
@@ -24,8 +30,8 @@ You can install Dapr on any Kubernetes cluster. Here are some helpful links:
- [Setup Google Cloud Kubernetes Engine](https://cloud.google.com/kubernetes-engine/docs/quickstart)
- [Setup Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html)
-{{% alert title="Note" color="primary" %}}
-Both the Dapr CLI and the Dapr Helm chart automatically deploy with affinity for nodes with the label `kubernetes.io/os=linux`. You can deploy Dapr to Windows nodes, but most users should not need to. For more information see [Deploying to a hybrid Linux/Windows Kubernetes cluster]({{}}).
+{{% alert title="Hybrid clusters" color="primary" %}}
+Both the Dapr CLI and the Dapr Helm chart automatically deploy with affinity for nodes with the label `kubernetes.io/os=linux`. You can deploy Dapr to Windows nodes if your application requires it. For more information see [Deploying to a hybrid Linux/Windows Kubernetes cluster]({{}}).
{{% /alert %}}
@@ -33,13 +39,19 @@ Both the Dapr CLI and the Dapr Helm chart automatically deploy with affinity for
You can install Dapr to a Kubernetes cluster using the [Dapr CLI]({{< ref install-dapr-cli.md >}}).
-{{% alert title="Note" color="warning" %}}
-This command will download and install Dapr v0.11. To install v1.0-rc.1, the release candidate for the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc.1 docs](https://v1-rc1.docs.dapr.io/getting-started/install-dapr-kubernetes).
+{{% alert title="Release candidate" color="warning" %}}
+This command downloads and install Dapr runtime v0.11. To install v1.0-rc1, the latest release prior to the release candidates for the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc1 docs](https://v1-rc1.docs.dapr.io).
{{% /alert %}}
### Install Dapr
-The `-k` flag will initialize Dapr on the Kuberentes cluster in your current context.
+The `-k` flag initializes Dapr on the Kubernetes cluster in your current context.
+
+{{% alert title="Target cluster" color="primary" %}}
+Make sure the correct "target" cluster is set. Check `kubectl context (kubectl config kubectl config get-contexts)` to verify. You can set a different context using `kubectl config use-context `.
+{{% /alert %}}
+
+Run `dapr init -k` on your local machine:
```bash
$ dapr init -k
@@ -51,14 +63,15 @@ $ dapr init -k
ā Success! Dapr has been installed to namespace dapr-system. To verify, run "dapr status -k" in your terminal. To get started, go here: https://aka.ms/dapr-getting-started
```
-### Install to a custom namespace:
+### Install in custom namespace
-The default namespace when initializeing Dapr is `dapr-system`. You can override this with the `-n` flag.
+The default namespace when initializing Dapr is `dapr-system`. You can override this with the `-n` flag.
```
dapr init -k -n mynamespace
```
+
### Install in highly available mode:
You can run Dapr with 3 replicas of each control plane pod with the exception of the Placement pod in the dapr-system namespace for [production scenarios]({{< ref kubernetes-production.md >}}).
@@ -67,7 +80,7 @@ You can run Dapr with 3 replicas of each control plane pod with the exception of
dapr init -k --enable-ha=true
```
-### Disable mTLS:
+### Disable mTLS
Dapr is initialized by default with [mTLS]({{< ref "security-concept.md#sidecar-to-sidecar-communication" >}}). You can disable it with:
@@ -75,7 +88,7 @@ Dapr is initialized by default with [mTLS]({{< ref "security-concept.md#sidecar-
dapr init -k --enable-mtls=false
```
-### Uninstall Dapr on Kubernetes
+### Uninstall Dapr on Kubernetes with CLI
```bash
$ dapr uninstall --kubernetes
@@ -90,10 +103,10 @@ You can install Dapr to Kubernetes cluster using a Helm 3 chart.
The latest Dapr helm chart no longer supports Helm v2. Please migrate from helm v2 to helm v3 by following [this guide](https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/).
{{% /alert %}}
-### Install Dapr on Kubernetes
+### Add and install Dapr helm chart
-1. Make sure Helm 3 is installed on your machine
-2. Add Helm repo
+1. Make sure [Helm 3](https://github.com/helm/helm/releases) is installed on your machine
+2. Add Helm repo and update
```bash
helm repo add dapr https://dapr.github.io/helm-charts/
@@ -114,7 +127,7 @@ The latest Dapr helm chart no longer supports Helm v2. Please migrate from helm
### Verify installation
-Once the chart installation is complete, verify the dapr-operator, dapr-placement, dapr-sidecar-injector and dapr-sentry pods are running in the `dapr-system` namespace:
+Once the chart installation is complete verify the dapr-operator, dapr-placement, dapr-sidecar-injector and dapr-sentry pods are running in the `dapr-system` namespace:
```bash
$ kubectl get pods -n dapr-system -w
@@ -133,8 +146,10 @@ dapr-sentry-9435776c7f-8f7yd 1/1 Running 0 40s
helm uninstall dapr -n dapr-system
```
-> **Note:** See [this page](https://github.com/dapr/dapr/blob/master/charts/dapr/README.md) for details on Dapr helm charts.
+### More information
-## Sidecar annotations
+See [this page](https://github.com/dapr/dapr/blob/master/charts/dapr/README.md) for details on Dapr helm charts.
-To see all the supported annotations for the Dapr sidecar on Kubernetes, visit [this]({{}}) how to guide.
\ No newline at end of file
+## Next steps
+
+- [Configure state store & pubsub message broker]({{< ref configure-state-pubsub.md >}})
diff --git a/daprdocs/content/en/getting-started/install-dapr-selfhost.md b/daprdocs/content/en/getting-started/install-dapr-selfhost.md
new file mode 100644
index 000000000..85af57f06
--- /dev/null
+++ b/daprdocs/content/en/getting-started/install-dapr-selfhost.md
@@ -0,0 +1,116 @@
+---
+type: docs
+title: "How-To: Install Dapr into your local environment"
+linkTitle: "Init Dapr locally"
+weight: 20
+description: "Install Dapr in your local environment for testing and self-hosting"
+aliases:
+ - /getting-started/install-dapr/
+---
+
+## Prerequisites
+
+- Install [Dapr CLI]({{< ref install-dapr-cli.md >}})
+- Install [Docker Desktop](https://docs.docker.com/install/)
+ - Windows users ensure that `Docker Desktop For Windows` uses Linux containers.
+ - (alternately) Install Dapr without Docker using [Dapr slim init]({{< ref self-hosted-no-docker.md >}})
+
+## Initialize Dapr using the CLI
+
+This step installs the latest Dapr Docker containers and setup a developer environment to help you get started easily with Dapr.
+
+- In Linux/MacOS Dapr is initialized with default components and files in `$HOME/.dapr`.
+- For Windows Dapr is initialized to `%USERPROFILE%\.dapr\`
+
+{{% alert title="Note" color="warning" %}}
+This command downloads and installs Dapr runtime v0.11. To install v1.0-rc1, the release candidates for the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc1 docs](https://v1-rc1.docs.dapr.io).
+{{% /alert %}}
+
+1. Ensure you are in an elevated terminal:
+
+ {{< tabs "Linux/MacOS" "Windows">}}
+
+ {{% codetab %}}
+ If you run your docker commands with sudo or the install path is `/usr/local/bin`(default install path), you need to use `sudo`
+ {{% /codetab %}}
+
+ {{% codetab %}}
+ Make sure that you run the command prompt terminal in administrator mode (right click, run as administrator)
+ {{% /codetab %}}
+
+ {{< /tabs >}}
+
+1. Run `dapr init`:
+
+ You can install or upgrade to a specific version of the Dapr runtime using `dapr init --runtime-version`. You can find the list of versions in [Dapr Release](https://github.com/dapr/dapr/releases)
+
+ ```bash
+ $ dapr init
+ ā Making the jump to hyperspace...
+ Downloading binaries and setting up components
+ ā Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
+ ```
+
+1. Verify Dapr version with `dapr --version`:
+
+ ```bash
+ $ dapr --version
+ CLI version: 0.11
+ Runtime version: 0.11
+ ```
+
+1. Verify Dapr containers are running with `docker ps`:
+
+ Make sure the `daprio/dapr`, `openzipkin/zipkin`, and `redis` container images are all running:
+
+ ```bash
+ $ docker ps
+ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+ 0dda6684dc2e openzipkin/zipkin "/busybox/sh run.sh" 2 minutes ago Up 2 minutes 9410/tcp, 0.0.0.0:9411->9411/tcp dapr_zipkin
+ 9bf6ef339f50 redis "docker-entrypoint.sā¦" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp dapr_redis
+ 8d993e514150 daprio/dapr "./placement" 2 minutes ago Up 2 minutes 0.0.0.0:6050->50005/tcp dapr_placement
+ ```
+
+1. Verify Dapr directory has been initialized
+
+ {{< tabs "Linux/MacOS" "Windows">}}
+
+ {{% codetab %}}
+ Run `ls $HOME/.dapr`:
+ ```bash
+ $ ls $HOME/.dapr
+ bin components config.yaml
+ ```
+ {{% /codetab %}}
+
+ {{% codetab %}}
+ Open `%USERPROFILE%\.dapr\` in file explorer
+
+ 
+ {{% /codetab %}}
+
+ {{< /tabs >}}
+
+## Uninstall Dapr in self-hosted mode
+
+This cli command removes the placement Dapr container:
+
+```bash
+$ dapr uninstall
+```
+
+{{% alert title="Warning" color="warning" %}}
+This command won't remove the Redis or Zipkin containers by default, just in case you were using them for other purposes. To remove Redis, Zipkin, Actor Placement container, as well as the default Dapr directory located at `$HOME/.dapr` or `%USERPROFILE%\.dapr\`, run:
+
+```bash
+$ dapr uninstall --all
+```
+{{% /alert %}}
+
+{{% alert title="Note" color="primary" %}}
+For Linux/MacOS users, if you run your docker cmds with sudo or the install path is `/usr/local/bin`(default install path), you need to use `sudo dapr uninstall` to remove dapr binaries and/or the containers.
+{{% /alert %}}
+
+## Next steps
+- [Setup a state store and pub/sub message broker]({{< ref configure-state-pubsub.md >}})
+
diff --git a/daprdocs/content/en/getting-started/install-dapr.md b/daprdocs/content/en/getting-started/install-dapr.md
deleted file mode 100644
index 449d03901..000000000
--- a/daprdocs/content/en/getting-started/install-dapr.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-type: docs
-title: "How-To: Install Dapr into your local environment"
-linkTitle: "Init Dapr locally"
-weight: 20
-description: "Install Dapr in your local environment for testing and self-hosting"
----
-
-## Prerequisites
-
-- Install [Dapr CLI]({{< ref install-dapr-cli.md >}})
-- Install [Docker Desktop](https://docs.docker.com/install/)
- - Windows users ensure that `Docker Desktop For Windows` uses Linux containers.
-
-By default Dapr will install with a developer environment using Docker containers to get you started easily. This getting started guide assumes Docker is installed to ensure the best experience. However, Dapr does not depend on Docker to run. Read [this page]({{< ref self-hosted-no-docker.md >}}) for instructions on installing Dapr locally without Docker using slim init.
-
-## Initialize Dapr using the CLI
-
-This step will install the latest Dapr Docker containers and setup a developer environment to help you get started easily with Dapr.
-
-{{% alert title="Note" color="warning" %}}
-This command will download and install Dapr v0.11. To install v1.0-rc.1, the release candidate for the [upcoming v1.0 release](https://blog.dapr.io/posts/2020/10/20/the-path-to-v.1.0-production-ready-dapr/), please visit the [v1.0-rc.1 docs](https://v1-rc1.docs.dapr.io/getting-started/install-dapr).
-{{% /alert %}}
-
-1. Ensure you are in an elevated terminal:
- - **Linux/MacOS:** if you run your docker cmds with sudo or the install path is `/usr/local/bin`(default install path), you need to use `sudo`
- - **Windows:** make sure that you run the cmd terminal in administrator mode
-
-2. Run `dapr init`
-
- ```bash
- $ dapr init
- ā Making the jump to hyperspace...
- Downloading binaries and setting up components
- ā Success! Dapr is up and running. To get started, go here: https://aka.ms/dapr-getting-started
- ```
-
-3. Verify installation
-
- From a command prompt run the `docker ps` command and check that the `daprio/dapr`, `openzipkin/zipkin`, and `redis` container images are running:
-
- ```bash
- $ docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 67bc611a118c daprio/dapr "./placement" About a minute ago Up About a minute 0.0.0.0:6050->50005/tcp dapr_placement
- 855f87d10249 openzipkin/zipkin "/busybox/sh run.sh" About a minute ago Up About a minute 9410/tcp, 0.0.0.0:9411->9411/tcp dapr_zipkin
- 71cccdce0e8f redis "docker-entrypoint.sā¦" About a minute ago Up About a minute 0.0.0.0:6379->6379/tcp dapr_redis
- ```
-
-4. Visit our [hello world quickstart](https://github.com/dapr/quickstarts/tree/master/hello-world) or dive into the [Dapr building blocks]({{< ref building-blocks >}})
-
-## (optional) Install a specific runtime version
-
-You can install or upgrade to a specific version of the Dapr runtime using `dapr init --runtime-version`. You can find the list of versions in [Dapr Release](https://github.com/dapr/dapr/releases).
-
-```bash
-# Install v0.11.0 runtime
-$ dapr init --runtime-version 0.11.0
-
-# Check the versions of cli and runtime
-$ dapr --version
-cli version: v0.11.0
-runtime version: v0.11.2
-```
-
-## Uninstall Dapr in self-hosted mode
-
-This command will remove the placement Dapr container:
-
-```bash
-$ dapr uninstall
-```
-
-{{% alert title="Warning" color="warning" %}}
-This command won't remove the Redis or Zipkin containers by default, just in case you were using them for other purposes. To remove Redis, Zipkin, Actor Placement container, as well as the default Dapr directory located at `$HOME/.dapr` or `%USERPROFILE%\.dapr\`, run:
-
-```bash
-$ dapr uninstall --all
-```
-{{% /alert %}}
-
-> For Linux/MacOS users, if you run your docker cmds with sudo or the install path is `/usr/local/bin`(default install path), you need to use `sudo dapr uninstall` to remove dapr binaries and/or the containers.
-
-## Configure Redis
-
-Unlike Dapr self-hosted, redis is not pre-installed out of the box on Kubernetes. To install Redis as a state store or as a pub/sub message bus in your Kubernetes cluster see [How-To: Setup Redis]({{< ref configure-redis.md >}})
\ No newline at end of file
diff --git a/daprdocs/content/en/getting-started/quickstarts.md b/daprdocs/content/en/getting-started/quickstarts.md
index dbd194e44..832469541 100644
--- a/daprdocs/content/en/getting-started/quickstarts.md
+++ b/daprdocs/content/en/getting-started/quickstarts.md
@@ -2,21 +2,26 @@
type: docs
title: "Try out Dapr quickstarts to learn core concepts"
linkTitle: "Dapr Quickstarts"
-weight: 50
-description: "Configure Redis for Dapr state management or Pub/Sub"
+weight: 60
+description: "Tutorials with code samples that are aimed to get you started quickly with Dapr"
---
-The [Dapr Quickstarts](https://github.com/dapr/quickstarts) are a collection of tutorials with code samples that are aimed to get you started quickly with Dapr, each highlighting a different Dapr capability.
+The [Dapr Quickstarts](https://github.com/dapr/quickstarts/tree/release-0.11) are a collection of tutorials with code samples that are aimed to get you started quickly with Dapr, each highlighting a different Dapr capability.
+
+- A good place to start is the hello-world quickstart, it demonstrates how to run Dapr in standalone mode locally on your machine and demonstrates state management and service invocation in a simple application.
+- Next, if you are familiar with Kubernetes and want to see how to run the same application in a Kubernetes environment, look for the hello-kubernetes quickstart. Other quickstarts such as pub-sub, bindings and the distributed-calculator quickstart explore different Dapr capabilities include instructions for running both locally and on Kubernetes and can be completed in any order. A full list of the quickstarts can be found below.
+- At anytime, you can explore the Dapr documentation or SDK specific samples and come back to try additional quickstarts.
+- When you're done, consider exploring the [Dapr samples repository](https://github.com/dapr/samples) for additional code samples contributed by the community that show more advanced or specific usages of Dapr.
## Quickstarts
| Quickstart | Description |
|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| [Hello-world](https://github.com/dapr/quickstarts/tree/master/hello-world) | Demonstrates how to run Dapr locally. Highlights service invocation and state management. |
-| [Hello-kubernetes](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) | Demonstrates how to run Dapr in Kubernetes. Highlights service invocation and state management. |
-| [Distributed-calculator](https://github.com/dapr/quickstarts/tree/master/distributed-calculator) | Demonstrates a distributed calculator application that uses Dapr services to power a React web app. Highlights polyglot (multi-language) programming, service invocation and state management. |
-| [Pub-sub](https://github.com/dapr/quickstarts/tree/master/pub-sub) | Demonstrates how to use Dapr to enable pub-sub applications. Uses Redis as a pub-sub component. |
-| [Bindings](https://github.com/dapr/quickstarts/tree/master/bindings) | Demonstrates how to use Dapr to create input and output bindings to other components. Uses bindings to Kafka. |
-| [Middleware](https://github.com/dapr/quickstarts/tree/master/middleware) | Demonstrates use of Dapr middleware to enable OAuth 2.0 authorization. |
-| [Observability](https://github.com/dapr/quickstarts/tree/master/observability) | Demonstrates Dapr tracing capabilities. Uses Zipkin as a tracing component. |
-| [Secret Store](https://github.com/dapr/quickstarts/tree/master/secretstore) | Demonstrates the use of Dapr Secrets API to access secret stores. |
\ No newline at end of file
+| [Hello World](https://github.com/dapr/quickstarts/tree/release-0.11/hello-world) | Demonstrates how to run Dapr locally. Highlights service invocation and state management. |
+| [Hello Kubernetes](https://github.com/dapr/quickstarts/tree/release-0.11/hello-kubernetes) | Demonstrates how to run Dapr in Kubernetes. Highlights service invocation and state management. |
+| [Distributed Calculator](https://github.com/dapr/quickstarts/tree/release-0.11/distributed-calculator) | Demonstrates a distributed calculator application that uses Dapr services to power a React web app. Highlights polyglot (multi-language) programming, service invocation and state management. |
+| [Pub/Sub](https://github.com/dapr/quickstarts/tree/release-0.11/pub-sub) | Demonstrates how to use Dapr to enable pub-sub applications. Uses Redis as a pub-sub component. |
+| [Bindings](https://github.com/dapr/quickstarts/tree/release-0.11/bindings) | Demonstrates how to use Dapr to create input and output bindings to other components. Uses bindings to Kafka. |
+| [Middleware](https://github.com/dapr/quickstarts/tree/release-0.11/middleware) | Demonstrates use of Dapr middleware to enable OAuth 2.0 authorization. |
+| [Observability](https://github.com/dapr/quickstarts/tree/release-0.11/observability) | Demonstrates Dapr tracing capabilities. Uses Zipkin as a tracing component. |
+| [Secret Store](https://github.com/dapr/quickstarts/tree/release-0.11/secretstore) | Demonstrates the use of Dapr Secrets API to access secret stores. |
diff --git a/daprdocs/content/en/operations/components/component-scopes.md b/daprdocs/content/en/operations/components/component-scopes.md
index 8153f7765..56c980e68 100644
--- a/daprdocs/content/en/operations/components/component-scopes.md
+++ b/daprdocs/content/en/operations/components/component-scopes.md
@@ -23,6 +23,7 @@ metadata:
namespace: production
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value: redis-master:6379
@@ -71,6 +72,7 @@ metadata:
namespace: production
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value: redis-master:6379
diff --git a/daprdocs/content/en/operations/components/component-secrets.md b/daprdocs/content/en/operations/components/component-secrets.md
index 27fd42e99..bd4c4f20f 100644
--- a/daprdocs/content/en/operations/components/component-secrets.md
+++ b/daprdocs/content/en/operations/components/component-secrets.md
@@ -1,6 +1,6 @@
---
type: docs
-title: "How-To: Reference secret stores in components"
+title: "How-To: Reference secrets in components"
linkTitle: "How-To: Reference secrets"
weight: 200
description: "How to securly reference secrets from a component definition"
@@ -18,9 +18,93 @@ When running in Kubernetes, if the `auth.secretStore` is empty, the Kubernetes s
Go to [this]({{< ref "howto-secrets.md" >}}) link to see all the secret stores supported by Dapr, along with information on how to configure and use them.
-## Non default namespaces
+## Referencing secrets
-If your Dapr enabled apps are using components that fetch secrets from non-default namespaces, apply the following resources to the namespace:
+While you have the option to use plain text secrets, this is not recommended for production:
+
+```yml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: statestore
+ namespace: default
+spec:
+ type: state.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value: localhost:6379
+ - name: redisPassword
+ value: MyPassword
+```
+
+Instead create the secret in your secret store and reference it in the component definition:
+
+```yml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: statestore
+ namespace: default
+spec:
+ type: state.redis
+ version: v1
+ metadata:
+ - name: redisHost
+ value: localhost:6379
+ - name: redisPassword
+ secretKeyRef:
+ name: redis-secret
+ key: redis-password
+auth:
+ secretStore:
+```
+
+`SECRET_STORE_NAME` is the name of the configured [secret store component]({{< ref supported-secret-stores >}}). When running in Kubernetes and using a Kubernetes secret store, the field `auth.SecretStore` defaults to `kubernetes` and can be left empty.
+
+The above component definition tells Dapr to extract a secret named `redis-secret` from the defined secret store and assign the value of the `redis-password` key in the secret to the `redisPassword` field in the Component.
+
+## Example
+
+### Referencing a Kubernetes secret
+
+The following example shows you how to create a Kubernetes secret to hold the connection string for an Event Hubs binding.
+
+1. First, create the Kubernetes secret:
+ ```bash
+ kubectl create secret generic eventhubs-secret --from-literal=connectionString=*********
+ ```
+
+2. Next, reference the secret in your binding:
+ ```yaml
+ apiVersion: dapr.io/v1alpha1
+ kind: Component
+ metadata:
+ name: eventhubs
+ namespace: default
+ spec:
+ type: bindings.azure.eventhubs
+ version: v1
+ metadata:
+ - name: connectionString
+ secretKeyRef:
+ name: eventhubs-secret
+ key: connectionString
+ ```
+
+3. Finally, apply the component to the Kubernetes cluster:
+ ```bash
+ kubectl apply -f ./eventhubs.yaml
+ ```
+## Kubernetes permissions
+
+### Default namespace
+
+When running in Kubernetes, Dapr, during installtion, defines default Role and RoleBinding for secrets access from Kubernetes secret store in the `default` namespace. For Dapr enabled apps that fetch secrets from `default` namespace, a secret can be defined and referenced in components as shown in the example above.
+
+### Non-default namespaces
+
+If your Dapr enabled apps are using components that fetch secrets from non-default namespaces, apply the following resources to that namespace:
```yaml
---
@@ -49,79 +133,8 @@ roleRef:
apiGroup: rbac.authorization.k8s.io
```
-## Examples
+These resources grant Dapr permissions to get secrets from the Kubernetes secret store for the namespace defined in the Role and RoleBinding.
-Using plain text:
-
-```yml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: statestore
- namespace: default
-spec:
- type: state.redis
- metadata:
- - name: redisHost
- value: localhost:6379
- - name: redisPassword
- value: MyPassword
-```
-
-Using a Kubernetes secret:
-
-```yml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: statestore
- namespace: default
-spec:
- type: state.redis
- metadata:
- - name: redisHost
- value: localhost:6379
- - name: redisPassword
- secretKeyRef:
- name: redis-secret
- key: redis-password
-auth:
- secretStore: kubernetes
-```
-
-The above example tells Dapr to use the `kubernetes` secret store, extract a secret named `redis-secret` and assign the value of the `redis-password` key in the secret to the `redisPassword` field in the Component.
-
-### Creating a secret and referencing it in a Component
-
-The following example shows you how to create a Kubernetes secret to hold the connection string for an Event Hubs binding.
-
-First, create the Kubernetes secret:
-
-```bash
-kubectl create secret generic eventhubs-secret --from-literal=connectionString=*********
-```
-
-Next, reference the secret in your binding:
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: eventhubs
- namespace: default
-spec:
- type: bindings.azure.eventhubs
- metadata:
- - name: connectionString
- secretKeyRef:
- name: eventhubs-secret
- key: connectionString
-```
-
-Finally, apply the component to the Kubernetes cluster:
-
-```bash
-kubectl apply -f ./eventhubs.yaml
-```
-
-All done!
+{{% alert title="Note" color="warning" %}}
+In production scenario to limit Dapr's access to certain secret resources alone, you can use the `resourceNames` field. See this [link](https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources) for further explanation.
+{{% /alert %}}
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/_index.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/_index.md
index 159f82042..cc339776e 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/_index.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/_index.md
@@ -20,14 +20,14 @@ Every binding has its own unique set of properties. Click the name link to see t
| [Kubernetes Events]({{< ref "kubernetes-binding.md" >}}) | ā | | Experimental |
| [MQTT]({{< ref mqtt.md >}}) | ā | ā | Experimental |
| [PostgreSql]({{< ref postgres.md >}}) | | ā | Experimental |
+| [Postmark]({{< ref postmark.md >}}) | | ā | Experimental |
| [RabbitMQ]({{< ref rabbitmq.md >}}) | ā | ā | Experimental |
| [Redis]({{< ref redis.md >}}) | | ā | Experimental |
| [Twilio]({{< ref twilio.md >}}) | | ā | Experimental |
| [Twitter]({{< ref twitter.md >}}) | ā | ā | Experimental |
| [SendGrid]({{< ref sendgrid.md >}}) | | ā | Experimental |
-
-### Amazon Web Service (AWS)
+### Amazon Web Services (AWS)
| Name | Input Binding | Output Binding | Status |
|------|:----------------:|:-----------------:|--------|
@@ -37,7 +37,6 @@ Every binding has its own unique set of properties. Click the name link to see t
| [AWS SQS]({{< ref sqs.md >}}) | ā | ā | Experimental |
| [AWS Kinesis]({{< ref kinesis.md >}}) | ā | ā | Experimental |
-
### Google Cloud Platform (GCP)
| Name | Input Binding | Output Binding | Status |
@@ -55,4 +54,4 @@ Every binding has its own unique set of properties. Click the name link to see t
| [Azure Service Bus Queues]({{< ref servicebusqueues.md >}}) | ā | ā | Experimental |
| [Azure SignalR]({{< ref signalr.md >}}) | | ā | Experimental |
| [Azure Storage Queues]({{< ref storagequeues.md >}}) | ā | ā | Experimental |
-| [Azure Event Grid]({{< ref eventgrid.md >}}) | ā | ā | Experimental |
\ No newline at end of file
+| [Azure Event Grid]({{< ref eventgrid.md >}}) | ā | ā | Experimental |
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/apns.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/apns.md
index b4ba62999..76aa5c5dc 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/apns.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/apns.md
@@ -16,6 +16,7 @@ metadata:
namespace:
spec:
type: bindings.apns
+ version: v1
metadata:
- name: development
value:
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/blobstorage.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/blobstorage.md
index 0e9a9327b..02a38eac2 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/blobstorage.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/blobstorage.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.azure.blobstorage
+ version: v1
metadata:
- name: storageAccount
value: myStorageAccountName
@@ -22,8 +23,6 @@ spec:
value: ***********
- name: container
value: container1
- - name: decodeBase64
- value: true
```
- `storageAccount` is the Blob Storage account name.
@@ -39,7 +38,7 @@ The above example uses secrets as plain strings. It is recommended to use a secr
### Create Blob
-To perform a get blob operation, invoke the Azure Blob Storage binding with a `POST` method and the following JSON body:
+To perform a create blob operation, invoke the Azure Blob Storage binding with a `POST` method and the following JSON body:
```json
{
@@ -119,4 +118,4 @@ Applications publishing to an Azure Blob Storage output binding should send a me
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cosmosdb.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cosmosdb.md
index e11325edf..8f2ee97b0 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cosmosdb.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cosmosdb.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.azure.cosmosdb
+ version: v1
metadata:
- name: url
value: https://******.documents.azure.com:443/
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cron.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cron.md
index 2a6e9c6ed..55a44cdf4 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cron.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/cron.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.cron
+ version: v1
metadata:
- name: schedule
value: "@every 15m" # valid cron schedule
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/dynamodb.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/dynamodb.md
index ad1af6341..cd1e86d3a 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/dynamodb.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/dynamodb.md
@@ -6,6 +6,7 @@ description: "Detailed documentation on the AWS DynamoDB binding component"
---
## Setup Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -15,22 +16,24 @@ metadata:
namespace:
spec:
type: bindings.aws.dynamodb
+ version: v1
metadata:
+ - name: table
+ value: items
- name: region
value: us-west-2
- name: accessKey
value: *****************
- name: secretKey
value: *****************
- - name: table
- value: items
-```
+ - name: sessionToken
+ value: *****************
-- `region` is the AWS region.
-- `accessKey` is the AWS access key.
-- `secretKey` is the AWS secret key.
+```
- `table` is the DynamoDB table name.
+
+
{{% alert title="Warning" color="warning" %}}
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
{{% /alert %}}
@@ -43,4 +46,5 @@ The above example uses secrets as plain strings. It is recommended to use a secr
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventgrid.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventgrid.md
index 0f2169bf3..781a4c795 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventgrid.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventgrid.md
@@ -16,6 +16,7 @@ metadata:
name:
spec:
type: bindings.azure.eventgrid
+ version: v1
metadata:
# Required Input Binding Metadata
- name: tenantId
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventhubs.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventhubs.md
index 9b7a13458..c6e95653f 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventhubs.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/eventhubs.md
@@ -17,6 +17,7 @@ metadata:
namespace:
spec:
type: bindings.azure.eventhubs
+ version: v1
metadata:
- name: connectionString # Azure EventHubs connection string
value: "Endpoint=sb://****"
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcpbucket.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcpbucket.md
index bde28c423..1739a68b2 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcpbucket.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcpbucket.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.gcp.bucket
+ version: v1
metadata:
- name: bucket
value: mybucket
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcppubsub.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcppubsub.md
index f8fd48205..b84dce0f2 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcppubsub.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/gcppubsub.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.gcp.pubsub
+ version: v1
metadata:
- name: topic
value: topic1
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/http.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/http.md
index afe532905..bc30a7656 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/http.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/http.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.http
+ version: v1
metadata:
- name: url
value: http://something.com
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/influxdb.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/influxdb.md
index 4f22627de..a83dcd0c5 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/influxdb.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/influxdb.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.influx
+ version: v1
metadata:
- name: url # Required
value:
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kafka.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kafka.md
index 0933d43a0..4c845a8e1 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kafka.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kafka.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.kafka
+ version: v1
metadata:
- name: topics # Optional. in use for input bindings
value: topic1,topic2
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kinesis.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kinesis.md
index 4c44a5676..35eae35b2 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kinesis.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kinesis.md
@@ -8,6 +8,7 @@ description: "Detailed documentation on the AWS Kinesis binding component"
See [this](https://aws.amazon.com/kinesis/data-streams/getting-started/) for instructions on how to set up an AWS Kinesis data streams
## Setup Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -17,24 +18,24 @@ metadata:
namespace:
spec:
type: bindings.aws.kinesis
+ version: v1
metadata:
- - name: region
- value: AWS_REGION #replace
- - name: accessKey
- value: AWS_ACCESS_KEY # replace
- - name: secretKey
- value: AWS_SECRET_KEY #replace
- name: streamName
value: KINESIS_STREAM_NAME # Kinesis stream name
- name: consumerName
value: KINESIS_CONSUMER_NAME # Kinesis consumer name
- name: mode
value: shared # shared - Shared throughput or extended - Extended/Enhanced fanout
-```
+ - name: region
+ value: AWS_REGION #replace
+ - name: accessKey
+ value: AWS_ACCESS_KEY # replace
+ - name: secretKey
+ value: AWS_SECRET_KEY #replace
+ - name: sessionToken
+ value: *****************
-- `region` is the AWS region.
-- `accessKey` is the AWS access key.
-- `secretKey` is the AWS secret key.
+```
- `mode` Accepted values: shared, extended. shared - Shared throughput, extended - Extended/Enhanced fanout methods. More details are [here](https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html)
- `streamName` is the AWS Kinesis Stream Name.
- `consumerName` is the AWS Kinesis Consumer Name.
@@ -52,4 +53,5 @@ The above example uses secrets as plain strings. It is recommended to use a secr
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kubernetes-binding.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kubernetes-binding.md
index 54b0d708d..165c2673f 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kubernetes-binding.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/kubernetes-binding.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.kubernetes
+ version: v1
metadata:
- name: namespace
value:
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/mqtt.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/mqtt.md
index 585f44d9e..6641f745e 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/mqtt.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/mqtt.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.mqtt
+ version: v1
metadata:
- name: url
value: mqtt[s]://[username][:password]@host.domain[:port]
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postgres.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postgres.md
index a606a16ac..6239660b5 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postgres.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postgres.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.postgres
+ version: v1
metadata:
- name: url # Required
value:
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postmark.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postmark.md
new file mode 100644
index 000000000..1c01d9d7b
--- /dev/null
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/postmark.md
@@ -0,0 +1,69 @@
+---
+type: docs
+title: "Postmark binding spec"
+linkTitle: "Postmark"
+description: "Detailed documentation on the Postmark binding component"
+---
+
+## Setup Dapr component
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Component
+metadata:
+ name: postmark
+ namespace: default
+spec:
+ type: bindings.postmark
+ metadata:
+ - name: accountToken
+ value: "YOUR_ACCOUNT_TOKEN" # required, this is your Postmark account token
+ - name: serverToken
+ value: "YOUR_SERVER_TOKEN" # required, this is your Postmark server token
+ - name: emailFrom
+ value: "testapp@dapr.io" # optional
+ - name: emailTo
+ value: "dave@dapr.io" # optional
+ - name: subject
+ value: "Hello!" # optional
+```
+
+- `accountToken` is your Postmark account token, this should be considered a secret value. Required.
+- `serverToken` is your Postmark server token, this should be considered a secret value. Required.
+- `emailFrom` If set this specifies the 'from' email address of the email message. Optional field, see below.
+- `emailTo` If set this specifies the 'to' email address of the email message. Optional field, see below.
+- `emailCc` If set this specifies the 'cc' email address of the email message. Optional field, see below.
+- `emailBcc` If set this specifies the 'bcc' email address of the email message. Optional field, see below.
+- `subject` If set this specifies the subject of the email message. Optional field, see below.
+
+You can specify any of the optional metadata properties on the output binding request too (e.g. `emailFrom`, `emailTo`, `subject`, etc.)
+
+Combined, the optional metadata properties in the component configuration and the request payload should at least contain the `emailFrom`, `emailTo` and `subject` fields, as these are required to send an email with success.
+
+Example request payload
+
+```json
+{
+ "operation": "create",
+ "metadata": {
+ "emailTo": "changeme@example.net",
+ "subject": "An email from Dapr Postmark binding"
+ },
+ "data": "
Testing Dapr Bindings
This is a test. Bye!"
+}
+```
+
+{{% alert title="Warning" color="warning" %}}
+The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
+{{% /alert %}}
+
+## Output Binding Supported Operations
+
+- `create`
+
+## Related links
+
+- [Bindings building block]({{< ref bindings >}})
+- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
+- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
+- [Bindings API reference]({{< ref bindings_api.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rabbitmq.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rabbitmq.md
index a5e4011f1..937b034ea 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rabbitmq.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rabbitmq.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.rabbitmq
+ version: v1
metadata:
- name: queueName
value: queue1
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/redis.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/redis.md
index bc3ac417b..854079f77 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/redis.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/redis.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.redis
+ version: v1
metadata:
- name: redisHost
value: :6379
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rethinkdb.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rethinkdb.md
index ced4b9f5b..3cf20dcad 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rethinkdb.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/rethinkdb.md
@@ -23,6 +23,7 @@ metadata:
name: changes
spec:
type: bindings.rethinkdb.statechange
+ version: v1
metadata:
- name: address
value: # Required, e.g. 127.0.0.1:28015 or rethinkdb.default.svc.cluster.local:28015).
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/s3.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/s3.md
index 39b1868ad..a9f73e044 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/s3.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/s3.md
@@ -6,6 +6,7 @@ description: "Detailed documentation on the AWS S3 binding component"
---
## Setup Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -15,7 +16,10 @@ metadata:
namespace:
spec:
type: bindings.aws.s3
+ version: v1
metadata:
+ - name: bucket
+ value: mybucket
- name: region
value: us-west-2
- name: accessKey
@@ -26,10 +30,7 @@ spec:
value: mybucket
```
-- `region` is the AWS region.
-- `accessKey` is the AWS access key.
-- `secretKey` is the AWS secret key.
-- `table` is the name of the S3 bucket to write to.
+- `bucket` is the name of the S3 bucket to write to.
{{% alert title="Warning" color="warning" %}}
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described [here]({{< ref component-secrets.md >}}).
@@ -43,4 +44,5 @@ The above example uses secrets as plain strings. It is recommended to use a secr
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sendgrid.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sendgrid.md
index 9962205f7..303813187 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sendgrid.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sendgrid.md
@@ -15,6 +15,7 @@ metadata:
namespace: default
spec:
type: bindings.twilio.sendgrid
+ version: v1
metadata:
- name: emailFrom
value: "testapp@dapr.io" # optional
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/servicebusqueues.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/servicebusqueues.md
index 870d18a7c..f049f3057 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/servicebusqueues.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/servicebusqueues.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.azure.servicebusqueues
+ version: v1
metadata:
- name: connectionString
value: "sb://************"
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/signalr.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/signalr.md
index a671d4383..4f9b2c93f 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/signalr.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/signalr.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.azure.signalr
+ version: v1
metadata:
- name: connectionString
value: Endpoint=https://.service.signalr.net;AccessKey=;Version=1.0;
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sns.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sns.md
index 7e0915154..a898f206c 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sns.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sns.md
@@ -6,6 +6,7 @@ description: "Detailed documentation on the AWS SNS binding component"
---
## Setup Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -15,20 +16,21 @@ metadata:
namespace:
spec:
type: bindings.aws.sns
+ version: v1
metadata:
+ - name: topicArn
+ value: mytopic
- name: region
value: us-west-2
- name: accessKey
value: *****************
- name: secretKey
value: *****************
- - name: topicArn
- value: mytopic
+ - name: sessionToken
+ value: *****************
+
```
-- `region` is the AWS region.
-- `accessKey` is the AWS access key.
-- `secretKey` is the AWS secret key.
- `topicArn` is the SNS topic name.
{{% alert title="Warning" color="warning" %}}
@@ -43,4 +45,5 @@ The above example uses secrets as plain strings. It is recommended to use a secr
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sqs.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sqs.md
index 3c378e458..304856640 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sqs.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/sqs.md
@@ -6,6 +6,7 @@ description: "Detailed documentation on the AWS SQS binding component"
---
## Setup Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -15,20 +16,21 @@ metadata:
namespace:
spec:
type: bindings.aws.sqs
+ version: v1
metadata:
+ - name: queueName
+ value: items
- name: region
value: us-west-2
- name: accessKey
value: *****************
- name: secretKey
value: *****************
- - name: queueName
- value: items
+ - name: sessionToken
+ value: *****************
+
```
-- `region` is the AWS region.
-- `accessKey` is the AWS access key.
-- `secretKey` is the AWS secret key.
- `queueName` is the SQS queue name.
{{% alert title="Warning" color="warning" %}}
@@ -44,4 +46,5 @@ The above example uses secrets as plain strings. It is recommended to use a secr
- [Bindings building block]({{< ref bindings >}})
- [How-To: Trigger application with input binding]({{< ref howto-triggers.md >}})
- [How-To: Use bindings to interface with external resources]({{< ref howto-bindings.md >}})
-- [Bindings API reference]({{< ref bindings_api.md >}})
\ No newline at end of file
+- [Bindings API reference]({{< ref bindings_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/storagequeues.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/storagequeues.md
index be233416b..0f3590318 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/storagequeues.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/storagequeues.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.azure.storagequeues
+ version: v1
metadata:
- name: storageAccount
value: "account1"
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twilio.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twilio.md
index 521503ffa..dbf8eb9d4 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twilio.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twilio.md
@@ -15,6 +15,7 @@ metadata:
namespace:
spec:
type: bindings.twilio.sms
+ version: v1
metadata:
- name: toNumber # required.
value: 111-111-1111
diff --git a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twitter.md b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twitter.md
index affdac1a9..ce5fa1fe3 100644
--- a/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twitter.md
+++ b/daprdocs/content/en/operations/components/setup-bindings/supported-bindings/twitter.md
@@ -17,6 +17,7 @@ metadata:
namespace:
spec:
type: bindings.twitter
+ version: v1
metadata:
- name: consumerKey
value: "****" # twitter api consumer key, required
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md
index f44a43927..ffe6c45ea 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md
@@ -46,6 +46,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: "redisHost"
value: "redis-master.namespace-a.svc:6379"
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/setup-pubsub-overview.md b/daprdocs/content/en/operations/components/setup-pubsub/setup-pubsub-overview.md
index 96343ae73..b4722eae1 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/setup-pubsub-overview.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/setup-pubsub-overview.md
@@ -21,6 +21,7 @@ metadata:
namespace: default
spec:
type: pubsub.
+ version: v1
metadata:
- name:
value:
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-apache-kafka.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-apache-kafka.md
index 97ba6022e..e8dd3cd53 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-apache-kafka.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-apache-kafka.md
@@ -33,6 +33,7 @@ metadata:
namespace:
spec:
type: pubsub.kafka
+ version: v1
metadata:
# Kafka broker connection setting
- name: brokers
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-aws-snssqs.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-aws-snssqs.md
index e2bb8a5bb..696772dad 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-aws-snssqs.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-aws-snssqs.md
@@ -14,8 +14,10 @@ This article describes configuring Dapr to use AWS SNS/SQS for pub/sub on local
{{% codetab %}}
For local development the [localstack project](https://github.com/localstack/localstack) is used to integrate AWS SNS/SQS. Follow the instructions [here](https://github.com/localstack/localstack#installing) to install the localstack CLI.
-In order to use localstack with your pubsub binding, you need to provide the `awsEndpoint` configuration
-in the component metadata. The `awsEndpoint` is unncessary when running against production AWS.
+In order to use localstack with your pubsub binding, you need to provide the `endpoint` configuration
+in the component metadata. The `endpoint` is unncessary when running against production AWS.
+
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -24,8 +26,9 @@ metadata:
name: messagebus
spec:
type: pubsub.snssqs
+ version: v1
metadata:
- - name: awsEndpoint
+ - name: endpoint
value: http://localhost:4566
# Use us-east-1 for localstack
- name: awsRegion
@@ -36,7 +39,7 @@ spec:
{{% codetab %}}
To run localstack on Kubernetes, you can apply the configuration below. Localstack is then
reachable at the DNS name `http://localstack.default.svc.cluster.local:4566`
-(assuming this was applied to the default namespace) and this should be used as the `awsEndpoint`
+(assuming this was applied to the default namespace) and this should be used as the `endpoint`
```yaml
apiVersion: apps/v1
kind: Deployment
@@ -101,17 +104,18 @@ metadata:
namespace:
spec:
type: pubsub.snssqs
+ version: v1
metadata:
# ID of the AWS account with appropriate permissions to SNS and SQS
- - name: awsAccountID
- value:
+ - name: accessKey
+ value: **********
# Secret for the AWS user
- - name: awsSecret
- value:
+ - name: secretKey
+ value: **********
# The AWS region you want to operate in.
# See this page for valid regions: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html
# Make sure that SNS and SQS are available in that region.
- - name: awsRegion
+ - name: region
value: us-east-1
```
@@ -128,3 +132,4 @@ Visit [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >
- [AWS SQS as subscriber to SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-sqs-as-subscriber.html)
- [AWS SNS API refernce](https://docs.aws.amazon.com/sns/latest/api/Welcome.html)
- [AWS SQS API refernce](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Welcome.html)
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-eventhubs.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-eventhubs.md
index 021836301..843b757a3 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-eventhubs.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-eventhubs.md
@@ -24,6 +24,7 @@ metadata:
namespace:
spec:
type: pubsub.azure.eventhubs
+ version: v1
metadata:
- name: connectionString
value: # Required. "Endpoint=sb://****"
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-servicebus.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-servicebus.md
index e0b72b41d..fddaeb2c1 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-servicebus.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-azure-servicebus.md
@@ -23,6 +23,7 @@ metadata:
namespace:
spec:
type: pubsub.azure.servicebus
+ version: v1
metadata:
- name: connectionString
value: # Required.
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-gcp.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-gcp.md
index ebdffd990..66bde32ff 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-gcp.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-gcp.md
@@ -23,6 +23,7 @@ metadata:
namespace:
spec:
type: pubsub.gcp.pubsub
+ version: v1
metadata:
- name: topic
value:
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-hazelcast.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-hazelcast.md
index ce907461d..90684ccc2 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-hazelcast.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-hazelcast.md
@@ -39,6 +39,7 @@ metadata:
namespace:
spec:
type: pubsub.hazelcast
+ version: v1
metadata:
- name: hazelcastServers
value: # Required. A comma delimited string of servers. Example: "hazelcast:3000,hazelcast2:3000"
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-mqtt.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-mqtt.md
index 02a050263..150bde6c0 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-mqtt.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-mqtt.md
@@ -89,6 +89,7 @@ metadata:
namespace:
spec:
type: pubsub.mqtt
+ version: v1
metadata:
- name: url
value: "tcp://[username][:password]@host.domain[:port]"
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-nats-streaming.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-nats-streaming.md
index 86cf07a61..fa1ef5dae 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-nats-streaming.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-nats-streaming.md
@@ -54,6 +54,7 @@ metadata:
namespace:
spec:
type: pubsub.natsstreaming
+ version: v1
metadata:
- name: natsURL
value: # Required. example nats://localhost:4222
@@ -62,8 +63,10 @@ spec:
# blow are subscription configuration.
- name: subscriptionType
value: # Required. Allowed values: topic, queue.
- - name: consumerID
- value: # Optional. Any String would be accept.
+ # - name: ackWaitTime
+ # value: "" # Optional. See: https://docs.nats.io/developing-with-nats-streaming/acks#acknowledgements
+ # - name: maxInFlight
+ # value: "" # Optional. See: https://docs.nats.io/developing-with-nats-streaming/acks#acknowledgements
# - name: durableSubscriptionName
# value: ""
# following subscription options - only one can be used
@@ -92,4 +95,4 @@ The above example uses secrets as plain strings. It is recommended to use a secr
Visit [this guide]({{< ref "howto-publish-subscribe.md#step-2-publish-a-topic" >}}) for instructions on configuring pub/sub components.
## Related links
-- [Pub/Sub building block]({{< ref pubsub >}})
\ No newline at end of file
+- [Pub/Sub building block]({{< ref pubsub >}})
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-pulsar.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-pulsar.md
index 4fd055a09..90fca4c45 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-pulsar.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-pulsar.md
@@ -42,6 +42,7 @@ metadata:
namespace:
spec:
type: pubsub.pulsar
+ version: v1
metadata:
- name: host
value: #default is localhost:6650
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-rabbitmq.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-rabbitmq.md
index 2be8211aa..f363fd565 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-rabbitmq.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-rabbitmq.md
@@ -52,11 +52,10 @@ metadata:
namespace:
spec:
type: pubsub.rabbitmq
+ version: v1
metadata:
- name: host
value: # Required. Example: "amqp://rabbitmq.default.svc.cluster.local:5672", "amqp://localhost:5672"
- - name: consumerID
- value: # Required. Any unique ID. Example: "myConsumerID"
- name: durable
value: # Optional. Default: "false"
- name: deletedWhenUnused
diff --git a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-redis-pubsub.md b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-redis-pubsub.md
index 3476d3858..eecb76723 100644
--- a/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-redis-pubsub.md
+++ b/daprdocs/content/en/operations/components/setup-pubsub/supported-pubsub/setup-redis-pubsub.md
@@ -78,6 +78,7 @@ metadata:
namespace: default
spec:
type: pubsub.redis
+ version: v1
metadata:
- name: redisHost
value:
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/secret-stores-overview.md b/daprdocs/content/en/operations/components/setup-secret-store/secret-stores-overview.md
index 728f1c136..001bffa00 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/secret-stores-overview.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/secret-stores-overview.md
@@ -21,6 +21,7 @@ metadata:
namespace: default
spec:
type: secretstores.
+ version: v1
metadata:
- name:
value:
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/aws-secret-manager.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/aws-secret-manager.md
index 9eebb122b..228769034 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/aws-secret-manager.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/aws-secret-manager.md
@@ -10,6 +10,7 @@ description: Detailed information on the decret store component
Setup AWS Secrets Manager using the AWS documentation: https://docs.aws.amazon.com/secretsmanager/latest/userguide/tutorials_basic.html.
## Create the Dapr component
+See [Authenticating to AWS]({{< ref authenticating-aws.md >}}) for information about authentication-related attributes
```yaml
apiVersion: dapr.io/v1alpha1
@@ -19,14 +20,15 @@ metadata:
namespace: default
spec:
type: secretstores.aws.secretmanager
+ version: v1
metadata:
- name: region
- value: [aws_region] # Required.
- - name: accessKey # Required.
+ value: "[aws_region]"
+ - name: accessKey
value: "[aws_access_key]"
- - name: secretKey # Required.
+ - name: secretKey
value: "[aws_secret_key]"
- - name: sessionToken # Required.
+ - name: sessionToken
value: "[aws_session_token]"
```
@@ -47,6 +49,7 @@ metadata:
namespace: default
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value: "[redis]:6379"
@@ -66,4 +69,5 @@ The above example uses secrets as plain strings. It is recommended to use a loca
- [Secrets building block]({{< ref secrets >}})
- [How-To: Retreive a secret]({{< ref "howto-secrets.md" >}})
- [How-To: Reference secrets in Dapr components]({{< ref component-secrets.md >}})
-- [Secrets API reference]({{< ref secrets_api.md >}})
\ No newline at end of file
+- [Secrets API reference]({{< ref secrets_api.md >}})
+- [Authenticating to AWS]({{< ref authenticating-aws.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault-managed-identity.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault-managed-identity.md
index 5613eba2c..26d0a6eba 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault-managed-identity.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault-managed-identity.md
@@ -30,7 +30,7 @@ description: How to configure Azure Key Vault and Kubernetes to use Azure Manage
3. Create the managed identity(Optional)
- This step is required only if the AKS Cluster is provisoned without the flag "--enable-managed-identity". If the cluster is provisioned with a managed identity, then it is suggested to use the autogenerated managed identity that is associated to the Resource Group MC_*.
+ This step is required only if the AKS Cluster is provisoned without the flag "--enable-managed-identity". If the cluster is provisioned with manahed identity, than is suggested to use the autogenerated managed identity that is associated to the Resource Group MC_*.
```bash
$identity = az identity create -g [your resource group] -n [you managed identity name] -o json | ConvertFrom-Json
@@ -45,7 +45,7 @@ description: How to configure Azure Key Vault and Kubernetes to use Azure Manage
4. Retrieve Managed Identity ID
- The two main scenarios are:
+ The two main scenario are:
- Service Principal, in this case the Resource Group is the one in which is deployed the AKS Service Cluster
```bash
@@ -67,9 +67,7 @@ description: How to configure Azure Key Vault and Kubernetes to use Azure Manage
```
6. Assign the Managed Identity Operator role to the AKS Service Principal
-
- Refer to the previous step about the Resource Group to use and which identity to assign.
-
+ Refer to previous step about the Resource Group to use and which identity to assign
```bash
az role assignment create --role "Managed Identity Operator" --assignee $clientId --scope /subscriptions/[your subscription id]/resourcegroups/[your resource group]
@@ -126,7 +124,7 @@ In Kubernetes mode, you store the certificate for the service principal into the
1. Create azurekeyvault.yaml component file
- The component yaml uses the name of your key vault and the Client ID of the managed identity to setup the secret store.
+ The component yaml uses the name of your key vault and the Cliend ID of the managed identity to setup the secret store.
```yaml
apiVersion: dapr.io/v1alpha1
@@ -136,6 +134,7 @@ In Kubernetes mode, you store the certificate for the service principal into the
namespace: default
spec:
type: secretstores.azure.keyvault
+ version: v1
metadata:
- name: vaultName
value: [your_keyvault_name]
@@ -150,10 +149,10 @@ In Kubernetes mode, you store the certificate for the service principal into the
```
## References
-- [Azure CLI Key Vault CLI](https://docs.microsoft.com/en-us/cli/azure/keyvault?view=azure-cli-latest#az-keyvault-create)
+- [Azure CLI Keyvault CLI](https://docs.microsoft.com/en-us/cli/azure/keyvault?view=azure-cli-latest#az-keyvault-create)
- [Create an Azure service principal with Azure CLI](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest)
- [AAD Pod Identity](https://github.com/Azure/aad-pod-identity)
- [Secrets building block]({{< ref secrets >}})
- [How-To: Retreive a secret]({{< ref "howto-secrets.md" >}})
- [How-To: Reference secrets in Dapr components]({{< ref component-secrets.md >}})
-- [Secrets API reference]({{< ref secrets_api.md >}})
+- [Secrets API reference]({{< ref secrets_api.md >}})
\ No newline at end of file
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault.md
index 38cae15f3..f23ad5d7b 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/azure-keyvault.md
@@ -102,6 +102,7 @@ Azure Managed Identity can be used for Azure Key Vault access on Kubernetes. Ins
namespace: default
spec:
type: secretstores.azure.keyvault
+ version: v1
metadata:
- name: vaultName
value: [your_keyvault_name]
@@ -140,6 +141,7 @@ metadata:
namespace: default
spec:
type: secretstores.azure.keyvault
+ version: v1
metadata:
- name: vaultName
value: [your_keyvault_name]
@@ -171,4 +173,4 @@ kubectl apply -f azurekeyvault.yaml
- [Secrets building block]({{< ref secrets >}})
- [How-To: Retreive a secret]({{< ref "howto-secrets.md" >}})
- [How-To: Reference secrets in Dapr components]({{< ref component-secrets.md >}})
-- [Secrets API reference]({{< ref secrets_api.md >}})
\ No newline at end of file
+- [Secrets API reference]({{< ref secrets_api.md >}})
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/envvar-secret-store.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/envvar-secret-store.md
index 59a327076..3cd884d81 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/envvar-secret-store.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/envvar-secret-store.md
@@ -24,6 +24,7 @@ metadata:
namespace: default
spec:
type: secretstores.local.env
+ version: v1
metadata:
```
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/file-secret-store.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/file-secret-store.md
index 43fc8f00c..db428af8b 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/file-secret-store.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/file-secret-store.md
@@ -32,6 +32,7 @@ metadata:
namespace: default
spec:
type: secretstores.local.file
+ version: v1
metadata:
- name: secretsFile
value: [path to the JSON file]
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/gcp-secret-manager.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/gcp-secret-manager.md
index c3ff38543..394eaec08 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/gcp-secret-manager.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/gcp-secret-manager.md
@@ -21,6 +21,7 @@ metadata:
namespace: default
spec:
type: secretstores.gcp.secretmanager
+ version: v1
metadata:
- name: type
value: service_account
@@ -80,6 +81,7 @@ metadata:
namespace: default
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value: "[redis]:6379"
diff --git a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/hashicorp-vault.md b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/hashicorp-vault.md
index 91fb25b70..f71cbf784 100644
--- a/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/hashicorp-vault.md
+++ b/daprdocs/content/en/operations/components/setup-secret-store/supported-secret-stores/hashicorp-vault.md
@@ -30,6 +30,7 @@ metadata:
namespace: default
spec:
type: secretstores.hashicorp.vault
+ version: v1
metadata:
- name: vaultAddr
value: [vault_address] # Optional. Default: "https://127.0.0.1:8200"
@@ -78,6 +79,7 @@ metadata:
namespace: default
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value: "[redis]:6379"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/setup-state-store-overview.md b/daprdocs/content/en/operations/components/setup-state-store/setup-state-store-overview.md
index 07268d4ff..c3f528dd6 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/setup-state-store-overview.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/setup-state-store-overview.md
@@ -20,6 +20,7 @@ metadata:
namespace: default
spec:
type: state.
+ version: v1
metadata:
- name:
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-aerospike.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-aerospike.md
index 43802d243..af3538eb1 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-aerospike.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-aerospike.md
@@ -51,6 +51,7 @@ metadata:
namespace:
spec:
type: state.Aerospike
+ version: v1
metadata:
- name: hosts
value: # Required. A comma delimited string of hosts. Example: "aerospike:3000,aerospike2:3000"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-blobstorage.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-blobstorage.md
index ea5e4b063..78395caab 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-blobstorage.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-blobstorage.md
@@ -30,6 +30,7 @@ metadata:
namespace:
spec:
type: state.azure.blobstorage
+ version: v1
metadata:
- name: accountName
value:
@@ -55,6 +56,7 @@ metadata:
namespace:
spec:
type: state.azure.blobstorage
+ version: v1
metadata:
- name: accountName
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-cosmosdb.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-cosmosdb.md
index 0f310fc45..5b2a262d7 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-cosmosdb.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-cosmosdb.md
@@ -31,6 +31,7 @@ metadata:
namespace:
spec:
type: state.azure.cosmosdb
+ version: v1
metadata:
- name: url
value:
@@ -57,6 +58,7 @@ metadata:
name: statestore
spec:
type: state.azure.cosmosdb
+ version: v1
metadata:
- name: url
value: https://accountname.documents.azure.com:443
@@ -77,6 +79,7 @@ metadata:
namespace:
spec:
type: state.azure.cosmosdb
+ version: v1
metadata:
- name: url
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-tablestorage.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-tablestorage.md
index 906ac8f9a..5b0583e8f 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-tablestorage.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-azure-tablestorage.md
@@ -30,6 +30,7 @@ metadata:
namespace:
spec:
type: state.azure.tablestorage
+ version: v1
metadata:
- name: accountName
value:
@@ -55,6 +56,7 @@ metadata:
namespace:
spec:
type: state.azure.tablestorage
+ version: v1
metadata:
- name: accountName
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cassandra.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cassandra.md
index 6d4c09530..21dfb4283 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cassandra.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cassandra.md
@@ -51,6 +51,7 @@ metadata:
namespace:
spec:
type: state.cassandra
+ version: v1
metadata:
- name: hosts
value: # Required. Example: cassandra.cassandra.svc.cluster.local
@@ -86,6 +87,7 @@ metadata:
namespace:
spec:
type: state.cassandra
+ version: v1
metadata:
- name: hosts
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cloudstate.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cloudstate.md
index 560d45971..c6743b2f3 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cloudstate.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-cloudstate.md
@@ -36,6 +36,7 @@ metadata:
namespace: default
spec:
type: state.cloudstate
+ version: v1
metadata:
- name: host
value: "localhost:8013"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-consul.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-consul.md
index b8f2f816c..f9ac453d1 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-consul.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-consul.md
@@ -50,6 +50,7 @@ metadata:
namespace:
spec:
type: state.consul
+ version: v1
metadata:
- name: datacenter
value: # Required. Example: dc1
@@ -79,6 +80,7 @@ metadata:
namespace:
spec:
type: state.consul
+ version: v1
metadata:
- name: datacenter
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-couchbase.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-couchbase.md
index 905df25d9..16501c6ba 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-couchbase.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-couchbase.md
@@ -45,6 +45,7 @@ metadata:
namespace:
spec:
type: state.couchbase
+ version: v1
metadata:
- name: couchbaseURL
value: # Required. Example: "http://localhost:8091"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-etcd.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-etcd.md
index 8c37bce31..45bc03f72 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-etcd.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-etcd.md
@@ -51,6 +51,7 @@ metadata:
namespace:
spec:
type: state.etcd
+ version: v1
metadata:
- name: endpoints
value: # Required. Example: "etcd-etcd.default.svc.cluster.local:2379"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-firestore.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-firestore.md
index e4e1f7d2e..8944e65e2 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-firestore.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-firestore.md
@@ -35,6 +35,7 @@ metadata:
namespace:
spec:
type: state.gcp.firestore
+ version: v1
metadata:
- name: type
value: # Required. Example: "serviceaccount"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-hazelcast.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-hazelcast.md
index a8fbb7df9..551493be4 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-hazelcast.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-hazelcast.md
@@ -39,6 +39,7 @@ metadata:
namespace:
spec:
type: state.hazelcast
+ version: v1
metadata:
- name: hazelcastServers
value: # Required. A comma delimited string of servers. Example: "hazelcast:3000,hazelcast2:3000"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-memcached.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-memcached.md
index 26779bc57..e31094044 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-memcached.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-memcached.md
@@ -50,6 +50,7 @@ metadata:
namespace:
spec:
type: state.memcached
+ version: v1
metadata:
- name: hosts
value: # Required. Example: "memcached.default.svc.cluster.local:11211"
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-mongodb.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-mongodb.md
index 04dbefc15..a81fa3443 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-mongodb.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-mongodb.md
@@ -54,6 +54,7 @@ metadata:
namespace:
spec:
type: state.mongodb
+ version: v1
metadata:
- name: host
value: # Required. Example: "mongo-mongodb.default.svc.cluster.local:27017"
@@ -89,6 +90,7 @@ metadata:
namespace:
spec:
type: state.mondodb
+ version: v1
metadata:
- name: host
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-postgresql.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-postgresql.md
index c40ce3352..61b0392ff 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-postgresql.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-postgresql.md
@@ -39,6 +39,7 @@ metadata:
name: statestore
spec:
type: state.postgresql
+ version: v1
metadata:
- name: connectionString
value: ""
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-redis.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-redis.md
index 211d662f6..a0f406ff2 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-redis.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-redis.md
@@ -85,6 +85,7 @@ metadata:
namespace: default
spec:
type: state.redis
+ version: v1
metadata:
- name: redisHost
value:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-rethinkdb.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-rethinkdb.md
index 0959476a1..8743a2930 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-rethinkdb.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-rethinkdb.md
@@ -33,6 +33,7 @@ metadata:
namespace:
spec:
type: state.rethinkdb
+ version: v1
metadata:
- name: address
value: # Required, e.g. 127.0.0.1:28015 or rethinkdb.default.svc.cluster.local:28015).
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-sqlserver.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-sqlserver.md
index 3d6411592..a983f4d2b 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-sqlserver.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-sqlserver.md
@@ -41,6 +41,7 @@ metadata:
namespace:
spec:
type: state.sqlserver
+ version: v1
metadata:
- name: connectionString
value:
@@ -64,6 +65,7 @@ metadata:
namespace:
spec:
type: state.sqlserver
+ version: v1
metadata:
- name: connectionString
secretKeyRef:
diff --git a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-zookeeper.md b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-zookeeper.md
index d3b2ac5b2..a3274f968 100644
--- a/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-zookeeper.md
+++ b/daprdocs/content/en/operations/components/setup-state-store/supported-state-stores/setup-zookeeper.md
@@ -51,6 +51,7 @@ metadata:
namespace:
spec:
type: state.zookeeper
+ version: v1
metadata:
- name: servers
value: # Required. Example: "zookeeper.default.svc.cluster.local:2181"
diff --git a/daprdocs/content/en/operations/configuration/configuration-overview.md b/daprdocs/content/en/operations/configuration/configuration-overview.md
index 2f9f4e619..770ff8f5c 100644
--- a/daprdocs/content/en/operations/configuration/configuration-overview.md
+++ b/daprdocs/content/en/operations/configuration/configuration-overview.md
@@ -15,7 +15,7 @@ In self hosted mode the Dapr configuration is a configuration file, for example
A Dapr sidecar can also apply a configuration by using a ```--config``` flag to the file path with ```dapr run``` CLI command.
-#### Kubernetes sidecar
+#### Kubernetes sidecar
In Kubernetes mode the Dapr configuration is a Configuration CRD, that is applied to the cluster. For example;
```bash
@@ -43,6 +43,7 @@ Note: There are more [Kubernetes annotations]({{< ref "kubernetes-annotations.md
The following configuration settings can be applied to Dapr application sidecars;
- [Tracing](#tracing)
+- [Metrics](#metrics)
- [Middleware](#middleware)
- [Scoping secrets for secret stores](#scoping-secrets-for-secret-stores)
- [Access control allow lists for service invocation](#access-control-allow-lists-for-service-invocation)
@@ -56,14 +57,17 @@ The `tracing` section under the `Configuration` spec contains the following prop
```yml
tracing:
- samplingRate: "1"
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
```
The following table lists the properties for tracing:
| Property | Type | Description |
|--------------|--------|-------------|
-| samplingRate | string | Set sampling rate for tracing to be enabled or disabled.
+| `samplingRate` | string | Set sampling rate for tracing to be enabled or disabled.
+| `zipkin.endpointAddress` | string | Set the Zipkin server address.
`samplingRate` is used to enable or disable the tracing. To disable the sampling rate ,
@@ -71,9 +75,28 @@ set `samplingRate : "0"` in the configuration. The valid range of samplingRate i
See [Observability distributed tracing]({{< ref "tracing.md" >}}) for more information
+#### Metrics
+
+The metrics section can be used to enable or disable metrics for an application.
+
+The `metrics` section under the `Configuration` spec contains the following properties:
+
+```yml
+metrics:
+ enabled: true
+```
+
+The following table lists the properties for metrics:
+
+| Property | Type | Description |
+|--------------|--------|-------------|
+| `enabled` | boolean | Whether metrics should to be enabled.
+
+See [metrics documentation]({{< ref "metrics.md" >}}) for more information
+
#### Middleware
-Middleware configuration set named Http pipeline middleware handlers
+Middleware configuration set named Http pipeline middleware handlers
The `httpPipeline` section under the `Configuration` spec contains the following properties:
```yml
@@ -128,14 +151,14 @@ spec:
trustDomain: "public"
policies:
- appId: app1
- defaultAction: deny
+ defaultAction: deny
trustDomain: 'public'
- namespace: "default"
+ namespace: "default"
operations:
- - name: /op1
- httpVerb: ['POST', 'GET']
+ - name: /op1
+ httpVerb: ['POST', 'GET']
action: deny
- - name: /op2/*
+ - name: /op2/*
httpVerb: ["*"]
action: allow
```
diff --git a/daprdocs/content/en/operations/configuration/invoke-allowlist.md b/daprdocs/content/en/operations/configuration/invoke-allowlist.md
index 773d6229f..4c2fdfae5 100644
--- a/daprdocs/content/en/operations/configuration/invoke-allowlist.md
+++ b/daprdocs/content/en/operations/configuration/invoke-allowlist.md
@@ -14,7 +14,7 @@ An access control policy is specified in configuration and be applied to Dapr si
**TrustDomain** - A "trust domain" is a logical group to manage trust relationships. Every application is assigned a trust domain which can be specified in the access control list policy spec. If no policy spec is defined or an empty trust domain is specified, then a default value "public" is used. This trust domain is used to generate the identity of the application in the TLS cert.
-**App Identity** - Dapr generates a [SPIFFE](https://spiffe.io/) id for all applications which is attached in the TLS cert. The SPIFFE id is of the format: `**spiffe://\/ns/\/\**`. For matching policies, the trust domain, namespace and app ID values of the calling app are extracted from the SPIFFE id in the TLS cert of the calling app. These values are matched against the trust domain, namespace and app ID values specified in the policy spec. If all three of these match, then more specific policies are further matched.
+**App Identity** - Dapr requests the sentry service to generate a [SPIFFE](https://spiffe.io/) id for all applications and this id is attached in the TLS cert. The SPIFFE id is of the format: `**spiffe://\/ns/\/\**`. For matching policies, the trust domain, namespace and app ID values of the calling app are extracted from the SPIFFE id in the TLS cert of the calling app. These values are matched against the trust domain, namespace and app ID values specified in the policy spec. If all three of these match, then more specific policies are further matched.
## Configuration properties
@@ -189,10 +189,11 @@ spec:
namespace: "ns2"
```
-## Hello world example
-This scenario shows how to apply access control to the [hello world](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md) or [hello kubernetes](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md) samples where a python app invokes a node.js app. You can create and apply these configuration files `nodeappconfig.yaml` and `pythonappconfig.yaml` as described in the [configuration]({{< ref "configuration-concept.md" >}}) article.
+## Hello world examples
+These examples show how to apply access control to the [hello world](https://github.com/dapr/quickstarts#quickstarts) quickstart samples where a python app invokes a node.js app.
+Access control lists rely on the Dapr [Sentry service]({{< ref "security-concept.md" >}}) to generate the TLS certificates with a SPIFFE id for authentication, which means the Sentry service either has to be running locally or deployed to your hosting enviroment such as a Kubernetes cluster.
-The nodeappconfig example below shows how to deny access to the `neworder` method from the `pythonapp`, where the python app is in the `myDomain` trust domain and `default` namespace. The nodeapp is in the `public` trust domain.
+The nodeappconfig example below shows how to **deny** access to the `neworder` method from the `pythonapp`, where the python app is in the `myDomain` trust domain and `default` namespace. The nodeapp is in the `public` trust domain.
**nodeappconfig.yaml**
@@ -233,7 +234,96 @@ spec:
trustDomain: "myDomain"
```
-For example, this is how the pythonapp is deployed to Kubernetes in the default namespace with this configuration file.
+### Self-hosted mode
+This example uses the [hello world](https://github.com/dapr/quickstarts/tree/master/hello-world/README.md) quickstart.
+
+The following steps run the Sentry service locally with mTLS enabled, set up necessary environment variables to access certificates, and then launch both the node app and python app each referencing the Sentry service to apply the ACLs.
+
+ 1. Follow these steps to run the [Sentry service in self-hosted mode]({{< ref "mtls.md" >}}) with mTLS enabled
+
+ 2. In a command prompt, set these environment variables:
+
+ {{< tabs "Linux/MacOS" Windows >}}
+
+ {{% codetab %}}
+ ```bash
+ export DAPR_TRUST_ANCHORS=`cat $HOME/.dapr/certs/ca.crt`
+ export DAPR_CERT_CHAIN=`cat $HOME/.dapr/certs/issuer.crt`
+ export DAPR_CERT_KEY=`cat $HOME/.dapr/certs/issuer.key`
+ export NAMESPACE=default
+ ```
+
+ {{% /codetab %}}
+
+ {{% codetab %}}
+ ```powershell
+ $env:DAPR_TRUST_ANCHORS=$(Get-Content $env:USERPROFILE\.dapr\certs\ca.crt)
+ $env:DAPR_CERT_CHAIN=$(Get-Content $env:USERPROFILE\.dapr\certs\issuer.crt)
+ $env:DAPR_CERT_KEY=$(Get-Content $env:USERPROFILE\.dapr\certs\issuer.key)
+ $env:NAMESPACE="default"
+ ```
+
+ {{% /codetab %}}
+
+ {{< /tabs >}}
+
+3. Run daprd to launch a Dapr sidecar for the node.js app with mTLS enabled, referencing the local Sentry service:
+
+ ```bash
+ daprd --app-id nodeapp --dapr-grpc-port 50002 -dapr-http-port 3501 --log-level debug --app-port 3000 --enable-mtls --sentry-address localhost:50001 --config nodeappconfig.yaml
+ ```
+
+4. Run the node app in a separate command prompt:
+
+ ```bash
+ node app.js
+ ```
+
+5. In another command prompt, set these environment variables:
+
+ {{< tabs "Linux/MacOS" Windows >}}
+
+ {{% codetab %}}
+ ```bash
+ export DAPR_TRUST_ANCHORS=`cat $HOME/.dapr/certs/ca.crt`
+ export DAPR_CERT_CHAIN=`cat $HOME/.dapr/certs/issuer.crt`
+ export DAPR_CERT_KEY=`cat $HOME/.dapr/certs/issuer.key`
+ export NAMESPACE=default
+ ```
+ {{% /codetab %}}
+
+ {{% codetab %}}
+ ```powershell
+ $env:DAPR_TRUST_ANCHORS=$(Get-Content $env:USERPROFILE\.dapr\certs\ca.crt)
+ $env:DAPR_CERT_CHAIN=$(Get-Content $env:USERPROFILE\.dapr\certs\issuer.crt)
+ $env:DAPR_CERT_KEY=$(Get-Content $env:USERPROFILE\.dapr\certs\issuer.key)
+ $env:NAMESPACE="default"
+ ```
+ {{% /codetab %}}
+
+ {{< /tabs >}}
+
+6. Run daprd to launch a Dapr sidecar for the python app with mTLS enabled, referencing the local Sentry service:
+
+ ```bash
+ daprd --app-id pythonapp --dapr-grpc-port 50003 --metrics-port 9092 --log-level debug --enable-mtls --sentry-address localhost:50001 --config pythonappconfig.yaml
+ ```
+
+7. Run the python app in a separate command prompt:
+
+ ```bash
+ python app.py
+ ```
+
+8. You should see the calls to the node app fail in the python app command prompt based due to the **deny** operation action in the nodeappconfig file. Change this action to **allow** and re-run the apps and you should then see this call succeed.
+
+### Kubernetes mode
+This example uses the [hello kubernetes](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes/README.md) quickstart.
+
+You can create and apply the above configuration files `nodeappconfig.yaml` and `pythonappconfig.yaml` as described in the [configuration]({{< ref "configuration-concept.md" >}}) to the Kubernetes deployments.
+
+For example, below is how the pythonapp is deployed to Kubernetes in the default namespace with this pythonappconfig configuration file.
+Do the same for the nodeapp deployment and then look at the logs for the pythonapp to see the calls fail due to the **deny** operation action set in the nodeappconfig file. Change this action to **allow** and re-deploy the apps and you should then see this call succeed.
```yaml
apiVersion: apps/v1
diff --git a/daprdocs/content/en/operations/hosting/kubernetes/cluster/_index.md b/daprdocs/content/en/operations/hosting/kubernetes/cluster/_index.md
index fbc733d04..f537c454b 100644
--- a/daprdocs/content/en/operations/hosting/kubernetes/cluster/_index.md
+++ b/daprdocs/content/en/operations/hosting/kubernetes/cluster/_index.md
@@ -2,7 +2,7 @@
type: docs
title: "Kubernetes cluster setup"
linkTitle: "How-to: Setup clusters"
-weight: 50000
+weight: 60000
description: >
How to setup dapr on a kubernetes cluster.
---
\ No newline at end of file
diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-annotations.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-annotations.md
index 39dcef64f..32dfdb6aa 100644
--- a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-annotations.md
+++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-annotations.md
@@ -17,6 +17,7 @@ The following table shows all the supported pod Spec annotations supported by Da
| `dapr.io/config` | Tells Dapr which Configuration CRD to use
| `dapr.io/log-as-json` | Setting this parameter to `true` outputs logs in JSON format. Default is `false`
| `dapr.io/enable-profiling` | Setting this paramater to `true` starts the Dapr profiling server on port `7777`. Default is `false`
+| `dapr.io/api-token-secret` | Tells Dapr which Kubernetes secret to use for token based API authentication. By default this is not set.
| `dapr.io/app-protocol` | Tells Dapr which protocol your application is using. Valid options are `http` and `grpc`. Default is `http`
| `dapr.io/app-max-concurrency` | Limit the concurrency of your application. A valid value is any number larger than `0`
| `dapr.io/app-ssl` | Tells Dapr to invoke the app over an insecure SSL connection. Applies to both HTTP and gRPC. Default is `false`.
diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-hybrid-clusters.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-hybrid-clusters.md
index c3a90212a..21fc5f581 100644
--- a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-hybrid-clusters.md
+++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-hybrid-clusters.md
@@ -34,7 +34,7 @@ akswin000001 Ready agent 6d v1.17.9 10.240.0.
## Installing the Dapr Control Plane
If you are installing using the Dapr CLI or via a helm chart, simply follow the normal deployment procedures:
-[Installing Dapr on a Kubernetes cluster]({{< ref "install-dapr.md#installing-Dapr-on-a-kubernetes-cluster" >}})
+[Installing Dapr on a Kubernetes cluster]({{< ref "install-dapr-selfhost.md#installing-Dapr-on-a-kubernetes-cluster" >}})
Affinity will be automatically set for kubernetes.io/os=linux. This will be sufficient for most users, as Kubernetes requires at least one Linux node pool.
diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-production.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-production.md
index 7cfde34c6..caaa85424 100644
--- a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-production.md
+++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-production.md
@@ -54,15 +54,15 @@ The CPU and memory limits above account for the fact that Dapr is intended to do
## Deploying Dapr with Helm
When deploying to a production cluster, it's recommended to use Helm. The Dapr CLI installation into a Kubernetes cluster is for a development and test only setup.
-You can find information [here]({{< ref "install-dapr.md#using-helm-advanced" >}}) on how to deploy Dapr using Helm.
+You can find information [here]({{< ref "install-dapr-selfhost.md#using-helm-advanced" >}}) on how to deploy Dapr using Helm.
When deploying Dapr in a production-ready configuration, it's recommended to deploy with a highly available configuration of the control plane:
```bash
-helm install dapr dapr/dapr --namespace dapr-system --set global.ha.enabled=true
+helm install dapr dapr/dapr --version= --namespace dapr-system --set global.ha.enabled=true
```
-This command will run 3 replicas of each control plane pod with the exception of the Placement pod in the dapr-system namespace.
+This command will run 3 replicas of each control plane pod in the dapr-system namespace.
*Note: The Dapr Helm chart automatically deploys with affinity for nodes with the label `kubernetes.io/os=linux`. You can deploy the Dapr control plane to Windows nodes, but most users should not need to. For more information see [Deploying to a Hybrid Linux/Windows K8s Cluster]({{< ref "kubernetes-hybrid-clusters.md" >}})*
@@ -76,10 +76,7 @@ Dapr supports zero downtime upgrades. The upgrade path includes the following st
### Upgrading the CLI
-To upgrade the Dapr CLI, [download a release version](https://github.com/dapr/cli/releases) of the CLI that matches the Dapr runtime version.
-For example, if upgrading to Dapr 0.9.0, download a CLI version of 0.9.x.
-
-After you downloaded the binary, it's recommended you put the CLI binary in your path.
+To upgrade the Dapr CLI, [download the latest version](https://github.com/dapr/cli/releases) of the CLI. After you downloaded the binary, it's recommended you put the CLI binary in your path.
### Updating the control plane
@@ -122,6 +119,8 @@ You should have the following files containing the base64 decoded text from the
#### Updating the control plane pods
+> Note: To upgrade Dapr from 0.11.x to 1.0.0 version, please refer to [this section](#upgrade-from-dapr-011x-to-100).
+
Next, you need to find a Helm chart version that installs the new desired version of Dapr and perform a `helm upgrade` operation.
First, update the Helm Chart repos:
@@ -133,19 +132,25 @@ helm repo update
List all charts in the Dapr repo:
```bash
-helm search repo dapr
+helm search repo dapr --devel
NAME CHART VERSION APP VERSION DESCRIPTION
-dapr/dapr 0.4.3 0.9.0 A Helm chart for Dapr on Kubernetes
-dapr/dapr 0.4.2 0.8.0 A Helm chart for Dapr on Kubernetes
+dapr/dapr 1.0.0-rc.1 1.0.0-rc.1 A Helm chart for Dapr on Kubernetes
```
-The APP VERSION column tells us which Dapr runtime version is installed by the chart.
+The APP VERSION column tells us which Dapr runtime version is installed by the chart. Now, use the following command to upgrade Dapr to your desired runtime version providing a path to the certificate files you saved before:
-Use the following command to upgrade Dapr to your desired runtime version providing a path to the certificate files you saved:
+> Remove `--set global.ha.enabled=true` if current Dapr installation has not been deployed in HA mode.
```bash
-helm upgrade dapr dapr/dapr --version --namespace dapr-system --reset-values --set-file dapr_sentry.tls.root.certPEM=ca.crt --set-file dapr_sentry.tls.issuer.certPEM=issuer.crt --set-file dapr_sentry.tls.issuer.keyPEM=issuer.key
+helm upgrade dapr dapr/dapr \
+ --version \
+ --namespace dapr-system \
+ --reset-values \
+ --set-file dapr_sentry.tls.root.certPEM=certs/ca.crt \
+ --set-file dapr_sentry.tls.issuer.certPEM=certs/issuer.crt \
+ --set-file dapr_sentry.tls.issuer.keyPEM=certs/issuer.key \
+ --set global.ha.enabled=true
```
Kubernetes now performs a rolling update. Wait until all the new pods appear as running:
@@ -154,11 +159,11 @@ Kubernetes now performs a rolling update. Wait until all the new pods appear as
kubectl get po -n dapr-system -w
NAME READY STATUS RESTARTS AGE
-dapr-dashboard-dcd7cc8fb-ml2p8 1/1 Running 0 12s
-dapr-operator-7b57d884cd-6spcq 1/1 Running 0 12s
-dapr-placement-86b76f6545-vkc6f 1/1 Running 0 12s
-dapr-sentry-7c7bf75d8b-dcnhm 1/1 Running 0 12s
-dapr-sidecar-injector-7b847db96f-kwst9 1/1 Running 0 12s
+dapr-dashboard-86b94bb768-w4wmj 1/1 Running 0 39s
+dapr-operator-67d7d7bb6c-qqkk7 1/1 Running 0 39s
+dapr-placement-server-0 1/1 Running 0 39s
+dapr-sentry-647759cd46-nwzkw 1/1 Running 0 39s
+dapr-sidecar-injector-74648c9dcb-px2m5 1/1 Running 0 39s
```
You can verify the health and version of the control plane using the Dapr CLI:
@@ -166,11 +171,12 @@ You can verify the health and version of the control plane using the Dapr CLI:
```bash
dapr status -k
-NAME NAMESPACE HEALTHY STATUS VERSION AGE CREATED
-dapr-placement dapr-system True Running 0.9.0 12s 2020-07-24 15:38.15
-dapr-operator dapr-system True Running 0.9.0 12s 2020-07-24 15:38.15
-dapr-sidecar-injector dapr-system True Running 0.9.0 12s 2020-07-24 15:38.16
-dapr-sentry dapr-system True Running 0.9.0 12s 2020-07-24 15:38.15
+NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED
+dapr-sidecar-injector dapr-system True Running 1 1.0.0-rc.1 1m 2020-11-16 14:42.19
+dapr-sentry dapr-system True Running 1 1.0.0-rc.1 1m 2020-11-16 14:42.19
+dapr-dashboard dapr-system True Running 1 0.3.0 1m 2020-11-16 14:42.19
+dapr-operator dapr-system True Running 1 1.0.0-rc.1 1m 2020-11-16 14:42.19
+dapr-placement-server dapr-system True Running 1 1.0.0-rc.1 1m 2020-11-16 14:42.19
```
*Note: If new fields have been added to the target Helm Chart being upgraded to, the `helm upgrade` command will fail. If that happens, you need to find which new fields have been added in the new chart and add them as parameters to the upgrade command, for example: `--set =`.*
@@ -181,7 +187,7 @@ The last step is to update pods that are running Dapr to pick up the new version
To do that, simply issue a rollout restart command for any deployment that has the `dapr.io/enabled` annotation:
```
-kubectl rollout restart deploy/
+kubectl rollout restart deploy/
```
To see a list of all your Dapr enabled deployments, you can either use the [Dapr Dashboard](https://github.com/dapr/dashboard) or run the following command using the Dapr CLI:
@@ -193,6 +199,61 @@ APP ID APP PORT AGE CREATED
nodeapp 3000 16h 2020-07-29 17:16.22
```
+#### Upgrade from Dapr 0.11.x to 1.0.0
+
+Run the below commands first to migrate from 0.11.x placement service safely:
+
+```sh
+kubectl annotate deployment dapr-placement "helm.sh/resource-policy"=keep -n dapr-system
+kubectl annotate svc dapr-placement "helm.sh/resource-policy"=keep -n dapr-system
+```
+
+Then [export certs manually](#exporting-certs-manually).
+
+```sh
+dapr mtls export -o ./certs
+```
+
+Upgrade Dapr using the below commands; this example upgrades Dapr from 0.11.x to 1.0.0-rc.1 with HA mode.
+
+```sh
+helm repo update
+helm upgrade dapr dapr/dapr --version 1.0.0-rc.1 --namespace dapr-system --reset-values --set-file dapr_sentry.tls.root.certPEM=./certs/ca.crt --set-file dapr_sentry.tls.issuer.certPEM=./certs/issuer.crt --set-file dapr_sentry.tls.issuer.keyPEM=./certs/issuer.key --set global.ha.enabled=true --wait
+```
+
+Once Dapr is installed completely, ensure that 0.11.x dapr-placement is still running and **wait until all pods are running**
+```sh
+kubectl get pods -n dapr-system -w
+
+NAME READY STATUS RESTARTS AGE
+dapr-dashboard-69f5c5c867-mqhg4 1/1 Running 0 42s
+dapr-operator-5cdd6b7f9c-9sl7g 1/1 Running 0 41s
+dapr-operator-5cdd6b7f9c-jkzjs 1/1 Running 0 29s
+dapr-operator-5cdd6b7f9c-qzp8n 1/1 Running 0 34s
+dapr-placement-5dcb574777-nlq4t 1/1 Running 0 76s ---- 0.11.x placement
+dapr-placement-server-0 1/1 Running 0 41s
+dapr-placement-server-1 1/1 Running 0 41s
+dapr-placement-server-2 1/1 Running 0 41s
+dapr-sentry-84565c747b-7bh8h 1/1 Running 0 35s
+dapr-sentry-84565c747b-fdlls 1/1 Running 0 41s
+dapr-sentry-84565c747b-ldnsf 1/1 Running 0 29s
+dapr-sidecar-injector-68f868668f-6xnbt 1/1 Running 0 41s
+dapr-sidecar-injector-68f868668f-j7jcq 1/1 Running 0 29s
+dapr-sidecar-injector-68f868668f-ltxq4 1/1 Running 0 36s
+```
+
+
+Update pods that are running Dapr to pick up the new version of the Dapr runtime.
+```sh
+kubectl rollout restart deploy/
+```
+
+Once the deployment is completed, delete 0.11.x dapr-placement service by following commands:
+```sh
+kubectl delete deployment dapr-placement -n dapr-system
+kubectl delete svc dapr-placement -n dapr-system
+```
+
## Recommended security configuration
Properly configured, Dapr not only be secured with regards to it's control plane and sidecars communication, but can also make your application more secure with a number of built-in features.
diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-upgrade.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-upgrade.md
new file mode 100644
index 000000000..2a09f1ec9
--- /dev/null
+++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-upgrade.md
@@ -0,0 +1,149 @@
+---
+type: docs
+title: "Steps to upgrade Dapr on a Kubernetes cluster"
+linkTitle: "Upgrade Dapr"
+weight: 50000
+description: "Follow these steps to upgrade Dapr on Kubernetes and ensure a smooth upgrade."
+---
+
+## Prerequisites
+
+- Latest [Dapr CLI]({{< ref install-dapr-cli.md >}})
+- [Helm 3](https://github.com/helm/helm/releases)
+
+## Upgrade existing cluster running 0.11.x
+
+1. Run these two commands to prevent `helm upgrade` from uninstalling `0.11.x` placement service:
+
+ ```bash
+ kubectl annotate deployment dapr-placement helm.sh/resource-policy=keep -n dapr-system
+ ```
+ ```bash
+ kubectl annotate svc dapr-placement helm.sh/resource-policy=keep -n dapr-system
+ ```
+
+1. Export certificates:
+
+ ```bash
+ dapr mtls export -o ./certs
+ ```
+
+1. Upgrade Dapr to 1.0.0-rc.2:
+
+ ```bash
+ helm repo update
+ ```
+ ```bash
+ helm upgrade dapr dapr/dapr --version 1.0.0-rc.2 --namespace dapr-system --reset-values --set-file dapr_sentry.tls.root.certPEM=./certs/ca.crt --set-file dapr_sentry.tls.issuer.certPEM=./certs/issuer.crt --set-file dapr_sentry.tls.issuer.keyPEM=./certs/issuer.key --set global.ha.enabled=true --wait
+ ```
+
+1. Upgrade CRDs:
+
+ ```bash
+ kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/21636a9237f2dcecd9c80f329e99b512e8377739/charts/dapr/crds/configuration.yaml
+ ```
+ ```bash
+ kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/21636a9237f2dcecd9c80f329e99b512e8377739/charts/dapr/crds/components.yaml
+ ```
+
+1. Ensure 0.11.x dapr-placement service is still running and wait until all pods are running:
+
+ ```bash
+ kubectl get pods -n dapr-system -w
+
+ NAME READY STATUS RESTARTS AGE
+ dapr-dashboard-69f5c5c867-mqhg4 1/1 Running 0 42s
+ dapr-operator-5cdd6b7f9c-9sl7g 1/1 Running 0 41s
+ dapr-operator-5cdd6b7f9c-jkzjs 1/1 Running 0 29s
+ dapr-operator-5cdd6b7f9c-qzp8n 1/1 Running 0 34s
+ dapr-placement-5dcb574777-nlq4t 1/1 Running 0 76s <---- 0.11.x placement
+ dapr-placement-server-0 1/1 Running 0 41s
+ dapr-placement-server-1 1/1 Running 0 41s
+ dapr-placement-server-2 1/1 Running 0 41s
+ dapr-sentry-84565c747b-7bh8h 1/1 Running 0 35s
+ dapr-sentry-84565c747b-fdlls 1/1 Running 0 41s
+ dapr-sentry-84565c747b-ldnsf 1/1 Running 0 29s
+ dapr-sidecar-injector-68f868668f-6xnbt 1/1 Running 0 41s
+ dapr-sidecar-injector-68f868668f-j7jcq 1/1 Running 0 29s
+ dapr-sidecar-injector-68f868668f-ltxq4 1/1 Running 0 36s
+ ```
+
+1. Restart your application deployments to update the Dapr runtime.
+
+ ```bash
+ kubectl rollout restart deploy/
+ ```
+
+1. Once the deployment is completed, delete the 0.11.x dapr-placement service:
+
+ ```bash
+ kubectl delete deployment dapr-placement -n dapr-system
+ ```
+
+ ```bash
+ kubectl delete svc dapr-placement -n dapr-system
+ ```
+
+1. All done!
+
+## Upgrade existing cluster running 1.0.0-rc.1
+
+1. Export certs:
+
+ ```bash
+ dapr mtls export -o ./certs
+ ```
+
+1. Upgrade Dapr to 1.0.0-rc.2:
+
+ ```bash
+ helm repo update
+ ```
+
+ ```bash
+ helm upgrade dapr dapr/dapr --version 1.0.0-rc.2 --namespace dapr-system --reset-values --set-file dapr_sentry.tls.root.certPEM=./certs/ca.crt --set-file dapr_sentry.tls.issuer.certPEM=./certs/issuer.crt --set-file dapr_sentry.tls.issuer.keyPEM=./certs/issuer.key --set global.ha.enabled=true --wait
+ ```
+
+1. Upgrade CRDs:
+
+ ```bash
+ kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/21636a9237f2dcecd9c80f329e99b512e8377739/charts/dapr/crds/configuration.yaml
+ ```
+
+ ```bash
+ kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/21636a9237f2dcecd9c80f329e99b512e8377739/charts/dapr/crds/components.yaml
+ ```
+
+1. Ensure all pods are running:
+
+ ```bash
+ kubectl get pods -n dapr-system -w
+
+ NAME READY STATUS RESTARTS AGE
+ dapr-dashboard-69f5c5c867-mqhg4 1/1 Running 0 42s
+ dapr-operator-5cdd6b7f9c-9sl7g 1/1 Running 0 41s
+ dapr-operator-5cdd6b7f9c-jkzjs 1/1 Running 0 29s
+ dapr-operator-5cdd6b7f9c-qzp8n 1/1 Running 0 34s
+ dapr-placement-server-0 1/1 Running 0 41s
+ dapr-placement-server-1 1/1 Running 0 41s
+ dapr-placement-server-2 1/1 Running 0 41s
+ dapr-sentry-84565c747b-7bh8h 1/1 Running 0 35s
+ dapr-sentry-84565c747b-fdlls 1/1 Running 0 41s
+ dapr-sentry-84565c747b-ldnsf 1/1 Running 0 29s
+ dapr-sidecar-injector-68f868668f-6xnbt 1/1 Running 0 41s
+ dapr-sidecar-injector-68f868668f-j7jcq 1/1 Running 0 29s
+ dapr-sidecar-injector-68f868668f-ltxq4 1/1 Running 0 36s
+ ```
+
+1. Restart your application deployments to update the Dapr runtime:
+
+ ```bash
+ kubectl rollout restart deploy/
+ ```
+
+1. All done!
+
+## Next steps
+
+- [Dapr on Kubernetes]({{< ref kubernetes-overview.md >}})
+- [Dapr production guidelines]({{< ref kubernetes-production.md >}})
\ No newline at end of file
diff --git a/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-no-docker.md b/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-no-docker.md
index 291178972..4c550ad06 100644
--- a/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-no-docker.md
+++ b/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-no-docker.md
@@ -10,7 +10,7 @@ This article provides guidance on running Dapr in self-hosted mode without Docke
## Prerequisites
-- [Dapr CLI]({{< ref "install-dapr.md#installing-dapr-cli" >}})
+- [Dapr CLI]({{< ref "install-dapr-selfhost.md#installing-dapr-cli" >}})
## Initialize Dapr without containers
@@ -40,11 +40,14 @@ By default for Linux/MacOS the `placement` binary is installed in `/$HOME/.dapr/
```bash
$ $HOME/.dapr/bin/placement
-INFO[0000] starting Dapr Placement Service -- version 0.8.0 -- commit 74db927 instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
-INFO[0000] log level set to: info instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
-INFO[0000] metrics server started on :9090/ instance=host.localhost.name scope=dapr.metrics type=log ver=0.8.0
-INFO[0000] placement Service started on port 50005 instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
-INFO[0000] Healthz server is listening on :8080 instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
+INFO[0000] starting Dapr Placement Service -- version 1.0.0-rc.1 -- commit 13ae49d instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
+INFO[0000] log level set to: info instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
+INFO[0000] metrics server started on :9090/ instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.metrics type=log ver=1.0.0-rc.1
+INFO[0000] Raft server is starting on 127.0.0.1:8201... instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement.raft type=log ver=1.0.0-rc.1
+INFO[0000] placement service started on port 50005 instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
+INFO[0000] Healthz server is listening on :8080 instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
+INFO[0001] cluster leadership acquired instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
+INFO[0001] leader is established. instance=Nicoletaz-L10.redmond.corp.microsoft.com scope=dapr.placement type=log ver=1.0.0-rc.1
```
@@ -57,13 +60,7 @@ Update the state store configuration files to have the Redis host and password m
value: "true"
```
-The logs of the placement service are updated whenever a host that uses actors is added or removed similar to the following output:
-
-```
-INFO[0446] host added: 192.168.1.6 instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
-INFO[0450] host removed: 192.168.1.6 instance=host.localhost.name scope=dapr.placement type=log ver=0.8.0
-```
## Cleanup
-Follow the uninstall [instructions]({{< ref "install-dapr.md#uninstall-dapr-in-a-self-hosted-mode" >}}) to remove the binaries.
+Follow the uninstall [instructions]({{< ref "install-dapr-selfhost.md#uninstall-dapr-in-a-self-hosted-mode" >}}) to remove the binaries.
diff --git a/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-upgrade.md b/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-upgrade.md
new file mode 100644
index 000000000..7d06b48e1
--- /dev/null
+++ b/daprdocs/content/en/operations/hosting/self-hosted/self-hosted-upgrade.md
@@ -0,0 +1,35 @@
+---
+type: docs
+title: "Steps to upgrade Dapr in a self-hosted environment"
+linkTitle: "Upgrade Dapr"
+weight: 50000
+description: "Follow these steps to upgrade Dapr in self-hosted mode and ensure a smooth upgrade."
+---
+
+
+1. Uninstall the current Dapr deployment:
+
+ {{% alert title="Note" color="warning" %}}
+ This will remove the default `$HOME/.dapr` directory, binaries and all containers (dapr_redis, dapr_placement and dapr_zipkin). Linux users need to run `sudo` if docker command needs sudo.
+ {{% /alert %}}
+
+ ```bash
+ dapr uninstall --all
+ ```
+
+1. Download and install the latest CLI by visiting [this guide]({{< ref install-dapr-cli.md >}}).
+
+1. Initialize the Dapr runtime:
+
+ ```bash
+ dapr init --runtime-version=1.0.0-rc.2
+ ```
+
+1. Ensure you are using the latest version of Dapr (1.0.0-rc.2) with:
+
+ ```bash
+ $ dapr --version
+
+ CLI version: 1.0.0-rc.3
+ Runtime version: 1.0.0-rc.2
+ ```
diff --git a/daprdocs/content/en/operations/monitoring/grafana.md b/daprdocs/content/en/operations/monitoring/grafana.md
index d1c21917f..ff2e46853 100644
--- a/daprdocs/content/en/operations/monitoring/grafana.md
+++ b/daprdocs/content/en/operations/monitoring/grafana.md
@@ -1,11 +1,35 @@
---
type: docs
title: "How-To: Observe metrics with Grafana"
-linkTitle: "Grafana"
+linkTitle: "Metrics dashboards with Grafana"
weight: 5000
description: "How to view Dapr metrics in a Grafana dashboard."
---
+## Available dashboards
+
+{{< tabs "System Service" "Sidecars" "Actors" >}}
+
+{{% codetab %}}
+The `grafana-system-services-dashboard.json` template shows Dapr system component status, dapr-operator, dapr-sidecar-injector, dapr-sentry, and dapr-placement:
+
+
+{{% /codetab %}}
+
+{{% codetab %}}
+The `grafana-sidecar-dashboard.json` template shows Dapr sidecar status, including sidecar health/resources, throughput/latency of HTTP and gRPC, Actor, mTLS, etc.:
+
+
+{{% /codetab %}}
+
+{{% codetab %}}
+The `grafana-actor-dashboard.json` template shows Dapr Sidecar status, actor invocation throughput/latency, timer/reminder triggers, and turn-based concurrnecy:
+
+
+{{% /codetab %}}
+
+{{< /tabs >}}
+
## Pre-requisites
- [Setup Prometheus]({{}})
@@ -14,32 +38,36 @@ description: "How to view Dapr metrics in a Grafana dashboard."
### Install Grafana
-1. Install Grafana
+1. Add the Grafana Helm repo:
```bash
- helm install grafana stable/grafana -n dapr-monitoring
+ helm repo add grafana https://grafana.github.io/helm-charts
```
-
- If you are Minikube user or want to disable persistent volume for development purpose, you can disable it by using the following command:
+
+1. Install the chart:
```bash
- helm install grafana stable/grafana -n dapr-monitoring --set persistence.enabled=false
+ helm install grafana grafana/grafana -n dapr-monitoring
```
-
-2. Retrieve the admin password for Grafana login
-
+
+ {{% alert title="Note" color="primary" %}}
+ If you are Minikube user or want to disable persistent volume for development purpose, you can disable it by using the following command instead:
+
```bash
- kubectl get secret --namespace dapr-monitoring grafana -o jsonpath="{. data.admin-password}" | base64 --decode
- cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1%
+ helm install grafana grafana/grafana -n dapr-monitoring --set persistence.enabled=false
```
-
- {{% alert title="Note" color="info" %}}
- Remove the `%` character from the password that this command returns. For example, the admin password is `cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1`.
{{% /alert %}}
+
-3. Validation
+1. Retrieve the admin password for Grafana login:
- Ensure Grafana is running in your cluster (see last line below)
+ ```bash
+ kubectl get secret --namespace dapr-monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
+ ```
+
+ You will get a password similar to `cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1%`. Remove the `%` character from the password to get `cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1` as the admin password.
+
+1. Validation Grafana is running in your cluster:
```bash
kubectl get pods -n dapr-monitoring
@@ -58,31 +86,37 @@ description: "How to view Dapr metrics in a Grafana dashboard."
### Configure Prometheus as data source
First you need to connect Prometheus as a data source to Grafana.
-1. Port-forward to svc/grafana
+1. Port-forward to svc/grafana:
```bash
- $ kubectl port-forward svc/grafana 8080:80 -n dapr-monitoring
+ kubectl port-forward svc/grafana 8080:80 -n dapr-monitoring
+
Forwarding from 127.0.0.1:8080 -> 3000
Forwarding from [::1]:8080 -> 3000
Handling connection for 8080
Handling connection for 8080
```
-2. Browse `http://localhost:8080`
+1. Open a browser to `http://localhost:8080`
-3. Login with admin and password
+1. Login to Grafana
+ - Username = `admin`
+ - Password = Password from above
-4. Click Configuration Settings -> Data Sources
+1. Select `Configuration` and `Data Sources`
- 
+
-5. Add Prometheus as a data soruce.
- 
+1. Add Prometheus as a data source.
-6. Enter Promethesus server address in your cluster.
+
- You can get the Prometheus server address by running the following command.
+1. Get your Prometheus HTTP URL
+
+ The Prometheus HTTP URL follows the format `http://.`
+
+ Start by getting the Prometheus server endpoint by running the following command:
```bash
kubectl get svc -n dapr-monitoring
@@ -100,41 +134,43 @@ First you need to connect Prometheus as a data source to Grafana.
```
- In this Howto, the server is `dapr-prom-prometheus-server`.
+ In this guide the server name is `dapr-prom-prometheus-server` and the namespace is `dapr-monitoring`, so the HTTP URL will be `http://dapr-prom-prometheus-server.dapr-monitoring`.
- You now need to set up Prometheus data source with the following settings:
+1. Fill in the following settings:
- Name: `Dapr`
- HTTP URL: `http://dapr-prom-prometheus-server.dapr-monitoring`
- Default: On
-
- 
-7. Click `Save & Test` button to verify that the connection succeeded.
+
+
+1. Click `Save & Test` button to verify that the connection succeeded.
## Import dashboards in Grafana
-Next you import the Dapr dashboards into Grafana.
-In the upper left, click the "+" then "Import".
+1. In the upper left corner of the Grafana home screen, click the "+" option, then "Import".
-You can now import built-in [Grafana dashboard templates](https://github.com/dapr/dapr/tree/master/grafana).
+ You can now import [Grafana dashboard templates](https://github.com/dapr/dapr/tree/master/grafana) from [release assets](https://github.com/dapr/dapr/releases) for your Dapr version:
-The Grafana dashboards are part of [release assets](https://github.com/dapr/dapr/releases) with this URL https://github.com/dapr/dapr/releases/
-You can find `grafana-actor-dashboard.json`, `grafana-sidecar-dashboard.json` and `grafana-system-services-dashboard.json` in release assets location.
+
-
+1. Find the dashboard that you imported and enjoy
-8. Find the dashboard that you imported and enjoy!
+
-
+ {{% alert title="Tip" color="primary" %}}
+ Hover your mouse over the `i` in the corner to the description of each chart:
+
+
+ {{% /alert %}}
## References
-* [Set up Prometheus and Grafana]({{< ref grafana.md >}})
-* [Prometheus Installation](https://github.com/helm/charts/tree/master/stable/prometheus-operator)
+* [Dapr Observability]({{}})
+* [Prometheus Installation](https://github.com/prometheus-community/helm-charts)
* [Prometheus on Kubernetes](https://github.com/coreos/kube-prometheus)
-* [Prometheus Kubernetes Operator](https://github.com/helm/charts/tree/master/stable/prometheus-operator)
* [Prometheus Query Language](https://prometheus.io/docs/prometheus/latest/querying/basics/)
+* [Supported Dapr metrics](https://github.com/dapr/dapr/blob/master/docs/development/dapr-metrics.md)
## Example
-
\ No newline at end of file
+
diff --git a/daprdocs/content/en/operations/monitoring/jaeger.md b/daprdocs/content/en/operations/monitoring/jaeger.md
index bafd88dea..092bc8514 100644
--- a/daprdocs/content/en/operations/monitoring/jaeger.md
+++ b/daprdocs/content/en/operations/monitoring/jaeger.md
@@ -28,30 +28,29 @@ docker run -d --name jaeger \
Next, create the following YAML files locally:
-* **jaeger.yaml**: Note that because we are using the Zipkin protocol to talk to Jaeger,
-the type of the exporter in the YAML file below is `exporter.zipkin`,
-while the `exporterAddress` is the address of the Jaeger instance.
+* **config.yaml**: Note that because we are using the Zipkin protocol
+to talk to Jaeger, we specify the `zipkin` section of tracing
+configuration set the `endpointAddress` to address of the Jaeger
+instance.
```yaml
apiVersion: dapr.io/v1alpha1
-kind: Component
+kind: Configuration
metadata:
- name: zipkin
+ name: tracing
+ namespace: default
spec:
- type: exporters.zipkin
- metadata:
- - name: enabled
- value: "true"
- - name: exporterAddress
- value: "http://localhost:9412/api/v2/spans"
+ tracing:
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://localhost:9412/api/v2/spans"
```
To launch the application referring to the new YAML file, you can use
-`--components-path`. Assuming that, the **jaeger.yaml** file is in the
-current directory, you can use
+`--config` option:
```bash
-dapr run --app-id mynode --app-port 3000 node app.js --components-path .
+dapr run --app-id mynode --app-port 3000 node app.js --config config.yaml
```
### Viewing Traces
@@ -92,26 +91,7 @@ kubectl apply -f jaeger-operator.yaml
kubectl wait deploy --selector app.kubernetes.io/name=jaeger --for=condition=available
```
-Next, create the following YAML files locally:
-
-* **jaeger.yaml**: Note that because we are using the Zipkin protocol to talk to Jaeger,
-the type of the exporter in the YAML file below is `exporter.zipkin`,
-while the `exporterAddress` is the address of the Jaeger instance.
-
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: zipkin
-spec:
- type: exporters.zipkin
- metadata:
- - name: enabled
- value: "true"
- - name: exporterAddress
- value: "http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans"
-```
+Next, create the following YAML file locally:
* **tracing.yaml**
@@ -124,13 +104,14 @@ metadata:
spec:
tracing:
samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://jaeger-collector.default.svc.cluster.local:9411/api/v2/spans"
```
Finally, deploy the the Dapr component and configuration files:
```bash
kubectl apply -f tracing.yaml
-kubectl apply -f jaeger.yaml
```
In order to enable this configuration for your Dapr sidecar, add the following annotation to your pod spec template:
diff --git a/daprdocs/content/en/operations/monitoring/newrelic.md b/daprdocs/content/en/operations/monitoring/newrelic.md
new file mode 100644
index 000000000..4d44295d2
--- /dev/null
+++ b/daprdocs/content/en/operations/monitoring/newrelic.md
@@ -0,0 +1,115 @@
+---
+type: docs
+title: "How-To: Set-up New Relic for Dapr observability"
+linkTitle: "New Relic"
+weight: 2000
+description: "Set-up New Relic for Dapr observability"
+---
+
+## Prerequisites
+
+- Perpetually [free New Relic account](https://newrelic.com/signup), 100 GB/month of free data ingest, 1 free full access user, unlimited free basic users
+
+## Configure Dapr tracing
+
+Dapr natively captures metrics and traces that can be send directly to New Relic. The easiest way to export these is by configuring Dapr to send the traces to [New Relic's Trace API](https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/trace-api/report-zipkin-format-traces-trace-api#existing-zipkin) using the Zipkin trace format.
+
+In order for the integration to send data to New Relic [Telemetry Data Platform](https://newrelic.com/platform/telemetry-data-platform), you need a [New Relic Insights Insert API key](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#insights-insert-key).
+
+```yaml
+apiVersion: dapr.io/v1alpha1
+kind: Configuration
+metadata:
+ name: appconfig
+ namespace: default
+spec:
+ tracing:
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "https://trace-api.newrelic.com/trace/v1?Api-Key=&Data-Format=zipkin&Data-Format-Version=2"
+```
+
+### Viewing Traces
+
+New Relic Distributed Tracing overview
+
+
+New Relic Distributed Tracing details
+
+
+## (optional) New Relic Instrumentation
+
+In order for the integrations to send data to New Relic Telemetry Data Platform, you either need a [New Relic license key](https://docs.newrelic.com/docs/accounts/accounts-billing/account-setup/new-relic-license-key) or [New Relic Insights Insert API key](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys#insights-insert-key).
+
+### OpenTelemetry instrumentation
+
+Leverage the different language specific OpenTelemetry implementations, for example [New Relic Telemetry SDK and OpenTelemetry support for .NET](https://github.com/newrelic/newrelic-telemetry-sdk-dotnet). In this case, use the [OpenTelemetry Trace Exporter](https://github.com/newrelic/newrelic-telemetry-sdk-dotnet/tree/main/src/NewRelic.OpenTelemetry). See example [here](https://github.com/harrykimpel/quickstarts/blob/master/distributed-calculator/csharp-otel/Startup.cs).
+
+### New Relic Language agent
+
+Similarly to the OpenTelemetry instrumentation, you can also leverage a New Relic language agent. As an example, the [New Relic agent instrumentation for .NET Core](https://docs.newrelic.com/docs/agents/net-agent/installation/install-docker-container) is part of the Dockerfile. See example [here](https://github.com/harrykimpel/quickstarts/blob/master/distributed-calculator/csharp/Dockerfile).
+
+## (optional) Enable New Relic Kubernetes integration
+
+In case Dapr and your applications run in the context of a Kubernetes environment, you can enable additional metrics and logs.
+
+The easiest way to install the New Relic Kubernetes integration is to use the [automated installer](https://one.newrelic.com/launcher/nr1-core.settings?pane=eyJuZXJkbGV0SWQiOiJrOHMtY2x1c3Rlci1leHBsb3Jlci1uZXJkbGV0Lms4cy1zZXR1cCJ9) to generate a manifest. It bundles not just the integration DaemonSets, but also other New Relic Kubernetes configurations, like [Kubernetes events](https://docs.newrelic.com/docs/integrations/kubernetes-integration/kubernetes-events/install-kubernetes-events-integration), [Prometheus OpenMetrics](https://docs.newrelic.com/docs/integrations/prometheus-integrations/get-started/new-relic-prometheus-openmetrics-integration-kubernetes), and [New Relic log monitoring](https://docs.newrelic.com/docs/logs).
+
+### New Relic Kubernetes Cluster Explorer
+
+The [New Relic Kubernetes Cluster Explorer](https://docs.newrelic.com/docs/integrations/kubernetes-integration/understand-use-data/kubernetes-cluster-explorer) provides a unique visualization of the entire data and deployments of the data collected by the Kubernetes integration.
+
+It is a good starting point to observe all your data and dig deeper into any performance issues or incidents happening inside of the application or microservices.
+
+
+
+Automated correlation is part of the visualization capabilities of New Relic.
+
+### Pod-level details
+
+
+
+### Logs in Context
+
+
+
+## New Relic Dashboards
+
+### Kubernetes Overview
+
+
+
+### Dapr System Services
+
+
+
+### Dapr Metrics
+
+
+
+## New Relic Grafana integration
+
+New Relic teamed up with [Grafana Labs](https://grafana.com/) so you can use the [Telemetry Data Platform](https://newrelic.com/platform/telemetry-data-platform) as a data source for Prometheus metrics and see them in your existing dashboards, seamlessly tapping into the reliability, scale, and security provided by New Relic.
+
+[Grafana dashboard templates](https://github.com/dapr/dapr/blob/227028e7b76b7256618cd3236d70c1d4a4392c9a/grafana/README.md) to monitor Dapr system services and sidecars can easily be used without any changes. New Relic provides a [native endpoint for Prometheus metrics](https://docs.newrelic.com/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana) into Grafana. A datasource can easily be set-up:
+
+
+
+And the exact same dashboard templates from Dapr can be imported to visualize Dapr system services and sidecars.
+
+
+
+## New Relic Alerts
+
+All the data that is collected from Dapr, Kubernetes or any services that run on top of can be used to set-up alerts and notifications into the preferred channel of your choice. See [Alerts and Applied Intelligence](https://docs.newrelic.com/docs/alerts-applied-intelligence).
+
+## Related Links/References
+
+* [New Relic Account Signup](https://newrelic.com/signup)
+* [Telemetry Data Platform](https://newrelic.com/platform/telemetry-data-platform)
+* [Distributed Tracing](https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing)
+* [New Relic Trace API](https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/trace-api)
+* [New Relic Metric API](https://docs.newrelic.com/docs/telemetry-data-platform/get-data/apis/introduction-metric-api)
+* [Types of New Relic API keys](https://docs.newrelic.com/docs/apis/get-started/intro-apis/types-new-relic-api-keys)
+* [New Relic OpenTelemetry User Experience](https://blog.newrelic.com/product-news/opentelemetry-user-experience/)
+* [Alerts and Applied Intelligence](https://docs.newrelic.com/docs/alerts-applied-intelligence)
diff --git a/daprdocs/content/en/operations/monitoring/open-telemetry-collector.md b/daprdocs/content/en/operations/monitoring/open-telemetry-collector.md
index 9645bd474..eb8136a80 100644
--- a/daprdocs/content/en/operations/monitoring/open-telemetry-collector.md
+++ b/daprdocs/content/en/operations/monitoring/open-telemetry-collector.md
@@ -6,7 +6,7 @@ weight: 1000
description: "How to use Dapr to push trace events to Azure Application Insights, through the OpenTelemetry Collector."
---
-Dapr can integrate with [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector) using the OpenCensus API. This guide walks through an example to use Dapr to push trace events to Azure Application Insights, through the OpenTelemetry Collector.
+Dapr can integrate with [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector) using the Zipkin API. This guide walks through an example to use Dapr to push trace events to Azure Application Insights, through the OpenTelemetry Collector.
## Requirements
@@ -29,15 +29,15 @@ export APP_INSIGHTS_KEY=
Next, install the OpenTelemetry Collector to your Kubernetes cluster to push events to your Application Insights instance
-1. Check out the file [open-telemetry-collector.yaml](/docs/open-telemetry-collector/open-telemetry-collector.yaml) and replace the `` placeholder with your `APP_INSIGHTS_KEY`.
+1. Check out the file [open-telemetry-collector.yaml](/docs/open-telemetry-collector/open-telemetry-collector.yaml) and replace the `` placeholder with your `APP_INSIGHTS_KEY`.
2. Apply the configuration with `kubectl apply -f open-telemetry-collector.yaml`.
Next, set up both a Dapr configuration file to turn on tracing and deploy a tracing exporter component that uses the OpenTelemetry Collector.
-1. Create a collector-component.yaml file with this [content](/docs/open-telemetry-collector/collector-component.yaml)
+1. Create a collector-config.yaml file with this [content](/docs/open-telemetry-collector/collector-config.yaml)
-2. Apply the configuration with `kubectl apply -f collector-component.yaml`.
+2. Apply the configuration with `kubectl apply -f collector-config.yaml`.
### Deploy your app with tracing
diff --git a/daprdocs/content/en/operations/monitoring/prometheus.md b/daprdocs/content/en/operations/monitoring/prometheus.md
index 3e60d02a1..0318f3235 100644
--- a/daprdocs/content/en/operations/monitoring/prometheus.md
+++ b/daprdocs/content/en/operations/monitoring/prometheus.md
@@ -81,15 +81,16 @@ kubectl create namespace dapr-monitoring
2. Install Prometheus
```bash
-helm repo add stable https://kubernetes-charts.storage.googleapis.com
+helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
-helm install dapr-prom stable/prometheus -n dapr-monitoring
+helm install dapr-prom prometheus-community/prometheus -n dapr-monitoring
```
If you are Minikube user or want to disable persistent volume for development purposes, you can disable it by using the following command.
```bash
-helm install dapr-prom stable/prometheus -n dapr-monitoring --set alertmanager.persistentVolume.enable=false --set pushgateway.persistentVolume.enabled=false --set server.persistentVolume.enabled=false
+helm install dapr-prom prometheus-community/prometheus -n dapr-monitoring
+ --set alertmanager.persistentVolume.enable=false --set pushgateway.persistentVolume.enabled=false --set server.persistentVolume.enabled=false
```
3. Validation
@@ -114,7 +115,5 @@ dapr-prom-prometheus-server-694fd8d7c-q5d59 2/2 Running 0
## References
-* [Prometheus Installation](https://github.com/helm/charts/tree/master/stable/prometheus-operator)
-* [Prometheus on Kubernetes](https://github.com/coreos/kube-prometheus)
-* [Prometheus Kubernetes Operator](https://github.com/helm/charts/tree/master/stable/prometheus-operator)
+* [Prometheus Installation](https://github.com/prometheus-community/helm-charts)
* [Prometheus Query Language](https://prometheus.io/docs/prometheus/latest/querying/basics/)
diff --git a/daprdocs/content/en/operations/monitoring/zipkin.md b/daprdocs/content/en/operations/monitoring/zipkin.md
index d571b9dd6..cd92af512 100644
--- a/daprdocs/content/en/operations/monitoring/zipkin.md
+++ b/daprdocs/content/en/operations/monitoring/zipkin.md
@@ -9,27 +9,9 @@ type: docs
## Configure self hosted mode
-For self hosted mode, on running `dapr init` the following YAML files are created by default and they are referenced by default on `dapr run` calls unless otherwise overridden.
+For self hosted mode, on running `dapr init`:
-1. The following file in `$HOME/dapr/components/zipkin.yaml` or `%USERPROFILE%\dapr\components\zipkin.yaml`:
-
-* zipkin.yaml
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: zipkin
- namespace: default
-spec:
- type: exporters.zipkin
- metadata:
- - name: enabled
- value: "true"
- - name: exporterAddress
- value: "http://localhost:9411/api/v2/spans"
-```
-2. The following file in `$HOME/dapr/config.yaml` or `%USERPROFILE%\dapr\config.yaml`:
+1. The following YAML file is created by default in `$HOME/.dapr/config.yaml` (on Linux/Mac) or `%USERPROFILE%\.dapr\config.yaml` (on Windows) and it is referenced by default on `dapr run` calls unless otherwise overridden `:
* config.yaml
@@ -42,9 +24,11 @@ metadata:
spec:
tracing:
samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://localhost:9411/api/v2/spans"
```
-3. The [openzipkin/zipkin](https://hub.docker.com/r/openzipkin/zipkin/) docker container is launched on running `dapr init` or it can be launched with the following code.
+2. The [openzipkin/zipkin](https://hub.docker.com/r/openzipkin/zipkin/) docker container is launched on running `dapr init` or it can be launched with the following code.
Launch Zipkin using Docker:
@@ -52,7 +36,7 @@ Launch Zipkin using Docker:
docker run -d -p 9411:9411 openzipkin/zipkin
```
-4. The applications launched with `dapr run` will by default reference the config file in `$HOME/dapr/config.yaml` or `%USERPROFILE%\dapr\config.yaml` and can be overridden with the Dapr CLI using the `--config` param:
+3. The applications launched with `dapr run` will by default reference the config file in `$HOME/.dapr/config.yaml` or `%USERPROFILE%\.dapr\config.yaml` and can be overridden with the Dapr CLI using the `--config` param:
```bash
dapr run --app-id mynode --app-port 3000 node app.js
@@ -78,24 +62,7 @@ Create a Kubernetes service for the Zipkin pod:
kubectl expose deployment zipkin --type ClusterIP --port 9411
```
-Next, create the following YAML files locally:
-
-* zipkin.yaml component
-
-```yaml
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: zipkin
- namespace: default
-spec:
- type: exporters.zipkin
- metadata:
- - name: enabled
- value: "true"
- - name: exporterAddress
- value: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
-```
+Next, create the following YAML file locally:
* tracing.yaml configuration
@@ -108,13 +75,14 @@ metadata:
spec:
tracing:
samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
```
-Finally, deploy the the Dapr component and configuration files:
+Now, deploy the the Dapr configuration file:
```bash
kubectl apply -f tracing.yaml
-kubectl apply -f zipkin.yaml
```
In order to enable this configuration for your Dapr sidecar, add the following annotation to your pod spec template:
diff --git a/daprdocs/content/en/operations/performance-and-scalability/_index.md b/daprdocs/content/en/operations/performance-and-scalability/_index.md
new file mode 100644
index 000000000..4e5781cb3
--- /dev/null
+++ b/daprdocs/content/en/operations/performance-and-scalability/_index.md
@@ -0,0 +1,7 @@
+---
+type: docs
+title: "Performance and Scalability"
+linkTitle: "Performance and Scalability"
+weight: 100
+description: "Benchmarks and guidelines for Dapr building blocks"
+---
\ No newline at end of file
diff --git a/daprdocs/content/en/operations/performance-and-scalability/perf-service-invocation.md b/daprdocs/content/en/operations/performance-and-scalability/perf-service-invocation.md
new file mode 100644
index 000000000..c33d4e2f6
--- /dev/null
+++ b/daprdocs/content/en/operations/performance-and-scalability/perf-service-invocation.md
@@ -0,0 +1,90 @@
+---
+type: docs
+title: "Service invocation performance"
+linkTitle: "Service invocation performance"
+weight: 10000
+description: ""
+---
+This article provides service invocation API performance benchmarks and resource utilization for the components needed to run Dapr in different hosting environments.
+
+## System overview
+
+Dapr consists of a data plane, the sidecar that runs next to your app, and a control plane that configures the sidecars and provides capabilities such as cert and identity management.
+
+### Self-hosted components
+
+* Sidecar (data plane)
+* Sentry (optional, control plane)
+* Placement (optional, control plane)
+
+For more information see [overview of Dapr in self-hosted mode]({{< ref self-hosted-overview.md >}}).
+
+### Kubernetes components
+
+* Sidecar (data plane)
+* Sentry (optional, control plane)
+* Placement (optional, control planee)
+* Operator (control plane)
+* Sidecar Injector (control plane)
+
+For more information see [overview of Dapr on Kubernetes]({{< ref kubernetes-overview.md >}}).
+
+## Performance summary for Dapr v0.11.3
+
+The service invocation API is a reverse proxy with built-in service discovery to connect to other services. This includes tracing, metrics, mTLS for in-transit encryption of traffic, together with resiliency in the form of retries for network partitions and connection errors.
+
+Using service invocation you can call from HTTP to HTTP, HTTP to gRPC, gRPC to HTTP, and gRPC to gRPC. Dapr does not use HTTP for the communication between sidecars, always using gRPC, while carrying over the semantics of the protocol used when called from the app. Service invocation is the underlying mechanism of communicating with Dapr Actors.
+
+For more information see [service invocation overview]({{< ref service-invocation-overview.md >}}).
+
+### Kubernetes performance test setup
+
+The test was conducted on a 3 node Kubernetes cluster, using commodity hardware running 4 cores and 8GB of RAM, without any network acceleration.
+The setup included a load tester ([Fortio](https://github.com/fortio/fortio)) pod with a Dapr sidecar injected into it that called the service invocation API to reach a pod on a different node.
+
+Test parameters:
+
+* 1000 requests per second
+* Sidecar limited to 0.5 vCPU
+* Sidecar mTLS enabled
+* Sidecar telemetry enabled (tracing with a sampling rate of 0.1)
+* Payload of 1KB
+
+The baseline test included direct, non-encrypted traffic, without telemetry, directly from the load tester to the target app.
+
+### Control plane performance
+
+The Dapr control plane uses a total of 0.009 vCPU and 61.6 Mb when running in non-HA mode, meaning a single replica per system compoment.
+When running in a highly available production setup, the Dapr control plane consumes ~0.02 vCPU and 185 Mb.
+
+| Component | vCPU | Memory
+| ------------- | ------------- | -------------
+| Operator | 0.001 | 12.5 Mb
+| Sentry | 0.005 | 13.6 Mb
+| Sidecar Injector | 0.002 | 14.6 Mb
+| Placement | 0.001 | 20.9 Mb
+
+There are a number of variants that affect the CPU and memory consumption for each of the system components. These variants are shown in the table below.
+
+| Component | vCPU | Memory
+| ------------- | ------------- | ------------------------
+| Operator | Number of pods requesting components, configurations and subscriptions |
+| Sentry | Number of certificate requests |
+| Sidecar Injector | Number of admission requests |
+| Placement | Number of actor rebalancing operations | Number of connected actor hosts
+
+### Data plane performance
+
+The Dapr sidecar uses 0.48 vCPU and 23Mb per 1000 requests per second.
+End-to-end, the Dapr sidecars (client and server) add 1.57 ms to the 90th percentile latency, and 2.36 ms to the 99th percentile latency. End-to-end here is a call from one app to another app receiving a response. This is shown by steps 1-7 in [this diagram]({{< ref service-invocation-overview.md >}}).
+
+### Latency
+
+In the test setup, requests went through the Dapr sidecar both on the client side (serving requests from the load tester tool) and the server side (the target app).
+mTLS and telemetry (tracing with a sampling rate of 0.1) and metrics were enabled on the Dapr test, and disabled for the baseline test.
+
+
+
+
+
+
diff --git a/daprdocs/content/en/operations/security/api-token.md b/daprdocs/content/en/operations/security/api-token.md
index e6d03c2d7..008ca4217 100644
--- a/daprdocs/content/en/operations/security/api-token.md
+++ b/daprdocs/content/en/operations/security/api-token.md
@@ -1,6 +1,6 @@
---
type: docs
-title: "Enable API token based authentication"
+title: "Enable token based API authentication"
linkTitle: "API token auth"
weight: 3000
description: "Require every incoming API request to include an authentication token before allowing that request to pass through"
@@ -14,7 +14,7 @@ Dapr uses [JWT](https://jwt.io/) tokens for API authentication.
> Note, while Dapr itself is actually not the JWT token issuer in this implementation, being explicit about the use of JWT standard enables federated implementations in the future (e.g. OAuth2).
-To configure APIs authentication, start by generating your token using any JWT token compatible tool (e.g. https://jwt.io/) and your secret.
+To configure API authentication, start by generating your token using any JWT token compatible tool (e.g. https://jwt.io/) and your secret.
> Note, that secret is only necessary to generate the token, and Dapr doesn't need to know about or store it
diff --git a/daprdocs/content/en/operations/security/oauth.md b/daprdocs/content/en/operations/security/oauth.md
index 348daab60..7a2b32f81 100644
--- a/daprdocs/content/en/operations/security/oauth.md
+++ b/daprdocs/content/en/operations/security/oauth.md
@@ -55,6 +55,7 @@ metadata:
namespace: default
spec:
type: middleware.http.oauth2
+ version: v1
metadata:
- name: clientId
value: ""
@@ -101,6 +102,7 @@ metadata:
name: myComponent
spec:
type: middleware.http.oauth2clientcredentials
+ version: v1
metadata:
- name: clientId
value: ""
diff --git a/daprdocs/content/en/operations/troubleshooting/setup-tracing.md b/daprdocs/content/en/operations/troubleshooting/setup-tracing.md
index afdbc8eb7..468c819b4 100644
--- a/daprdocs/content/en/operations/troubleshooting/setup-tracing.md
+++ b/daprdocs/content/en/operations/troubleshooting/setup-tracing.md
@@ -6,8 +6,6 @@ weight: 3000
description: "Configure Dapr to send distributed tracing data"
---
-Dapr integrates with Open Census for telemetry and tracing.
-
It is recommended to run Dapr with tracing enabled for any production scenario.
Since Dapr uses Open Census, you can configure various exporters for tracing and telemetry data based on your environment, whether it is running in the cloud or on-premises.
@@ -17,22 +15,18 @@ The `tracing` section under the `Configuration` spec contains the following prop
```yml
tracing:
- enabled: true
- exporterType: zipkin
- exporterAddress: ""
- expandParams: true
- includeBody: true
+ tracing:
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "https://..."
```
-The following table lists the different properties.
+The following table lists the properties for tracing:
-| Property | Type | Description |
-|----------|------|-------------|
-| enabled | bool | Set tracing to be enabled or disabled
-| exporterType | string | Name of the Open Census exporter to use. For example: Zipkin, Azure Monitor, etc
-| exporterAddress | string | URL of the exporter
-| expandParams | bool | When true, expands parameters passed to HTTP endpoints
-| includeBody | bool | When true, includes the request body in the tracing event
+| Property | Type | Description |
+|--------------|--------|-------------|
+| `samplingRate` | string | Set sampling rate for tracing to be enabled or disabled.
+| `zipkin.endpointAddress` | string | Set the Zipkin server address.
## Zipkin in stand-alone mode
@@ -51,11 +45,9 @@ For Standalone mode, create a Dapr configuration file locally and reference it w
namespace: default
spec:
tracing:
- enabled: true
- exporterType: zipkin
- exporterAddress: "http://localhost:9411/api/v2/spans"
- expandParams: true
- includeBody: true
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://localhost:9411/api/v2/spans"
```
2. Launch Zipkin using Docker:
@@ -99,11 +91,9 @@ metadata:
namespace: default
spec:
tracing:
- enabled: true
- exporterType: zipkin
- exporterAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
- expandParams: true
- includeBody: true
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://zipkin.default.svc.cluster.local:9411/api/v2/spans"
```
Finally, deploy the Dapr configuration:
diff --git a/daprdocs/content/en/reference/cli/cli-overview.md b/daprdocs/content/en/reference/cli/cli-overview.md
index 3b4d1b3a8..38c97bd8f 100644
--- a/daprdocs/content/en/reference/cli/cli-overview.md
+++ b/daprdocs/content/en/reference/cli/cli-overview.md
@@ -1,47 +1,47 @@
---
type: docs
-title: "Dapr command line (CLI) reference"
+title: "Dapr command line interface (CLI) reference"
linkTitle: "Overview"
-description: "Detailed information on the dapr CLI"
+description: "Detailed information on the Dapr CLI"
weight: 10
---
The Dapr CLI allows you to setup Dapr on your local dev machine or on a Kubernetes cluster, provides debugging support, and launches and manages Dapr instances.
```bash
- __
+
____/ /___ _____ _____
/ __ / __ '/ __ \/ ___/
- / /_/ / /_/ / /_/ / /
- \__,_/\__,_/ .___/_/
- /_/
-
-======================================================
-A serverless runtime for hyperscale, distributed systems
+ / /_/ / /_/ / /_/ / /
+ \__,_/\__,_/ .___/_/
+ /_/
+
+===============================
+Distributed Application Runtime
Usage:
dapr [command]
Available Commands:
- components List all Dapr components
- configurations List all Dapr configurations
+ completion Generates shell completion scripts
+ components List all Dapr components. Supported platforms: Kubernetes
+ configurations List all Dapr configurations. Supported platforms: Kubernetes
+ dashboard Start Dapr dashboard. Supported platforms: Kubernetes and self-hosted
help Help about any command
- init Setup dapr in Kubernetes or Standalone modes
- invoke Invokes a Dapr app with an optional payload (deprecated, use invokePost)
- invokeGet Issue HTTP GET to Dapr app
- invokePost Issue HTTP POST to Dapr app with an optional payload
- list List all Dapr instances
- logs Gets Dapr sidecar logs for an app in Kubernetes
- mtls Check if mTLS is enabled in a Kubernetes cluster
- publish Publish an event to multiple consumers
- run Launches Dapr and (optionally) your app side by side
- status Shows the Dapr system services (control plane) health status.
- stop Stops multiple running Dapr instances and their associated apps
- uninstall Removes a Dapr installation
+ init Install Dapr on supported hosting platforms. Supported platforms: Kubernetes and self-hosted
+ invoke Invoke a method on a given Dapr application. Supported platforms: Self-hosted
+ list List all Dapr instances. Supported platforms: Kubernetes and self-hosted
+ logs Get Dapr sidecar logs for an application. Supported platforms: Kubernetes
+ mtls Check if mTLS is enabled. Supported platforms: Kubernetes
+ publish Publish a pub-sub event. Supported platforms: Self-hosted
+ run Run Dapr and (optionally) your application side by side. Supported platforms: Self-hosted
+ status Show the health status of Dapr services. Supported platforms: Kubernetes
+ stop Stop Dapr instances and their associated apps. . Supported platforms: Self-hosted
+ uninstall Uninstall Dapr runtime. Supported platforms: Kubernetes and self-hosted
Flags:
- -h, --help help for Dapr
- --version version for Dapr
+ -h, --help help for dapr
+ --version version for dapr
Use "dapr [command] --help" for more information about a command.
```
@@ -50,16 +50,16 @@ Use "dapr [command] --help" for more information about a command.
You can learn more about each Dapr command from the links below.
+ - [`dapr completion`]({{< ref dapr-completion.md >}})
- [`dapr components`]({{< ref dapr-components.md >}})
- [`dapr configurations`]({{< ref dapr-configurations.md >}})
+ - [`dapr dashboard`]({{< ref dapr-dashboard.md >}})
- [`dapr help`]({{< ref dapr-help.md >}})
- [`dapr init`]({{< ref dapr-init.md >}})
- [`dapr invoke`]({{< ref dapr-invoke.md >}})
- - [`dapr invokeGet`]({{< ref dapr-invokeGet.md >}})
- - [`dapr invokePost`]({{< ref dapr-invokePost.md >}})
- [`dapr list`]({{< ref dapr-list.md >}})
- [`dapr logs`]({{< ref dapr-logs.md >}})
- - [`dapr mtls`]({{< ref dapr-mtls.md >}})
+ - [`dapr mtls`]({{< ref dapr-mtls >}})
- [`dapr publish`]({{< ref dapr-publish.md >}})
- [`dapr run`]({{< ref dapr-run.md >}})
- [`dapr status`]({{< ref dapr-status.md >}})
diff --git a/daprdocs/content/en/reference/cli/dapr-completion.md b/daprdocs/content/en/reference/cli/dapr-completion.md
new file mode 100644
index 000000000..5e6e80f7c
--- /dev/null
+++ b/daprdocs/content/en/reference/cli/dapr-completion.md
@@ -0,0 +1,104 @@
+---
+type: docs
+title: "completion CLI command reference"
+linkTitle: "completion"
+description: "Detailed information on the completion CLI command"
+---
+
+## Description
+
+Generates shell completion scripts
+
+## Usage
+
+```bash
+dapr completion [flags]
+dapr completion [command]
+```
+
+## Flags
+
+| Name | Environment Variable | Default | Description |
+|------|----------------------|---------|-------------|
+| `--help`, `-h` | | | Prints this help message |
+
+## Examples
+
+### Installing bash completion on macOS using Homebrew
+
+If running Bash 3.2 included with macOS:
+```bash
+brew install bash-completion
+```
+Or, if running Bash 4.1+:
+```bash
+brew install bash-completion@2
+```
+Add the completion to your completion directory:
+```bash
+dapr completion bash > $(brew --prefix)/etc/bash_completion.d/dapr
+source ~/.bash_profile
+```
+
+### Installing bash completion on Linux
+
+If bash-completion is not installed on Linux, please install the bash-completion' package via your distribution's package manager.
+
+Load the dapr completion code for bash into the current shell:
+```bash
+source <(dapr completion bash)
+```
+
+Write bash completion code to a file and source if from .bash_profile:
+```bash
+dapr completion bash > ~/.dapr/completion.bash.inc
+printf "source '$HOME/.dapr/completion.bash.inc'" >> $HOME/.bash_profile
+source $HOME/.bash_profile
+```
+
+### Installing zsh completion on macOS using homebrew
+
+If zsh-completion is not installed on macOS, please install the 'zsh-completion' package:
+```bash
+brew install zsh-completions
+```
+
+Set the dapr completion code for zsh[1] to autoload on startup:
+```bash
+dapr completion zsh > "${fpath[1]}/_dapr"
+source ~/.zshrc
+```
+
+### Installing zsh completion on Linux
+
+If zsh-completion is not installed on Linux, please install the 'zsh-completion' package via your distribution's package manager.
+
+Load the dapr completion code for zsh into the current shell:
+```bash
+source <(dapr completion zsh)
+```
+
+Set the dapr completion code for zsh[1] to autoload on startup:
+```bash
+dapr completion zsh > "${fpath[1]}/_dapr"
+```
+
+### Installing Powershell completion on Windows
+
+Create $PROFILE if it not exists:
+```bash
+if (!(Test-Path -Path $PROFILE )){ New-Item -Type File -Path $PROFILE -Force }
+```
+
+Add the completion to your profile:
+```bash
+dapr completion powershell >> $PROFILE
+```
+
+## Available Commands
+
+```txt
+bash Generates bash completion scripts
+powershell Generates powershell completion scripts
+zsh Generates zsh completion scripts
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-components.md b/daprdocs/content/en/reference/cli/dapr-components.md
index 90f8358d5..693ae4e10 100644
--- a/daprdocs/content/en/reference/cli/dapr-components.md
+++ b/daprdocs/content/en/reference/cli/dapr-components.md
@@ -7,7 +7,11 @@ description: "Detailed information on the components CLI command"
## Description
-List all Dapr components
+List all Dapr components.
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
@@ -19,5 +23,12 @@ dapr components [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for components |
-| `--kubernetes`, `-k` | | `false` | List all Dapr components in a k8s cluster |
+| `--help`, `-h` | | | Print this help message |
+| `--kubernetes`, `-k` | | `false` | List all Dapr components in a Kubernetes cluster |
+
+## Examples
+
+### List Kubernetes components
+```bash
+dapr components -k
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-configurations.md b/daprdocs/content/en/reference/cli/dapr-configurations.md
index 6c44cbf14..e01dd2ad6 100644
--- a/daprdocs/content/en/reference/cli/dapr-configurations.md
+++ b/daprdocs/content/en/reference/cli/dapr-configurations.md
@@ -7,7 +7,11 @@ description: "Detailed information on the configurations CLI command"
## Description
-List all Dapr configurations
+List all Dapr configurations.
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
@@ -19,5 +23,14 @@ dapr configurations [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for configurations |
-| `--kubernetes`, `-k` | | `false` | List all Dapr configurations in a k8s cluster |
+| `--kubernetes`, `-k` | | `false` | List all Dapr configurations in a Kubernetes cluster
+| `--name`, `-n` | | | The configuration name to be printed (optional)
+| `--output`, `-o` | | `list`| Output format (options: json or yaml or list)
+| `--help`, `-h` | | | Print this help message |
+
+## Examples
+
+### List Kubernetes Dapr configurations
+```bash
+dapr configurations -k
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-dashboard.md b/daprdocs/content/en/reference/cli/dapr-dashboard.md
index 7a5446e94..ade1bf525 100644
--- a/daprdocs/content/en/reference/cli/dapr-dashboard.md
+++ b/daprdocs/content/en/reference/cli/dapr-dashboard.md
@@ -7,20 +7,46 @@ description: "Detailed information on the dashboard CLI command"
## Description
-Start Dapr dashboard.
+Start [Dapr dashboard](https://github.com/dapr/dashboard).
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
-
```bash
dapr dashboard [flags]
```
## Flags
-| Name | Environment Variable | Default | Description
-| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for dashboard |
-| `--kubernetes`, `-k` | | `false` | Start Dapr dashboard in local browser |
-| `--version`, `-v` | | `false` | Check Dapr dashboard version |
-| `--port`, `-p` | | `8080` | The local port on which to serve dashboard |
-| `--namespace`, `-n` | | `dapr-system` | The namespace where Dapr dashboard is running |
+| Name | Environment Variable | Default | Description |
+|------|----------------------|---------|-------------|
+| `--help`, `-h` | | | Prints this help message |
+| `--kubernetes`, `-k` | | `false` | Opens Dapr dashboard in local browser via local proxy to Kubernetes cluster |
+| `--namespace`, `-n` | | `dapr-system` | The namespace where Dapr dashboard is running |
+| `--port`, `-p` | | `8080` | The local port on which to serve Dapr dashboard |
+| `--version`, `-v` | | `false` | Print the version for Dapr dashboard |
+
+## Examples
+
+### Start dashboard locally
+```bash
+dapr dashboard
+```
+
+### Start dashboard service locally on a specified port
+```bash
+dapr dashboard -p 9999
+```
+
+### Port forward to dashboard service running in Kubernetes
+```bash
+dapr dashboard -k
+```
+
+### Port forward to dashboard service running in Kubernetes on a specified port
+```bash
+dapr dashboard -k -p 9999
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-help.md b/daprdocs/content/en/reference/cli/dapr-help.md
index 91b1be50f..a645a2a35 100644
--- a/daprdocs/content/en/reference/cli/dapr-help.md
+++ b/daprdocs/content/en/reference/cli/dapr-help.md
@@ -19,4 +19,4 @@ dapr help [command] [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for help |
+| `--help`, `-h` | | | Prints this help message |
diff --git a/daprdocs/content/en/reference/cli/dapr-init.md b/daprdocs/content/en/reference/cli/dapr-init.md
index 7b0cb7ec7..959a4324f 100644
--- a/daprdocs/content/en/reference/cli/dapr-init.md
+++ b/daprdocs/content/en/reference/cli/dapr-init.md
@@ -7,10 +7,14 @@ description: "Detailed information on the init CLI command"
## Description
-Setup Dapr in Kubernetes or Standalone modes
+Install Dapr on supported hosting platforms.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
-
```bash
dapr init [flags]
```
@@ -19,9 +23,38 @@ dapr init [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for init |
+| `--enable-ha` | | `false` | Enable high availability (HA) mode |
+| `--enable-mtls` | | `true` | Enable mTLS in your cluster |
+| `--help`, `-h` | | | Print this help message |
| `--kubernetes`, `-k` | | `false` | Deploy Dapr to a Kubernetes cluster |
+| `--namespace`, `-n` | | `dapr-system` | The Kubernetes namespace to install Dapr in |
| `--network` | `DAPR_NETWORK` | | The Docker network on which to deploy the Dapr runtime |
-| `--runtime-version` | | `latest` | The version of the Dapr runtime to install, for example: `v0.1.0-alpha` |
-| `--redis-host` | `DAPR_REDIS_HOST` | `localhost` | The host on which the Redis service resides |
-| `--slim`, `-s` | | `false` | Initialize dapr in self-hosted mode without placement, redis and zipkin containers.|
+| `--runtime-version` | | `latest` | The version of the Dapr runtime to install, for example: `1.0.0` |
+| `--slim`, `-s` | | `false` | Exclude placement service, Redis and Zipkin containers from self-hosted installation |
+
+## Examples
+
+### Initialize Dapr in self-hosted mode
+```bash
+dapr init
+```
+
+### Initialize Dapr in Kubernetes
+```bash
+dapr init -k
+```
+
+### Initialize specified version of Dapr runtime in self-hosted mode
+```bash
+dapr init --runtime-version 0.10.0
+```
+
+### Initialize specified version of Dapr runtime in Kubernetes
+```bash
+dapr init -k --runtime-version 0.10.0
+```
+
+### Initialize Dapr in [slim self-hosted mode]({{< ref self-hosted-no-docker.md >}})
+```bash
+dapr init -s
+```
\ No newline at end of file
diff --git a/daprdocs/content/en/reference/cli/dapr-invoke.md b/daprdocs/content/en/reference/cli/dapr-invoke.md
index 050e9b84c..786035392 100644
--- a/daprdocs/content/en/reference/cli/dapr-invoke.md
+++ b/daprdocs/content/en/reference/cli/dapr-invoke.md
@@ -7,10 +7,13 @@ description: "Detailed information on the invoke CLI command"
## Description
-Invokes a Dapr app with an optional payload (deprecated, use invokePost)
+Invoke a method on a given Dapr application.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
## Usage
-
```bash
dapr invoke [flags]
```
@@ -19,7 +22,20 @@ dapr invoke [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--app-id`, `-a` | | | The app ID to invoke |
-| `--help`, `-h` | | | Help for invoke |
+| `--app-id`, `-a` | | | The application id to invoke |
+| `--help`, `-h` | | | Print this help message |
| `--method`, `-m` | | | The method to invoke |
-| `--payload`, `-p` | | | (optional) a json payload |
+| `--data`, `-d` | | | The JSON serialized data string (optional) |
+| `--verb`, `-v` | | `POST` | The HTTP verb to use |
+
+## Examples
+
+### Invoke a sample method on target app with POST Verb
+```bash
+dapr invoke --app-id target --method sample --data '{"key":"value"}'
+```
+
+### Invoke a sample method on target app with GET Verb
+```bash
+dapr invoke --app-id target --method sample --verb GET
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-invokeGet.md b/daprdocs/content/en/reference/cli/dapr-invokeGet.md
deleted file mode 100644
index 0cc75ea63..000000000
--- a/daprdocs/content/en/reference/cli/dapr-invokeGet.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-type: docs
-title: "invokeGet CLI command reference"
-linkTitle: "invokeGet"
-description: "Detailed information on the invokeGet CLI command"
----
-
-## Description
-
-Issue HTTP GET to Dapr app
-
-## Usage
-
-```bash
-dapr invokeGet [flags]
-```
-
-## Flags
-
-| Name | Environment Variable | Default | Description
-| --- | --- | --- | --- |
-| `--app-id`, `-a` | | | The app ID to invoke |
-| `--help`, `-h` | | | Help for invokeGet |
-| `--method`, `-m` | | | The method to invoke |
diff --git a/daprdocs/content/en/reference/cli/dapr-invokePost.md b/daprdocs/content/en/reference/cli/dapr-invokePost.md
deleted file mode 100644
index b9a4866e4..000000000
--- a/daprdocs/content/en/reference/cli/dapr-invokePost.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-type: docs
-title: "invokePost CLI command reference"
-linkTitle: "invokePost"
-description: "Detailed information on the invokePost CLI command"
----
-
-## Description
-
-Issue HTTP POST to Dapr app with an optional payload
-
-## Usage
-
-```bash
-dapr invokePost [flags]
-```
-
-## Flags
-
-| Name | Environment Variable | Default | Description
-| --- | --- | --- | --- |
-| `--app-id`, `-a` | | | The app ID to invoke |
-| `--help`, `-h` | | | Help for invokePost |
-| `--method`, `-m` | | | The method to invoke |
-| `--payload`, `-p` | | | (optional) a json payload |
diff --git a/daprdocs/content/en/reference/cli/dapr-list.md b/daprdocs/content/en/reference/cli/dapr-list.md
index af60092fd..108d6c4b7 100644
--- a/daprdocs/content/en/reference/cli/dapr-list.md
+++ b/daprdocs/content/en/reference/cli/dapr-list.md
@@ -7,10 +7,14 @@ description: "Detailed information on the list CLI command"
## Description
-List all Dapr instances
+List all Dapr instances.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
-
```bash
dapr list [flags]
```
@@ -19,5 +23,17 @@ dapr list [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for list |
-| `--kubernetes`, `-k` | | `false` | List all Dapr pods in a k8s cluster |
+| `--help`, `-h` | | | Print this help message |
+| `--kubernetes`, `-k` | | `false` | List all Dapr pods in a Kubernetes cluster |
+
+## Examples
+
+### List Dapr instances in self-hosted mode
+```bash
+dapr list
+```
+
+### List Dapr instances in Kubernetes mode
+```bash
+dapr list -k
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-logs.md b/daprdocs/content/en/reference/cli/dapr-logs.md
index 9a34a95eb..45e6bb5c5 100644
--- a/daprdocs/content/en/reference/cli/dapr-logs.md
+++ b/daprdocs/content/en/reference/cli/dapr-logs.md
@@ -7,10 +7,13 @@ description: "Detailed information on the logs CLI command"
## Description
-Gets Dapr sidecar logs for an app in Kubernetes
+Get Dapr sidecar logs for an application.
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
-
```bash
dapr logs [flags]
```
@@ -19,8 +22,16 @@ dapr logs [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--app-id`, `-a` | | | The app id for which logs are needed |
-| `--help`, `-h` | | | Help for logs |
-| `--kubernetes`, `-k` | | `true` | only works with a Kubernetes cluster (default true) |
-| `--namespace`, `-n` | | `default` | (optional) Kubernetes namespace in which your application is deployed. default value is 'default' |
-| `--pod-name`, `-p` | | | (optional) Name of the Pod. Use this in case you have multiple app instances (Pods) |
+| `--app-id`, `-a` | | | The application id for which logs are needed |
+| `--help`, `-h` | | | Print this help message |
+| `--kubernetes`, `-k` | | `true` | Get logs from a Kubernetes cluster |
+| `--namespace`, `-n` | | `default` | The Kubernetes namespace in which your application is deployed |
+| `--pod-name`, `-p` | | | The name of the pod in Kubernetes, in case your application has multiple pods (optional) |
+
+
+## Examples
+
+### Get logs of sample app from target pod in custom namespace
+```bash
+dapr logs -k --app-id sample --pod-name target --namespace custom
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-mtls.md b/daprdocs/content/en/reference/cli/dapr-mtls.md
deleted file mode 100644
index a8cf4c207..000000000
--- a/daprdocs/content/en/reference/cli/dapr-mtls.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-type: docs
-title: "mtls CLI command reference"
-linkTitle: "mtls"
-description: "Detailed information on the mtls CLI command"
----
-
-## Description
-
-Check if mTLS is enabled in a Kubernetes cluster
-
-## Usage
-
-```bash
-dapr mtls [flags]
-```
-
-## Flags
-
-| Name | Environment Variable | Default | Description
-| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for mtls |
-| `--kubernetes`, `-k` | | `false` | Check if mTLS is enabled in a Kubernetes cluster |
diff --git a/daprdocs/content/en/reference/cli/dapr-mtls/_index.md b/daprdocs/content/en/reference/cli/dapr-mtls/_index.md
new file mode 100644
index 000000000..4fa7eadea
--- /dev/null
+++ b/daprdocs/content/en/reference/cli/dapr-mtls/_index.md
@@ -0,0 +1,49 @@
+---
+type: docs
+title: "mtls CLI command reference"
+linkTitle: "mtls"
+description: "Detailed information on the mtls CLI command"
+---
+
+## Description
+
+Check if mTLS is enabled.
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
+
+## Usage
+
+```bash
+dapr mtls [flags]
+dapr mtls [command]
+```
+
+## Flags
+
+| Name | Environment Variable | Default | Description
+| --- | --- | --- | --- |
+| `--help`, `-h` | | | Print this help message |
+| `--kubernetes`, `-k` | | `false` | Check if mTLS is enabled in a Kubernetes cluster |
+
+## Available Commands
+
+```txt
+expiry Checks the expiry of the root certificate
+export Export the root CA, issuer cert and key from Kubernetes to local files
+```
+
+## Command Reference
+
+You can learn more about each sub command from the links below.
+
+ - [`dapr mtls expiry`]({{< ref dapr-mtls-expiry.md >}})
+ - [`dapr mtls export`]({{< ref dapr-mtls-export.md >}})
+
+## Examples
+
+### Check if mTLS is enabled
+```bash
+dapr mtls -k
+```
\ No newline at end of file
diff --git a/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-expiry.md b/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-expiry.md
new file mode 100644
index 000000000..2f32af1c3
--- /dev/null
+++ b/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-expiry.md
@@ -0,0 +1,33 @@
+---
+type: docs
+title: "mtls expiry CLI command reference"
+linkTitle: "mtls expiry"
+description: "Detailed information on the mtls expiry CLI command"
+weight: 2000
+---
+
+## Description
+
+Checks the expiry of the root certificate
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
+
+## Usage
+```bash
+dapr mtls expiry [flags]
+```
+
+## Flags
+
+| Name | Environment Variable | Default | Description
+| --- | --- | --- | --- |
+| `--help`, `-h` | | | help for expiry |
+
+## Examples
+
+### Check expiry of Kubernetes certs
+```bash
+dapr mtls expiry
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-export.md b/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-export.md
new file mode 100644
index 000000000..6c3e42147
--- /dev/null
+++ b/daprdocs/content/en/reference/cli/dapr-mtls/dapr-mtls-export.md
@@ -0,0 +1,34 @@
+---
+type: docs
+title: "mtls export CLI command reference"
+linkTitle: "mtls export"
+description: "Detailed information on the mtls export CLI command"
+weight: 1000
+---
+
+## Description
+
+Export the root CA, issuer cert and key from Kubernetes to local files
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
+
+## Usage
+```bash
+dapr mtls export [flags]
+```
+
+## Flags
+
+| Name | Environment Variable | Default | Description
+| --- | --- | --- | --- |
+| `--help`, `-h` | | | help for export |
+| `--out`, `-o` | | current directory | The output directory path to save the certs |
+
+## Examples
+
+### Check expiry of Kubernetes certs
+```bash
+dapr mtls export -o ./certs
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-publish.md b/daprdocs/content/en/reference/cli/dapr-publish.md
index 1fd73bff9..f27189fec 100644
--- a/daprdocs/content/en/reference/cli/dapr-publish.md
+++ b/daprdocs/content/en/reference/cli/dapr-publish.md
@@ -7,7 +7,11 @@ description: "Detailed information on the publish CLI command"
## Description
-Publish an event to multiple consumers
+Publish a pub-sub event.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
## Usage
@@ -19,7 +23,16 @@ dapr publish [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--pubsub` | | | Name of the pub/sub component
-| `--data`, `-d` | | | (optional) a json serialized string |
-| `--help`, `-h` | | | Help for publish |
-| `--topic`, `-t` | | | The topic the app is listening on |
\ No newline at end of file
+| `--publish-app-id` | `-i`| | The ID that represents the app from which you are publishing
+| `--pubsub` | `-p` | | The name of the pub/sub component
+| `--topic`, `-t` | | | The topic to be published to |
+| `--data`, `-d` | | | The JSON serialized string (optional) |
+| `--help`, `-h` | | | Print this help message |
+
+
+## Examples
+
+### Publish to sample topic in target pubsub
+```bash
+dapr publish --publish-app-id appId --topic sample --pubsub target --data '{"key":"value"}'
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-run.md b/daprdocs/content/en/reference/cli/dapr-run.md
index efb74b108..7461f8eee 100644
--- a/daprdocs/content/en/reference/cli/dapr-run.md
+++ b/daprdocs/content/en/reference/cli/dapr-run.md
@@ -7,7 +7,11 @@ description: "Detailed information on the run CLI command"
## Description
-Launches Dapr and (optionally) your app side by side
+Run Dapr and (optionally) your application side by side.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
## Usage
@@ -19,17 +23,50 @@ dapr run [flags] [command]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--app-id` | | | An ID for your application, used for service discovery |
-| `--app-port` | | `-1` | The port your application is listening o
-| `--run-path` | | `Linux & Mac: $HOME/.dapr/run`, `Windows: %USERPROFILE%\.dapr\run` | Path for run directory |
-| `--config` | | `Linux & Mac: $HOME/.dapr/config.yaml`, `Windows: %USERPROFILE%\.dapr\config.yaml` | Dapr configuration file |
-| `--enable-profiling` | | | Enable `pprof` profiling via an HTTP endpoint |
-| `--dapr-grpc-port` | | `-1` | The gRPC port for Dapr to listen on |
-| `--help`, `-h` | | | Help for run |
+| `--app-id`, `-a` | | | The id for your application, used for service discovery |
+| `--app-max-concurrency` | | `unlimited` | The concurrency level of the application, otherwise is unlimited |
+| `--app-port`, `-p` | | | The port your application is listening on
+| `--app-protocol`, `-P` | | `http` | The protocol (gRPC or HTTP) Dapr uses to talk to the application. Valid values are: `http` or `grpc` |
+| `--app-ssl` | | `false` | Enable https when Dapr invokes the application
+| `--components-path`, `-d` | | `Linux & Mac: $HOME/.dapr/components`, `Windows: %USERPROFILE%\.dapr\components` | The path for components directory
+| `--config`, `-c` | | `Linux & Mac: $HOME/.dapr/config.yaml`, `Windows: %USERPROFILE%\.dapr\config.yaml` | Dapr configuration file |
+| `--dapr-grpc-port` | | `3500` | The gRPC port for Dapr to listen on |
+| `--dapr-http-port` | | `50001` | The HTTP port for Dapr to listen on |
+| `--enable-profiling` | | `false` | Enable `pprof` profiling via an HTTP endpoint
+| `--help`, `-h` | | | Print this help message |
| `--image` | | | The image to build the code in. Input is: `repository/image` |
-| `--log-level` | | `info` | Sets the log verbosity. Valid values are: `debug`, `info`, `warning`, `error`, `fatal`, or `panic` |
-| `--max-concurrency` | | `-1` | Controls the concurrency level of the app |
+| `--log-level` | | `info` | The log verbosity. Valid values are: `debug`, `info`, `warn`, `error`, `fatal`, or `panic` |
| `--placement-host-address` | `DAPR_PLACEMENT_HOST` | `localhost` | The host on which the placement service resides |
-| `--port`, `-p` | | `-1` | The HTTP port for Dapr to listen on |
-| `--profile-port` | | `-1` | The port for the profile server to listen on |
-| `--protocol` | | `http` | Tells Dapr to use HTTP or gRPC to talk to the app. Valid values are: `http` or `grpc` |
+| `--profile-port` | | `7777` | The port for the profile server to listen on |
+
+## Examples
+
+### Run a .NET application
+
+```bash
+dapr run --app-id myapp --app-port 5000 -- dotnet run
+```
+
+### Run a Java application
+
+```bash
+dapr run --app-id myapp -- java -jar myapp.jar
+```
+
+### Run a NodeJs application that listens to port 3000
+
+```bash
+dapr run --app-id myapp --app-port 3000 -- node myapp.js
+```
+
+### Run a Python application
+
+```bash
+dapr run --app-id myapp -- python myapp.py
+```
+
+### Run sidecar only
+
+```bash
+dapr run --app-id myapp
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-status.md b/daprdocs/content/en/reference/cli/dapr-status.md
index d6fec1ecd..dc0087e07 100644
--- a/daprdocs/content/en/reference/cli/dapr-status.md
+++ b/daprdocs/content/en/reference/cli/dapr-status.md
@@ -7,17 +7,28 @@ description: "Detailed information on the status CLI command"
## Description
-Shows the Dapr system services (control plane) health status.
+Show the health status of Dapr services.
+
+## Supported platforms
+
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
```bash
-dapr status [flags]
+dapr status -k
```
## Flags
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--help`, `-h` | | | Help for status |
-| `--kubernetes`, `-k` | | `true` | only works with a Kubernetes cluster (default true) |
\ No newline at end of file
+| `--help`, `-h` | | | Print this help message |
+| `--kubernetes`, `-k` | | `false` | Show the health status of Dapr services on Kubernetes cluster |
+
+## Examples
+
+### Get status of Dapr services from Kubernetes
+```bash
+dapr status -k
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-stop.md b/daprdocs/content/en/reference/cli/dapr-stop.md
index 87cecf435..c4f44581d 100644
--- a/daprdocs/content/en/reference/cli/dapr-stop.md
+++ b/daprdocs/content/en/reference/cli/dapr-stop.md
@@ -7,7 +7,11 @@ description: "Detailed information on the stop CLI command"
## Description
-Stops multiple running Dapr instances and their associated apps
+Stop Dapr instances and their associated apps.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
## Usage
@@ -19,5 +23,12 @@ dapr stop [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
-| `--app-id` | | | The app ID to stop (standalong mode) |
-| `--help`, `-h` | | | Help for stop |
+| `--app-id`, `-a` | | | The application id to be stopped |
+| `--help`, `-h` | | | Print this help message |
+
+## Examples
+
+### Stop Dapr application
+```bash
+dapr stop --app-id
+```
diff --git a/daprdocs/content/en/reference/cli/dapr-uninstall.md b/daprdocs/content/en/reference/cli/dapr-uninstall.md
index 08ee72842..28130221d 100644
--- a/daprdocs/content/en/reference/cli/dapr-uninstall.md
+++ b/daprdocs/content/en/reference/cli/dapr-uninstall.md
@@ -7,7 +7,12 @@ description: "Detailed information on the uninstall CLI command"
## Description
-Removes a Dapr installation
+Uninstall Dapr runtime.
+
+## Supported platforms
+
+- [Self-Hosted]({{< ref self-hosted >}})
+- [Kubernetes]({{< ref kubernetes >}})
## Usage
@@ -20,7 +25,24 @@ dapr uninstall [flags]
| Name | Environment Variable | Default | Description
| --- | --- | --- | --- |
| `--all` | | `false` | Remove Redis, Zipkin containers in addition to actor placement container. Remove default dapr dir located at `$HOME/.dapr or %USERPROFILE%\.dapr\`. |
-| `--help`, `-h` | | | Help for uninstall |
+| `--help`, `-h` | | | Print this help message |
| `--kubernetes`, `-k` | | `false` | Uninstall Dapr from a Kubernetes cluster |
+| `--namespace`, `-n` | | `dapr-system` | The Kubernetes namespace to uninstall Dapr from |
| `--network` | `DAPR_NETWORK` | | The Docker network from which to remove the Dapr runtime |
-| `--runtime-version` | | `latest` | The version of the Dapr runtime to uninstall, for example: `v0.1.0-alpha` (Kubernetes mode only) |
+
+## Examples
+
+### Uninstall from self-hosted mode
+```bash
+dapr uninstall
+```
+
+### Uninstall from self-hosted mode and remove .dapr directory, Redis, Placement and Zipkin containers
+```bash
+dapr uninstall --all
+```
+
+### Uninstall from Kubernetes
+```bash
+dapr uninstall -k
+```
diff --git a/daprdocs/static/docs/open-telemetry-collector/collector-component.yaml b/daprdocs/static/docs/open-telemetry-collector/collector-component.yaml
deleted file mode 100644
index 0244ca89c..000000000
--- a/daprdocs/static/docs/open-telemetry-collector/collector-component.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: dapr.io/v1alpha1
-kind: Configuration
-metadata:
- name: appconfig
- namespace: default
-spec:
- tracing:
- samplingRate: "1"
----
-apiVersion: dapr.io/v1alpha1
-kind: Component
-metadata:
- name: native
- namespace: default
-spec:
- type: exporters.native
- metadata:
- - name: enabled
- value: "true"
- - name: agentEndpoint
- value: "otel-collector.default.svc.cluster.local:55678"
diff --git a/daprdocs/static/docs/open-telemetry-collector/collector-config.yaml b/daprdocs/static/docs/open-telemetry-collector/collector-config.yaml
new file mode 100644
index 000000000..78b37a928
--- /dev/null
+++ b/daprdocs/static/docs/open-telemetry-collector/collector-config.yaml
@@ -0,0 +1,10 @@
+apiVersion: dapr.io/v1alpha1
+kind: Configuration
+metadata:
+ name: appconfig
+ namespace: default
+spec:
+ tracing:
+ samplingRate: "1"
+ zipkin:
+ endpointAddress: "http://otel-collector.default.svc.cluster.local:9411/api/v2/spans"
diff --git a/daprdocs/static/docs/open-telemetry-collector/open-telemetry-collector.yaml b/daprdocs/static/docs/open-telemetry-collector/open-telemetry-collector.yaml
index 3516ab364..bae9a336e 100644
--- a/daprdocs/static/docs/open-telemetry-collector/open-telemetry-collector.yaml
+++ b/daprdocs/static/docs/open-telemetry-collector/open-telemetry-collector.yaml
@@ -8,8 +8,8 @@ metadata:
data:
otel-collector-config: |
receivers:
- opencensus:
- endpoint: 0.0.0.0:55678
+ zipkin:
+ endpoint: 0.0.0.0:9411
processors:
queued_retry:
batch:
@@ -20,8 +20,9 @@ data:
zpages:
endpoint: :55679
exporters:
+ logging:
+ loglevel: debug
azuremonitor:
- azuremonitor/2:
endpoint: "https://dc.services.visualstudio.com/v2/track"
instrumentation_key: ""
# maxbatchsize is the maximum number of items that can be
@@ -34,8 +35,8 @@ data:
extensions: [pprof, zpages, health_check]
pipelines:
traces:
- receivers: [opencensus]
- exporters: [azuremonitor/2]
+ receivers: [zipkin]
+ exporters: [azuremonitor,logging]
processors: [batch, queued_retry]
---
apiVersion: v1
@@ -47,10 +48,10 @@ metadata:
component: otel-collector
spec:
ports:
- - name: opencensus # Default endpoint for Opencensus receiver.
- port: 55678
+ - name: zipkin # Default endpoint for Zipkin receiver.
+ port: 9411
protocol: TCP
- targetPort: 55678
+ targetPort: 9411
selector:
component: otel-collector
---
@@ -86,7 +87,7 @@ spec:
cpu: 200m
memory: 400Mi
ports:
- - containerPort: 55678 # Default endpoint for Opencensus receiver.
+ - containerPort: 9411 # Default endpoint for Zipkin receiver.
volumeMounts:
- name: otel-collector-config-vol
mountPath: /conf
diff --git a/daprdocs/static/images/grafana-actor-dashboard.png b/daprdocs/static/images/grafana-actor-dashboard.png
new file mode 100644
index 000000000..371f398ee
Binary files /dev/null and b/daprdocs/static/images/grafana-actor-dashboard.png differ
diff --git a/daprdocs/static/images/grafana-sidecar-dashboard.png b/daprdocs/static/images/grafana-sidecar-dashboard.png
new file mode 100644
index 000000000..e923a8168
Binary files /dev/null and b/daprdocs/static/images/grafana-sidecar-dashboard.png differ
diff --git a/daprdocs/static/images/grafana-system-service-dashboard.png b/daprdocs/static/images/grafana-system-service-dashboard.png
new file mode 100644
index 000000000..f713caf4d
Binary files /dev/null and b/daprdocs/static/images/grafana-system-service-dashboard.png differ
diff --git a/daprdocs/static/images/grafana-tooltip.png b/daprdocs/static/images/grafana-tooltip.png
new file mode 100644
index 000000000..368b31cf3
Binary files /dev/null and b/daprdocs/static/images/grafana-tooltip.png differ
diff --git a/daprdocs/static/images/install-dapr-selfhost-windows.png b/daprdocs/static/images/install-dapr-selfhost-windows.png
new file mode 100644
index 000000000..8091834ae
Binary files /dev/null and b/daprdocs/static/images/install-dapr-selfhost-windows.png differ
diff --git a/daprdocs/static/images/nr-apm-frontend.png b/daprdocs/static/images/nr-apm-frontend.png
new file mode 100644
index 000000000..1e3d43361
Binary files /dev/null and b/daprdocs/static/images/nr-apm-frontend.png differ
diff --git a/daprdocs/static/images/nr-apm-subtractor-1.png b/daprdocs/static/images/nr-apm-subtractor-1.png
new file mode 100644
index 000000000..f3a72864c
Binary files /dev/null and b/daprdocs/static/images/nr-apm-subtractor-1.png differ
diff --git a/daprdocs/static/images/nr-apm-subtractor-2.png b/daprdocs/static/images/nr-apm-subtractor-2.png
new file mode 100644
index 000000000..0a5bba3bb
Binary files /dev/null and b/daprdocs/static/images/nr-apm-subtractor-2.png differ
diff --git a/daprdocs/static/images/nr-automated-installer.png b/daprdocs/static/images/nr-automated-installer.png
new file mode 100644
index 000000000..782a6c4a6
Binary files /dev/null and b/daprdocs/static/images/nr-automated-installer.png differ
diff --git a/daprdocs/static/images/nr-dapr-distributed-calculator.png b/daprdocs/static/images/nr-dapr-distributed-calculator.png
new file mode 100644
index 000000000..b8412dfcd
Binary files /dev/null and b/daprdocs/static/images/nr-dapr-distributed-calculator.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-1.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-1.png
new file mode 100644
index 000000000..b948ea8e6
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-1.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-2.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-2.png
new file mode 100644
index 000000000..cc9196b51
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-2.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-3.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-3.png
new file mode 100644
index 000000000..de02d6f3c
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-3.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-4.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-4.png
new file mode 100644
index 000000000..b0d26fac0
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-4.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-5.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-5.png
new file mode 100644
index 000000000..f92ca2ef8
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-5.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-6.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-6.png
new file mode 100644
index 000000000..dc046639f
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-6.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-metrics-7.png b/daprdocs/static/images/nr-dashboard-dapr-metrics-7.png
new file mode 100644
index 000000000..f464f4a0d
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-metrics-7.png differ
diff --git a/daprdocs/static/images/nr-dashboard-dapr-system-services.png b/daprdocs/static/images/nr-dashboard-dapr-system-services.png
new file mode 100644
index 000000000..05e9cfc4b
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-dapr-system-services.png differ
diff --git a/daprdocs/static/images/nr-dashboard-k8s-overview.png b/daprdocs/static/images/nr-dashboard-k8s-overview.png
new file mode 100644
index 000000000..970a2804f
Binary files /dev/null and b/daprdocs/static/images/nr-dashboard-k8s-overview.png differ
diff --git a/daprdocs/static/images/nr-distributed-calculator-ui.png b/daprdocs/static/images/nr-distributed-calculator-ui.png
new file mode 100644
index 000000000..299e12477
Binary files /dev/null and b/daprdocs/static/images/nr-distributed-calculator-ui.png differ
diff --git a/daprdocs/static/images/nr-distributed-tracing-detail.png b/daprdocs/static/images/nr-distributed-tracing-detail.png
new file mode 100644
index 000000000..ff59d109c
Binary files /dev/null and b/daprdocs/static/images/nr-distributed-tracing-detail.png differ
diff --git a/daprdocs/static/images/nr-distributed-tracing-overview.png b/daprdocs/static/images/nr-distributed-tracing-overview.png
new file mode 100644
index 000000000..598fde21a
Binary files /dev/null and b/daprdocs/static/images/nr-distributed-tracing-overview.png differ
diff --git a/daprdocs/static/images/nr-grafana-dashboard.png b/daprdocs/static/images/nr-grafana-dashboard.png
new file mode 100644
index 000000000..8fbc2b8b7
Binary files /dev/null and b/daprdocs/static/images/nr-grafana-dashboard.png differ
diff --git a/daprdocs/static/images/nr-grafana-datasource.png b/daprdocs/static/images/nr-grafana-datasource.png
new file mode 100644
index 000000000..0707c6b4d
Binary files /dev/null and b/daprdocs/static/images/nr-grafana-datasource.png differ
diff --git a/daprdocs/static/images/nr-k8s-cluster-explorer-app.png b/daprdocs/static/images/nr-k8s-cluster-explorer-app.png
new file mode 100644
index 000000000..136d3848b
Binary files /dev/null and b/daprdocs/static/images/nr-k8s-cluster-explorer-app.png differ
diff --git a/daprdocs/static/images/nr-k8s-cluster-explorer.png b/daprdocs/static/images/nr-k8s-cluster-explorer.png
new file mode 100644
index 000000000..1e340b930
Binary files /dev/null and b/daprdocs/static/images/nr-k8s-cluster-explorer.png differ
diff --git a/daprdocs/static/images/nr-k8s-logs-in-context.png b/daprdocs/static/images/nr-k8s-logs-in-context.png
new file mode 100644
index 000000000..0fff7f088
Binary files /dev/null and b/daprdocs/static/images/nr-k8s-logs-in-context.png differ
diff --git a/daprdocs/static/images/nr-k8s-pod-level-details.png b/daprdocs/static/images/nr-k8s-pod-level-details.png
new file mode 100644
index 000000000..c05d8f639
Binary files /dev/null and b/daprdocs/static/images/nr-k8s-pod-level-details.png differ
diff --git a/daprdocs/static/images/perf_invocation_p90.png b/daprdocs/static/images/perf_invocation_p90.png
new file mode 100644
index 000000000..71327a80d
Binary files /dev/null and b/daprdocs/static/images/perf_invocation_p90.png differ
diff --git a/daprdocs/static/images/perf_invocation_p99.png b/daprdocs/static/images/perf_invocation_p99.png
new file mode 100644
index 000000000..5d840e3d9
Binary files /dev/null and b/daprdocs/static/images/perf_invocation_p99.png differ