Dapr v1.11 is now available
We’re happy to announce the release of Dapr 1.11.0! 🚀 🎉 🎈
We would like to extend our thanks to all the new and existing contributors who helped make this release happen.
If you’re new to Dapr, visit the getting started page and familiarize yourself with Dapr.
Docs have been updated with all the new features and changes of this release. To get started with new capabilities introduced in this release, go to the Concepts and the Developing applications pages.
Note: This release contains a few breaking changes.
See the upgrading section for instructions on upgrading Dapr to version 1.11.
Upgrading from previous versions
If upgrading to v1.11.0 with the Dapr CLI, make sure you’re using the latest v1.11.0 version of the CLI. Older versions of the CLI cannot upgrade to the v1.11.0 runtime version.
Acknowledgements
Thanks to everyone who made this release possible!
@AaronCrawfis, @abhi314e, @abossard, @AdamKorcz, @addjuarez, @alicejgibbons, @artursouza, @ASHIQUEMD, @berndverst, @binnn6, @bruth, @cciobanu98, @cgillum, @champel, @cmoulliard, @codefromthecrypt, @DeepanshuA, @dmutterSF, @drewby, @ehalsey, @fernandosmither, @filintod, @Flern, @gaofeihang, @greenie-msft, @handlerww, @hhunter-ms, @HiltonGiesenow, @hunter007, @iamnicoj, @ItalyPaleAle, @jackycsl, @JaimeStill, @JaydipGabani, @jjcollinge, @JoshVanL, @Juneezee, @k0da, @KarlisAG, @kayayarai, @kubemq, @kushalnl7, @LaurenceLiZhixin, @leepa, @letmerecall, @liu-song, @louisquach, @macel94, @MatejNedic, @matzew, @mcandeia, @mdarii, @MregXN, @msfussell, @mukundansundar, @naah69, @NickLarsenNZ, @nponraj, @nyemade-uversky, @obenarchid, @owainow, @owenchenxy, @ParrySMS, @paulyuk, @philliphoff, @pimmerks, @pravinpushkar, @riverar, @robertojrojas, @rosdi, @RyanLettieri, @ryou90, @sab-codes, @salmankhan-prs, @sarsharma, @serpentfabric, @shivamkm07, @shivanisinghnitp, @shubham1172, @sicoyle, @SoTrx, @SpikeWong, @stuartleeks, @sunzhaochang, @Taction, @taenyang, @tanopanta, @tharun634, @thombrn, @ThorstenHans, @tianyax, @timcallaghan, @tmacam, @tomkerkhove,@tottoto, @Vishal07051999, @wolvever, @worming004, @wralith, @XavierGeerinck, @xclayl, @yaron2, @yash-nisar, @ZhangSetSail
Highlights
These are the v1.11 release highlights:
Configuration API is now v1 stable
- The configuration building block is now a v1 stable API including the APIs in all SDKs. Read more on the Configuration API reference docs. Stable APIs are non-breaking in future versions and change go through versioning. Read more on versioning
Service Invocation can now call non-Dapr endpoints (preview feature)
- This release extended service invocation to be able to call non-Dapr endpoints. For example:
- You may choose to only use Dapr in part of your overall application, including brownfield development.
- You may not have access to the code to migrate an existing application to use Dapr.
- You want Dapr features like resiliency policies and observability applied to non-Dapr service calls.
- You need to call an external HTTP service.
- For more information read How-To: Invoke Non-Dapr Endpoints using HTTP
Dapr Workflow updates (preview feature)
- Workflow had several updates including
- You now have the ability to pause, restart and purge workflows in the management API.
- You can now have a workflow wait on an external event for example a person responding to a request.
- The Python SDK now supports Dapr Workflow along with the .NET SDK.
- Note In this release there have been breaking changes to the Workflow APIs. For example workflow
instanceID
is now supplied as a query parameter when starting a workflow You can read more on the workflow APIs here
Cryptography building block (preview feature)
- A new alpha cryptography building block has been introduced to enable the enryption and decryption of data using key information.
With the cryptography building block, you can leverage cryptography in a safe and consistent way.
Dapr exposes APIs that allows you to perform operations, such as encrypting and decrypting messages, within the Dapr sidecar, without exposing cryptographic keys to your application. - There are also alpha cryptography components that you can use with the building block.
- Try out the cryptography quickstart to see this in action.
Choice of Dapr sidecar build variations: all components or stable components only
- From this release there are two built versions of dapr available
- The default image contains all components which is the same as has been done for all release to date.
- A new variation containing only stable components, using the
stablecomponents
tag.
Dapr dashboard no longer installed with control plane
-
The Dapr dashboard is no longer installed by default with the Dapr control plane when installing via Helm. To install the dashboard, use the new
dapr-dashboard
chart:helm repo add dapr https://dapr.github.io/helm-charts/ helm repo update kubectl create namespace dapr-system helm install dapr dapr/dapr-dashboard --namespace dapr-system
-
When using
dapr init
ordapr init -k
with Dapr CLI, the Dapr Dashboard is still installed. On Kubernetes, it will automatically use the newdapr-dashboard
Helm chart.
Windows Server 2022 container images
Dapr 1.11 offers container images for Windows Server 2022, using the windows-ltsc2022
tag. This is in addition to the images based on Windows Server 1809.
App channel supports HTTP/2 and HTTP/2 Cleartext
In Dapr 1.11, the CLI flag --app-protocol
can now assume 3 more values in addition to http
and grpc
:
-
https
andgrpcs
use HTTP and gRPC, respectively, but enable TLS.Note: With Dapr 1.11, using
--app-protocol=https
and--app-protocol=grpcs
is preferred to the previous option of setting--app-ssl=true
(which is still supported but considered deprecated). -
h2c
is a new value that configures Dapr to connect to your app using HTTP/2 Cleartext.
Using HTTP/2 (including HTTP/2 Cleartext) can offer noticeable performance benefits when Dapr communicates with your app. It requires your app to expose a HTTP/2-capable server.
Multi-app run improved output
- You can now write app logs to the console as well as to a local log file with multi-app run command
dapr run -f .
Actor State TTL (preview)
A new preview feature enables a TTL on actor state which enables you to have the state automatically removed after a certain time
Metrics
- Metrics for actor reminders and timers are now reported
- Metrics for resiliency policies are now reported
Preview Features now stable
The following features are now stable, having been in preview for at least 2 releases.
- App Health Checks is now stable, changing the default HTTP healthcheck path to
/healthz
6217
Component updates
New Components
There are now over 100+ components in Dapr (115 in total). New components added in this release:
- Bindings:
- State stores:
- Cryptography:
Azure components authentication improvements
Starting with Dapr 1.11, support for authenticating with Azure AD has been added to these components:
Additionally, all Azure components that support Azure AD now support authentication using:
- Azure AD Workload Identity on Kubernetes
- Credentials from the Azure CLI, useful for local development and testing
Support for TTLs has been added to the following state stores
- Azure CosmosDB
- CockroachDB
- MongoDB
- MySQL and MariaDB
- SQL Server (Azure SQL)
Component stabilization
This release focused on preparing more components for beta
and stable
designation. This means certification tests are added and quality issues are addressed. Read component certification lifecycle for details.
The following components are now stable
- Bindings:
- Middlewares:
- PubSub:
- State stores:
- Configuration stores:
Removed Components
The following components that were deprecated in a previous version of Dapr have been removed from Dapr 1.11:
- Bindings:
- PubSub:
- Hazelcast
SDK Improvements
Java SDK
- FIXED DaprGrpcClient making blocking calls. 787
.Net SDK
- ADDED Support for suspending, resuming, and raising events to workflows 1052
Python SDK
- ADDED Support for Dapr Workflow management 542
- ADDED New Dapr Workflow authoring SDK
dapr-ext-workflow
559
Javascript SDK
- ADDED Support for cryptography APIs 491
- ADDED Support for Dapr Workflow management 485
- ADDED Support for Distributed Lock API on HTTP 478
Go SDK
- ADDED Support for cryptography APIs 387
CLI
Multi-app run can now write to multiple outputs including the console
- You can now write log to the console as well as to a local log file with multi-app run command
Set Dapr to talk to non-localhost addresses
- By setting the
--app-channel-address
flag, you can instruct Dapr to send all events to the configured address
Support multiple resource paths
- You can now provide multiple resource paths. Example:
dapr run --resources-path ./mycomponents --resources-path ./mysubscriptions
Quickstarts Improvements
New Quickstarts
The following new Quickstarts have been added
- Configuration (Go)
- Actors quickstart (C#)
- Workflow quickstart (Python)
- Cryptography quickstarts (Go and JavaScript)
Updates
- All quickstarts snap to the latest SDKs
- Numerous quality improvements and fixes
Next Steps
If you’re new to Dapr, visit the getting started page and familiarize yourself with Dapr.
Docs have been updated with all the new features and changes of this release. To get started with new capabilities introduced in this release, go to the Concepts and the Developing applications.
Note: This release contains a few breaking changes.
See this section on upgrading Dapr to version 1.11.0.
New in this release
Dapr Runtime
- ADDED Multiple build variations of Dapr sidecar:
stablecomponents
andallcomponents
3168 6465 - ADDED Kubernetes labels
dapr.io/sidecar-injected
anddapr.io/app-id
when Dapr sidecar is injected 4366 6275 - ADDED Extend Service invocation to non-Dapr endpoints 4549
- UPDATED Dapr Dashboard has been moved from
dapr
Helm chart to a newdapr-dashboard
chart 4724 - FIXED Distinguish between retrialable and non-retriable errors when publishing messages with pubsub 5136
- UPDATED Make Configuration API stable 5522
- FIXED Dapr Operator uses lots of memory when there are lots of pods that aren’t Dapr-enabled 5693
- ADDED Accept traceparent for incoming CloudEvent 5757
- ADDED Ingress template for the dashboard helm chart 5778
- UPDATED Use ERR_OUTBOUND_HEALTH_NOT_READY for Dapr’s outbound health error 5813
- ADDED Option to Operator to disable the reconciler for Services 5896
- ADDED Dynamic allowed service accounts watcher for injector 5898
- ADDED Dynamic watch for serviceaccount UIDs so injector can inject sidecar created by a synced serviceaccount from a virtual cluster 5906
- ADDED Support for multiple
--resources-path
flags on daprd 5909 - ADDED When the port for the internal gRPC server is unset, return a “stable” value for better local developer experience 5914
- ADDED Support for
seccompProfile
in Dapr sidecar via injector 5916 - ADDED Option to skip installing the Dapr Sidecar Injector with Helm charts 5926
- FIXED Sentry to preserve original secret metadata 5930
- ADDED Pluggable components injector 5935
- UPDATED Granularity on resiliency metrics 5939
- FIXED Reduced memory consumption in Dapr Operator cache 5944
- FIXED Allow trace header propagation without trace exporting 5967
- ADDED API denylist to Dapr config, complementing API allowlist 5977
- ADDED Publishing Docker images based on Windows 2022 5999
- ADDED Support for multiple workflow apps in a single cluster 6013
- FIXED Create/delete reminder throwing “possible etag mismatch” after enabling resiliency 6018
- FIXED Dapr returns 200 response instead of 302 for application redirect (version 1.10.2) 6028
- ADDED Support Min TLS Version via Configuration 6031
- ADDED Metrics for Actor reminder and timer 6032
- ADDED Support for Argo Rollouts Controller 6034
- FIXED Panic when subscriber listen message in Redis 6036
- ADDED New workflow APIs:
- UPDATED Enforce minimum TLS version 1.2 for communication between internal Dapr services and sidecars 6069 6077 6094
- UPDATED Enforce minimum TLS version to 1.2 for HTTP and gRPC app channels 6078
- FIXED Bulk pubsub subscriber panics when tracing is disabled 6099
- FIXED Service invocation not forwarding multiple headers with same name from response 6104
- ADDED Ability to configure TTL in Actor State Store operations as a preview feature 6125 6400
- FIXED Alicloud tablestore is not registered in daprd 6138
- FIXED: Health checks do not work when using HTTPS for app channel 6141
- FIXED Workflows: actor ID should not use the
#
character (Workflows not working with Cosmos DB) 6156 6294 - FIXED Fixed: deleting a reminder should be a no-op when the reminder doesn’t exist 6161 6387
- ADDED Option to disable Dapr Placement service 6173
- ADDED Allow setting OTEL endpoint with the
OTEL_EXPORTER_OTLP_ENDPOINT
env var 6176 - ADDED Allow overriding app channel address 6177
- ADDED High-level crypto APIs for gRPC and HTTP 6197
- ADDED
https
andh2c
toapp-protocol
for better HTTP/2 support, and deprecateapp-ssl
6205 - ADDED Case-insensitive parsing of metadata properties
actorStateStore
andkeyPrefix
6206 - ADDED Azure Key Vault component for Crypto building block 6215
- UPDATED App Health Checks are stable (and change the default HTTP healthcheck path to
/healthz
) 6217 - FIXED Panic in bulk publish while unmarshalling incorrect cloudevent 6234
- FIXED HTTP Channel: Add “Content-Type” header only if not empty 6236
- FIXED Unsubscribe config api: response with incorrect subscriptionID 6272
- FIXED Connection leak problem of app callback gRPC client 6274
- FIXED Implement nil-check for CEL program in matchRoutingRule 6280
- ADDED App channel address is now configurable 6281
- ADDED
dapr_http_server_response_count
metric 6312 - FIXED Panic while decrypting empty value from state stores 6321
- FIXED State store: make BulkSet/BulkDelete not transactional in all state stores 6342
- ADDED
dapr-http-max-request-size
now applies to gRPC proxying too 6349 6353 - ADDED
reinvocationPolicy: IfNeeded
to Dapr Sidecar injector 6350 - FIXED Bulk pubsub subscriber panics when tracing is disabled 6360
- ADDED Namespace to Helm chart resources 6375
- FIXED RBAC permissions for operator-admin 6408
- FIXED Bulk subscription - sidecar crashes after first batch is delivered 6414
- FIXED Decoding slash in url 6418
- FIXED Bulk subscribe response when app replies back with some incorrect message 6420
Dapr CLI
- ADDED Add root
name
property to run file 1204 - UPDATED Log message to reflect the container runtime 1209
- ADDED
DAPR_CONTAINER_RUNTIME
env in addition to--container-runtime
arg. 1210 - ADDED Support for multiple
--resources-path
flags 1216 - UPDATED Send merged STDOUT to console on
dapr run -f
1238 - ADDED Option to initialise Dapr cluster with custom certificates 1239
- FIXED Enabling App Health Checks causes unexpected behaviour in dapr list 1241
- FIXED
~
does not resolve to home folder inin dapr run -f
1245 - ADDED Initialize Dapr dashboard from separate helm chart 1266
- ADDED Add new protocols to
app-protocol
, including HTTP/2 Cleartext, and deprecateapp-ssl
1267 - FIXED Wrong target HTTP Unix Domain Socket 1271
- ADDED Allow app channel address to be passed via CLI 1281
- ADDED Add
httpendpoint
resource ondapr init -k
1285
Components
- Bindings:
- State stores:
- All state stores:
- AWS DynamoDB:
- Azure Cosmos DB:
- Add support for merge partitions 2824
- CockroachDB:
- Added support for TTLs 2618
- MongoDB:
- MySQL:
- Oracle database:
- Component is now beta, including many fixes 2702
- Redis:
- Fixed handling of JSON in Multi 2734
- RethinkDB:
- Disable (undocumented) transaction support that was not working correctly 2733
- SQL Server (Azure SQL):
- SQLite:
- PubSub:
- Apache Pulsar
- Azure Service Bus components:
- Allow configuring message headers 2745
- JetStream:
- RabbitMQ:
- RocketMQ:
- Middlewares:
- Nameresolvers:
- Consul:
- Consul nameresolver has been improved for performance and stability 2594
- Consul:
- Secret stores:
- All Azure components now support Azure AD Workload Identity 1567 2655
- All Azure components can now authenticate using Azure AD with credentials from the Azure CLI, for local development 2469
.NET SDK
- UPDATED DurableTask SDK dependency to get ARM64 compatibility 1024
- UPDATED Improvements to Dapr Client APIs for Workflow 1027
- ADDED .NET Runtime Support Policy 1046
- ADDED Support for suspending, resuming, and raising events to workflows 1052
- UPDATED Rename
WorkflowEngineClient
toDaprWorkflowClient
and added additional APIs. 1053 - UPDATED Config API to stable 1077
- ADDED Workflow Sample to Pause/Resume and Raise Event as part of workflow 1079
- FIXED Incorrect TaskFailedException is used when exceptions are thrown from workflow activities 1081
- ADDED Proper workflow retry support 1090
- REMOVED Obsolete attribute from config API classes 1098
- ADDED Workflow demo to how to 1099
Go SDK
- FIXED Create new client error 341
- CHANGED Switched router from gorilla/mux to chi 357
- ADDED gRPC options on gRPC server 366
- ADDED Support to set own gRPC server when calling
NewService
400 - ADDED Support for app to use HTTP protocol with customized headers 404
- UPDATED Update Configuration API Subscribe method 388
- UPDATED Update client’s configuration methods with stable config api 392
- ADDED Support for cryptography APIs (alpha) 387
Java SDK
- FIXED DaprGrpcClient making blocking calls. 787
- ADDED PubSub subscriber examples over gPRC 833
- UPDATED Config API to use stable endpoints. 846
Python SDK
- ADDED Async support for Python SDK (
dapr.aio.clients.DaprClient
) 90 - ADDED Support for Dapr Workflow management 542
- ADDED New Dapr Workflow authoring SDK
dapr-ext-workflow
559 - CHANGED Configuration API now stable and implementation uses stable APIs 556
- FIXED RecursionError in conf settings class when accessing unimplemented settings 539
JavaScript SDK
- ADDED HTTP support for Distributed Locking 414
- FIXED State query returns empty string instead of StateQueryResponseType 460
- ADDED Support for optional attributes in state management 475
- DEPRECATED
createHTTPMetadataQueryParam
in favor ofcreateHTTPQueryParam
479 - ADDED Support for Workflow management APIs 485
- FIXED Delete operation in actor state provider to use the correct operation 486
- ADDED Support for cryptography APIs (alpha) 491
- ADDED Dev package release pipeline for JavaScript SDK 492
- UPDATED Configuration API to use stable endpoint 496
Upgrading to Dapr 1.11.0
To upgrade to this release of Dapr, follow the steps here to ensure a smooth upgrade. You know, the one where you don’t get red errors on the terminal.. we all hate that, right?
Local Machine / Self-hosted
Uninstall Dapr using the CLI you currently have installed. Note that 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:
dapr uninstall --all
If you don’t have the Dapr CLI installed, follow these instructions to install the CLI.
Once you have installed the CLI, run:
dapr init
Wait for the update to finish, ensure you are using the latest version of Dapr(1.11.0) with:
$ dapr --version
CLI version: 1.11.0
Runtime version: 1.11.0
Kubernetes
Upgrading from previous version
You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.
Upgrade using the CLI
To upgrade Dapr, run:
dapr upgrade -k --runtime-version 1.11.0
To upgrade with high availability mode:
dapr upgrade -k --runtime-version 1.11.0 --enable-ha=true
Wait until the operation is finished and check your status with dapr status -k
.
All done!
Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar
Upgrade using Helm
To upgrade Dapr using Helm, run:
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
helm upgrade dapr dapr/dapr --version 1.11.0 --namespace=dapr-system --wait
Wait until the operation is finished and check your status with dapr status -k
.
All done!
Note: Make sure your deployments are restarted to pick the latest version of the Dapr sidecar
Starting a fresh install on a cluster
Please see how to deploy Dapr on a Kubernetes cluster for a complete guide to installing Dapr on Kubernetes
You can use Helm 3 to install Dapr:
helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update
kubectl create namespace dapr-system
helm install dapr dapr/dapr --version 1.11.0 --namespace dapr-system --wait
Post installation
Verify the control plane pods are running and are healthy:
$ dapr status -k
NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED
dapr-sidecar-injector dapr-system True Running 1 1.11 15s 2023-06-02 13:07.39
dapr-sentry dapr-system True Running 1 1.11 15s 2023-06-02 13:07.39
dapr-operator dapr-system True Running 1 1.11 15s 2023-06-02 13:07.39
dapr-placement dapr-system True Running 1 1.11 15s 2023-06-02 13:07.39
After Dapr 1.11 has been installed, perform a rolling restart for your deployments to pick up the new version of the sidecar. This can be done with:
kubectl rollout restart deploy/<deployment-name>
Breaking Changes
Dapr Runtime
- When communicating with apps using HTTPS or gRPC with TLS, Dapr now enforces the use of TLS 1.2 or higher. This behavior can be disabled temporarily using a Configuration option. 6078 6031
- The default path for HTTP app health checks has been changed to
/healthz
. The old path/health
can still be used if configured explicitly. 6225 - Dapr’s Helm chart does not include the Dapr Dashboard anymore 4724
- Workflows:
Components
The following components have been removed from Dapr 1.11 (2597):
- Twitter binding
- Hazelcast PubSub component
Go SDK
- UPDATED Update Configuration API Subscribe method 388
- UPDATED Update client’s configuration methods with stable config api 392
Java SDK
- UPDATED Bump from reactor 2.3.5.RELEASE to 2.7.8 830
- UPDATED Convert Config API to Stable endpoints. 846
.Net SDK
- UPDATED Rename
WorkflowEngineClient
toDaprWorkflowClient
and added additional APIs. 1053
Deprecation Notices
- The CLI flag
--app-ssl
(in both the Dapr CLI and daprd) has been deprecated in favor of using--app-protocol
with valueshttps
orgrpcs
. daprd:6158 cli:1267 - The Windows Server 1809 images have been deprecated in favor of Windows Server 2022 images dapr:5999