Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
4f32042
Update conversation-overview.md
hhunter-ms Feb 27, 2025
3688a1d
Merge pull request #4559 from dapr/hhunter-ms-patch-6
hhunter-ms Feb 27, 2025
b74c247
update python examples for workflow; update conversation quickstart t…
hhunter-ms Feb 28, 2025
0992cd4
Updates latest version to 1.15.1 (#4562)
JoshVanL Feb 28, 2025
fb53445
Revert back to built-in template that includes GA
marcduiker Mar 3, 2025
287cfd7
Merge pull request #4564 from marcduiker/v1.15
hhunter-ms Mar 3, 2025
7c40430
spelling-fix: kubernetes-persisting-scheduler.md (#4566)
jake-engelberg Mar 3, 2025
19f812c
remove 3500, only use as an example in API docs
hhunter-ms Mar 3, 2025
178e0c8
Update kubernetes-persisting-scheduler.md (#4568)
jake-engelberg Mar 3, 2025
ac358cb
Merge branch 'v1.15' into issue_4519
hhunter-ms Mar 4, 2025
b7b273d
Merge pull request #4567 from hhunter-ms/issue_4519
hhunter-ms Mar 4, 2025
12b2f17
Update sidecar.md (#4570)
joneldominic Mar 4, 2025
f4848ae
Update v1.15.1 --> v1.15.2 (#4571)
hhunter-ms Mar 5, 2025
0682cd0
update keys to items for consistency (#4565)
hhunter-ms Mar 6, 2025
418ef7f
update the docs
msfussell Mar 13, 2025
fb8764b
Update multi-app template and arguments annotations for new configura…
antontroshin Mar 13, 2025
449fb9a
Merge branch 'v1.15' into pythondocs
hhunter-ms Mar 17, 2025
b24527e
Merge pull request #4576 from msfussell/pythondocs
hhunter-ms Mar 17, 2025
60d5332
update author and manage workflow how-tos
hhunter-ms Mar 17, 2025
8cbd37a
Merge branch 'v1.15' into issue_4410
hhunter-ms Mar 17, 2025
6e990e4
Added .NET streaming subscription example to pubsub page
WhitWaldo Mar 18, 2025
2be7c99
Added double quotes around .NET in the tabs markup
WhitWaldo Mar 18, 2025
dd0fd38
Merge pull request #4583 from WhitWaldo/net-streaming-subs
hhunter-ms Mar 18, 2025
79d0320
Merge branch 'v1.15' into issue_4410
hhunter-ms Mar 18, 2025
f612ab7
Merge pull request #4563 from hhunter-ms/issue_4410
hhunter-ms Mar 19, 2025
8a29b39
Fixed spelling mistake in secret-scope.md (#4593)
jamespegg Mar 24, 2025
aebf393
Update self-hosted-with-docker.md - make `scheduler` running (#4599)
mathieu-benoit Mar 25, 2025
b421483
Update actors-quickstart.md (#4601)
alicejgibbons Mar 27, 2025
196cf3d
Upped stalebot period from 5 to 30 days (#4610)
WhitWaldo Apr 9, 2025
5435bd4
Added troubleshooting step to resolve port conflicts during `dapr ini…
WhitWaldo Apr 9, 2025
4341935
change application insights example from insights key to connection s…
fabistb Apr 10, 2025
58be5f3
docs: bindings.cron every 15m (#4605)
jfreeland Apr 10, 2025
04c9b58
fix: broken link due to typo (#4604)
thrubovc Apr 12, 2025
f83e3dc
Updated .NET workflow method names (#4586)
WhitWaldo Apr 12, 2025
aa7a115
Update documentation for GCP Secret Manager and Object Store support …
antontroshin Apr 13, 2025
89c3d60
Adds Warning that Actor Reminder Partition is not relevant by default…
JoshVanL Apr 13, 2025
5521405
add conversation API to allow list (#4581)
famarting Apr 13, 2025
2a93678
Added local echo conversation component (#4587)
WhitWaldo Apr 13, 2025
52f4c15
Update conversation_api.md (#4589)
siri-varma Apr 13, 2025
bb573c0
Corrected typo namepsace to namespace (#4613)
mcambal Apr 14, 2025
fcddd67
Fixed typo => "loggings" to "logging" (#4619)
WhitWaldo Apr 21, 2025
44634df
Fixed typo -> "Fleuntd" to "Fluentd" (#4618)
WhitWaldo Apr 21, 2025
3c49608
On the page covering binding inputs (triggers), the text erroneously …
WhitWaldo Apr 21, 2025
1688963
Update kubernetes-production.md (#4616)
joebowbeer Apr 22, 2025
101b026
Added .NET SDK examples to serialization document (#4596)
WhitWaldo Apr 23, 2025
a0027cb
apache ignite description on cassandra (#4630)
rochabr Apr 25, 2025
41ddb27
Updating AKS Cluster creation command (#4632)
rochabr Apr 28, 2025
58ef38f
Argo CD Integration docs (#4629)
rochabr Apr 29, 2025
bfcfaf9
Added tags example (#4635)
adam6878 Apr 29, 2025
69cc52f
v1.15- update supported release versions (#4639)
JoshVanL May 3, 2025
4e38b8c
chore: update stale bot duration to 90D (#4628)
mikeee May 3, 2025
6df81c0
Adds a new component config option for Redis PubSub (#4591)
elena-kolevska May 6, 2025
777a6c6
Update Dapr Slide deck (#4641)
marcduiker May 7, 2025
1952e91
Modified all the C# examples through the configuration document (#4638)
WhitWaldo May 7, 2025
67fc7d3
Fix broken .yml link in conversation-quickstart.md (#4642)
tommygood May 8, 2025
79f25d6
Updated to reflect a modern .NET example for retrieving secrets from …
WhitWaldo May 8, 2025
f4d95a4
Modernized .NET examples for binding inputs and outputs (#4621)
WhitWaldo May 9, 2025
61e23e0
Updated to modernize .NET examples (#4631)
WhitWaldo May 12, 2025
0815bcf
Fix for workflow mgmt api call rendering (#4652)
bibryam May 15, 2025
d476de5
Fix links to durabletask-go: point to dapr org (#4654)
bibryam May 15, 2025
c2119fd
Correcting .NET examples in the workflow docs (#4627)
WhitWaldo May 15, 2025
3b9d892
Modernized the .NET examples for interacting with state in Dapr (#4622)
WhitWaldo May 17, 2025
2172118
Update to v1.15.5 (#4656)
JoshVanL May 24, 2025
46d200e
Update subscription-schema.md (#4658)
joebowbeer May 24, 2025
4638f8f
Update PubSub Raw doc (#4659)
alicejgibbons May 24, 2025
9faf5ae
Azure Application Insights fixes (#4660)
alicejgibbons Jun 3, 2025
8f633fe
style: fix typo in word for conversation api (#4672)
sicoyle Jun 10, 2025
0cd7476
Add workflow slide deck, fix hugo version (#4677)
marcduiker Jun 17, 2025
3d42b52
Add additional behavior of failing App Health Checks - as explained b…
olitomlinson Jun 25, 2025
fa4bac1
Update workflow diagrams (#4682)
marcduiker Jun 26, 2025
36bb99a
update developing-applications folder links (#4705)
Arhell Jul 7, 2025
9ccd3f7
Update LICENSE (#4712)
yaron2 Jul 8, 2025
d3b8b7d
Update submodule refs (#4715)
msfussell Jul 9, 2025
f5cbb64
Add Dash0 to tracing-overview.md (#4713)
kaspernissen Jul 10, 2025
fe13a1a
docs: update gcp firestore docs (#4723)
nelson-parente Jul 14, 2025
2f72cfd
Fix for issue - AWS SQS binding spec - endpoint #4698 (#4718)
msfussell Jul 17, 2025
12309e3
add dapr 1.15.8 (#4730)
cicoyle Jul 18, 2025
7bc2f2c
dropped query capability from state store supported capabilities and …
olitomlinson Jul 21, 2025
632ea75
Docs for `--scheduler-override-broadcast-host-port` (#4721)
acroca Jul 22, 2025
d87104c
Add Dynatrace OpenTelemetry Collector integration guide (#4739)
MyMirelHub Aug 6, 2025
050e673
Add Azure workload identity federation guide (#4751)
atrauzzi Aug 8, 2025
4cbd3b3
Add a note on how to disable the placement service (#4744)
atrauzzi Aug 11, 2025
5346088
[1.15] add note about java 1.15 compat with dapr 1.15 (#4763)
cicoyle Aug 14, 2025
6cc0a96
Fix typo in net command (#4774)
DSpirit Aug 19, 2025
e82a4d3
Add disableEntityManagement option to azure blob binding ref doc (#4720)
ajstewart Aug 20, 2025
239dfef
Updating SDK docs (#4777)
msfussell Aug 20, 2025
baaf97c
Add dash0 tracing how-to (#4761)
kaspernissen Aug 21, 2025
6280034
Adding the Reo.Dev footer code (#4823)
frasermarlow Aug 26, 2025
7127643
Revert to commit e3efbad to remove docs specific to 1.16
marcduiker Sep 1, 2025
df0712d
Merge pull request #4848 from marcduiker/revert-dotnet-docs-ref-115
marcduiker Sep 1, 2025
d248b76
Add kapa.ai script (#4853)
marcduiker Sep 2, 2025
87fef04
Merge remote-tracking branch 'origin/v1.15' into upmerge-09-03
marcduiker Sep 3, 2025
692ee52
Fix duplicated lines
marcduiker Sep 3, 2025
c593c77
Fix yaml syntax
marcduiker Sep 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion daprdocs/content/en/concepts/dapr-services/placement.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,22 @@ updatedAt | timestamp | Timestamp of the actor registered/updated.
}
```

## Disabling the Placement service


The Placement service can be disabled with the following setting:


```
global.actors.enabled=false
```

The Placement service is not deployed with this setting in Kubernetes mode. This not only disables actor deployment, but also disables workflows, given that workflows use actors. This setting only applies in Kubernetes mode, however initializing Dapr with `--slim` excludes the Placement service from being deployed in self-hosted mode.


For more information on running Dapr on Kubernetes, visit the [Kubernetes hosting page](https://docs.dapr.io/operations/hosting/kubernetes/).


## Related links

[Learn more about the Placement API.]({{% ref placement_api %}})
[Learn more about the Placement API.]({{% ref placement_api %}})
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,6 @@ The code examples below leverage Dapr SDKs to invoke the output bindings endpoin

Here's an example of using a console app with top-level statements in .NET 6+:

Here's an example of using a console app with top-level statements in .NET 6+:

```csharp
using System.Text;
using System.Threading.Tasks;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,6 @@ Below are code examples that leverage Dapr SDKs to demonstrate an input binding.

The following example demonstrates how to configure an input binding using ASP.NET Core controllers.

The following example demonstrates how to configure an input binding using ASP.NET Core controllers.

```csharp
using System.Collections.Generic;
using System.Threading.Tasks;
Expand Down Expand Up @@ -152,6 +150,15 @@ app.MapPost("checkout", ([FromBody] int orderId) =>
});
```

The following example demonstrates how to configure the same input binding using a minimal API approach:
```csharp
app.MapPost("checkout", ([FromBody] int orderId) =>
{
Console.WriteLine($"Received Message: {orderId}");
return $"CID{orderId}"
});
```

{{% /tab %}}

{{% tab "Java" %}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Want to put the Dapr conversation API to the test? Walk through the following qu

| Quickstart/tutorial | Description |
| ------------------- | ----------- |
| [Conversation quickstart]({{% ref conversation-quickstart %}}) | Learn how to interact with Large Language Models (LLMs) using the conversation API. |
| [Conversation quickstart]({{% ref conversation-quickstart %}}) | Learn how to interact with Large Language Models (LLMs) using the conversation API. |

### Start using the conversation API directly in your app

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ Dapr apps can subscribe to raw messages from pub/sub topics, even if they weren

### Programmatically subscribe to raw events

When subscribing programmatically, add the additional metadata entry for `rawPayload` to allow the subscriber to receive a message that is not wrapped by a CloudEvent. For .NET, this metadata entry is called `rawPayload`.
When subscribing programmatically, add the additional metadata entry for `rawPayload` to allow the subscriber to receive a message that is not wrapped by a CloudEvent. For .NET, this metadata entry is called `isRawPayload`.

When using raw payloads the message is always base64 encoded with content type `application/octet-stream`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,38 +9,41 @@ aliases:
weight: 10000
---

Most Azure components for Dapr support authenticating with Microsoft Entra ID. Thanks to this:

- Administrators can leverage all the benefits of fine-tuned permissions with Azure Role-Based Access Control (RBAC).
- Applications running on Azure services such as Azure Container Apps, Azure Kubernetes Service, Azure VMs, or any other Azure platform services can leverage [Managed Identities (MI)](https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview) and [Workload Identity](https://learn.microsoft.com/azure/aks/workload-identity-overview). These offer the ability to authenticate your applications without having to manage sensitive credentials.

## About authentication with Microsoft Entra ID

Microsoft Entra ID is Azure's identity and access management (IAM) solution, which is used to authenticate and authorize users and services.
Microsoft Entra ID is Azure's identity and access management (IAM) solution, which is used to authenticate and authorize users and services. It's built on top of open standards such OAuth 2.0, which allows services (applications) to obtain access tokens to make requests to Azure services, including Azure Storage, Azure Service Bus, Azure Key Vault, Azure Cosmos DB, Azure Database for Postgres, Azure SQL, etc.

Microsoft Entra ID is built on top of open standards such OAuth 2.0, which allows services (applications) to obtain access tokens to make requests to Azure services, including Azure Storage, Azure Service Bus, Azure Key Vault, Azure Cosmos DB, Azure Database for Postgres, Azure SQL, etc.
## Options to authenticate

> In Azure terminology, an application is also called a "Service Principal".
Applications can authenticate with Microsoft Entra ID and obtain an access token to make requests to Azure services through several methods:

Some Azure components offer alternative authentication methods, such as systems based on "shared keys" or "access tokens". Although these are valid and supported by Dapr, you should authenticate your Dapr components using Microsoft Entra ID whenever possible to take advantage of many benefits, including:
- [Workload identity federation]({{< ref howto-wif.md >}}) - The recommended way to configure your Microsoft Entra ID tenant to trust an external identity provider. This includes service accounts from Kubernetes or AKS clusters. [Learn more about workload identity federation](https://learn.microsoft.com/entra/workload-id/workload-identities-overview).
- [System and user assigned managed identities]({{< ref howto-mi.md >}}) - Less granular than workload identity federation, but retains some of the benefits. [Learn more about system and user assigned managed identities](https://learn.microsoft.com/azure/aks/use-managed-identity).
- [Client ID and secret]({{ < ref howto-aad.md >}}) - Not recommended as it requires you to maintian and associate credentials at the application level.
- Pod Identities - [Deprecated approach for authenticating applications running on Kubernetes pods](https://learn.microsoft.com/azure/aks/use-azure-ad-pod-identity) at a pod level. This should no longer be used.

- [Managed Identities and Workload Identity](#managed-identities-and-workload-identity)
- [Role-Based Access Control](#role-based-access-control)
- [Auditing](#auditing)
- [(Optional) Authentication using certificates](#optional-authentication-using-certificates)
If you are just getting started, it is recommended to use workload identity federation.

## Managed identities and workload identity federation

### Managed Identities and Workload Identity
When your application is running on a supported Azure service (such as Azure VMs, Azure Container Apps, Azure Web Apps, etc), an identity for your application can be assigned at the infrastructure level.

With Managed Identities (MI), your application can authenticate with Microsoft Entra ID and obtain an access token to make requests to Azure services. When your application is running on a supported Azure service (such as Azure VMs, Azure Container Apps, Azure Web Apps, etc), an identity for your application can be assigned at the infrastructure level.
This is done through [system or user assigned managed identities]({{< ref howto-mi.md >}}), or [workload identity federation]({{< ref howto-wif.md >}}).

Once using MI, your code doesn't have to deal with credentials, which:
Once using managed identities, your code doesn't have to deal with credentials, which:

- Removes the challenge of managing credentials safely
- Allows greater separation of concerns between development and operations teams
- Reduces the number of people with access to credentials
- Simplifies operational aspects–especially when multiple environments are used

Applications running on Azure Kubernetes Service can similarly leverage [Workload Identity](https://learn.microsoft.com/azure/aks/workload-identity-overview) to automatically provide an identity to individual pods.
While some Dapr Azure components offer alternative authentication methods, such as systems based on "shared keys" or "access tokens", you should always try to authenticate your Dapr components using Microsoft Entra ID whenever possible. This offers many benefits, including:

- [Role-Based Access Control](#role-based-access-control)
- [Auditing](#auditing)
- [(Optional) Authentication using certificates](#optional-authentication-using-certificates)

It's recommended that applications running on Azure Kubernetes Service leverage [workload identity federation](https://learn.microsoft.com/entra/workload-id/workload-identity-federation) to automatically provide an identity to individual pods.

### Role-Based Access Control

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
type: docs
title: "How to: Use workload identity federation"
linkTitle: "How to: Use workload identity federation"
weight: 20000
description: "Learn how to configure Dapr to use workload identity federation on Azure."
---

This guide will help you configure your Kubernetes cluster to run Dapr with Azure workload identity federation.

## What is it?

[Workload identity federation](https://learn.microsoft.com/entra/workload-id/workload-identities-overview)
is a way for your applications to authenticate to Azure without having to store or manage credentials as part of
your releases.

By using workload identity federation, any Dapr components running on Kubernetes and AKS that target Azure can authenticate transparently
with no extra configuration.

## Guide

We'll show how to configure an Azure Key Vault resource against your AKS cluster. You can adapt this guide for different
Dapr Azure components by substituting component definitions as necessary.

For this How To, we'll use this [Dapr AKS secrets sample app](https://github.com/dapr/samples/dapr-aks-workload-identity-federation).

### Prerequisites

- AKS cluster with workload identity enabled
- Microsoft Entra ID tenant

### 1 - Enable workload identity federation

Follow [the Azure documentation for enabling workload identity federation on your AKS cluster](https://learn.microsoft.com/azure/aks/workload-identity-deploy-cluster#deploy-your-application4).

The HowTo walks through configuring your Azure Entra ID tenant to trust an identity that originates from your AKS cluster issuer.
It also guides you in setting up a [Kubernetes service account](https://kubernetes.io/docs/concepts/security/service-accounts/) which
is associated with an Azure managed identity you create.

Once completed, return here to continue with step 2.

### 2 - Add a secret to Azure Key Vault

In the Azure Key Vault you created and add a secret called `dapr` with the value of `Hello Dapr!`.

### 3 - Configure the Azure Key Vault dapr component

By this point, you should have a Kubernetes service account with a name similar to `workload-identity-sa0a1b2c`.

Apply the following to your Kubernetes cluster, remembering to update `your-key-vault` with the name of your key vault:

```yaml
---
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: demo-secret-store # Be sure not to change this, as our app will be looking for it.
spec:
type: secretstores.azure.keyvault
version: v1
metadata:
- name: vaultName
value: your-key-vault # Replace
```

You'll notice that we have not provided any details specific to authentication in the component definition. This is intentional, as Dapr is able to leverage the Kubernetes service account to transparently authenticate to Azure.

### 4 - Deploy the test application

Go to the [workload identity federation sample application](https://github.com/dapr/samples/dapr-aks-workload-identity-federation) and prepare a build of the image.

Make sure the image is pushed up to a registry that your AKS cluster has visibility and permission to pull from.

Next, create a deployment for our sample AKS secrets app container along with a Dapr sidecar.

Remember to update `dapr-wif-k8s-service-account` with your service account name and `dapraksworkloadidentityfederation` with an image your cluster can resolve:


```yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: aks-dapr-wif-secrets
labels:
app: aks-dapr-wif-secrets
spec:
replicas: 1
selector:
matchLabels:
app: aks-dapr-wif-secrets
template:
metadata:
labels:
app: aks-dapr-wif-secrets
azure.workload.identity/use: "true" # Important
annotations:
dapr.io/enabled: "true" # Enable Dapr
dapr.io/app-id: "aks-dapr-wif-secrets"
spec:
serviceAccountName: dapr-wif-k8s-service-account # Remember to replace
containers:
- name: workload-id-demo
image: dapraksworkloadidentityfederation # Remember to replace
imagePullPolicy: Always
```
Once the application is up and running, it should output the following:

```
Fetched Secret: Hello dapr!
```
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ Content-Length: 12
client.saveState("MyStateStore", "MyKey", "My Message").block();
```

In this example, `My Message` is saved. It is not quoted because Dapr's API internally parse the JSON request object before saving it.

{{% /tab %}}

{{< /tabpane >}}
Expand All @@ -100,9 +102,7 @@ serving it.
await client.PublishEventAsync("MyPubSubName", "TopicName", "My Message");
```

The event is published and the content is serialized to `byte[]` and sent to Dapr sidecar. The subscriber receives it
as a [CloudEvent](https://github.com/cloudevents/spec). Cloud event defines `data` as string. The Dapr SDK also provides a built-in deserializer
for the `CloudEvent` object.
The event is published and the content is serialized to `byte[]` and sent to Dapr sidecar. The subscriber receives it as a [CloudEvent](https://github.com/cloudevents/spec). Cloud event defines `data` as string. The Dapr SDK also provides a built-in deserializer for the `CloudEvent` object.

```csharp
public async Task<IActionResult> HandleMessage(string message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ description: "Define secret scopes by augmenting the existing configuration reso
description: "Define secret scopes by augmenting the existing configuration resource with restrictive permissions."
---

In addition to [scoping which applications can access a given component]({{% ref "component-scopes.md"%}}), you can also scope a named secret store component to one or more secrets for an application. By defining `allowedSecrets` and/or `deniedSecrets` lists, you restrict applications to access only specific secrets.
In addition to [scoping which applications can access a given component]({{% ref "component-scopes.md"%}}), you can also scope a named secret store component to one or more secrets for an application. By defining `allowedSecrets` and/or `deniedSecrets` lists, you restrict applications to access only specific secrets.

For more information about configuring a Configuration resource:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,14 @@ kubectl delete pvc -n dapr-system dapr-scheduler-data-dir-dapr-scheduler-server-
Persistent Volume Claims are not deleted automatically with an [uninstall]({{< ref dapr-uninstall.md >}}). This is a deliberate safety measure to prevent accidental data loss.
{{% /alert %}}

{{% alert title="Note" color="primary" %}}
For storage providers that do NOT support dynamic volume expansion: If Dapr has ever been installed on the cluster before, the Scheduler's Persistent Volume Claims must be manually uninstalled in order for new ones with increased storage size to be created.
```bash
kubectl delete pvc -n dapr-system dapr-scheduler-data-dir-dapr-scheduler-server-0 dapr-scheduler-data-dir-dapr-scheduler-server-1 dapr-scheduler-data-dir-dapr-scheduler-server-2
```
Persistent Volume Claims are not deleted automatically with an [uninstall]({{< ref dapr-uninstall.md >}}). This is a deliberate safety measure to prevent accidental data loss.
{{% /alert %}}

#### Increase existing Scheduler Storage Size

{{% alert title="Warning" color="warning" %}}
Expand Down
Loading
Loading