Project: Dapr (App Definition and Development / Application Definition & Image Build)
File: v1.8.0.md

We're happy to announce the release of Dapr 1.8.0! We would like to extend our thanks to all the new and existing contributors who helped make this release happen. Thanks to everyone who made this release possible! @1046102779, @AaronCrawfis, @aditirao7, @akhilac1, @akkie, @amimimor, @amulyavarote, @arahja, @Arashrohani, @artursouza, @beiwei30, @ben-kotvis, @BenLocal, @berndverst, @bibryam, @CacheCoww, @ChenCong0207, @CrazyHZM, @daixiang0, @davidfowl, @DeepanshuA, @dntbeSris, @duglin, @espinm2, @ewassef, @fabistb, @famarting, @fanfanbj, @greenie-msft, @halspang, @harrykimpel, @hhunter-ms, @hueifeng, @inirudebwoy, @ItalyPaleAle, @jack1142, @jackliusr, @JadynWong, @jasonlica, @jigargandhi, @jjcollinge, @johnewart, @Joshswooft, @Juneezee, @karpikpl, @LaurenceLiZhixin, @lotuc, @maltegoetz, @marcinjahn, @mattmazzola, @moreyhat, @msfussell, @mukundansundar, @noahziheng, @nyemade-uversky, @patrickhuber, @paulyuk, @pigletfly, @pkedy, @pravinpushkar, @psychomelet, @rzyns, @saber-wang, @safanaj, @sarsharma, @seeflood, @shiling02404, @Shoothzj, @shubham1172, @sjwaight, @skyao, @slapointe, @stulzq, @subash89, @sunzhaochang, @suraciii, @surenderssm, @Taction, @tanvigour, @theonefx, @thielepaul, @ThorstenHans, @tlawrie, @wonderflow, @wujunwei, @wwbweibo, @XavierGeerinck, @yaron2, @zcong1993, @zhenlei520, @zhi-gang-sun There are times when applications might not be able to handle messages for a variety of reasons. For example, there could be transient issues retrieving data needed to process a message or the app business logic fails returning an error. are used to forward messages that cannot be delivered to a subscribing app. Distributed locks provide mutually exclusive access to shared resources from an application. In this release a new alpha API has been introduced to enable to you to take mutually exclusive locks on a shared resource. Read the . You can now write Dapr middleware components using external WASM modules and extend Dapr with non-Go languages. Read more about . Continuing the v1.7 release resilency policy features. Dapr provides default retries for certain request failures and transient errors. In this release, there is now the option to override default retries with custom retry logic by defining resiliency policies with reserved, named keywords in a resiliency spec. Read more about . When resiliency policies are now loaded you will see which ones are loaded when the Dapr sidecar starts as information logs. Turning on debug logs enables you to see the resiliency policies firing with details on how often and the targets. When sharing state between applications, namespaces can now be used to separate state. This allows apps in different namespace with the same `appid` to reuse the same state store. Read more about . The metadata API can now be that that sidecar has loaded, in particular pub/suba and state stores. The Dapr sidecar can now support for both Linux and Windows containers. This allows for use cases like using a self-signed certificate Configuring an outbound proxy like Squid with client certificate authentication New include: Annotation and arguments to set or "turn-off" and configure the actor `Placement` service host addresses Annotation and arguments to disable the built-in Kubernetes secret store. Annotation to container in read-write or read-only mode. You can now inject Dapr sidecars from without needing to configure any special RBAC

The to ensure the Dapr sidecar is present in pods, especially important during application or cluster failures to provide a greater level of resiliency. Read for more details. When deploying Dapr, whether on Kubernetes or in Docker self-hosted, the default container images that are pulled are based on . Now you can use images based on , officially known as CBL-Mariner, a free and open-source Linux distribution and container base image maintained by Microsoft. Read Also see New Arguments and Annotations above This release focused on preparing more components for `beta` and `stable` designation. This means certification tests are added and quality issues are addressed. Read for details. The following components are now officially designated `beta` status, several of which are `stable candidates` ready to become `stable` soon in a future release: Azure Table Storage State Store (stable candidate) Azure Event Hubs Binding (stable candidate) Azure Storage Queues Binding (stable candidate) Postgresql State Store (stable candidate) Azure Event Hubs Pubsub (stable candidate) There are now over 100+ components in Dapr (105 in total). New components added in this release: added in the v1.6 release, is now documented. Apache Dubbo Binding used for development The following features are now stable, having been in preview for at least 2 releases. Python Support for for the Configuration API Support for Support for TTL and time/interval formats in actor timers & reminders Java Add pubsub routing .NET Support for for the Configuration API Support for Support for JavaScript The JavaScript SDK is now available at . The older package is on a . Support for Support for Support for Support for Added the CLI command for adding Dapr annotations to deployed Kubernetes configurations. `dapr init` and `dapr upgrade` in k8s mode can now use GHCR and private registry to pull images. Documented the command. If you're new to Dapr, visit the 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 and the . Note: This release contains a few . See section on upgrading Dapr to version 1.8.0. ADDED PubSub's DeadLetter Topic ADDED Add kubernetes annotation to enable/disable placement component in daprd CHANGED Actor Reminder Partition No Longer Preview Feature ADDED RocketMQ component with fix for increased goroutine Count ADDED New "watchdog" capability in the Dapr operator to ensure the Dapr sidecar is present in pods ADDED Enhance dapr_rbac ClusterRole for more restricted Kubernetes RBAC Environments ADDED Enable StatefulSets for PubSub subscribers ADDED Allow sidecar to run in pods with `automountServiceAccountToken: false` FIXED Improve the error message for when a state store has not been set for actor usage and actors are used ADDED Speedup placement hosts update ADDED Metadata API to provide information on sidecar capabilities FIXED bugfix/diagnostics: service monitoring metrics ADDED feature: add middle/http routerchecker FIXED Intermittent i/o timeout error in Dapr sidecar. FIXED Bug in daprd startup

ADDED Allow setting certificate's filenames/secret keys through command line flags ADDED Provide a Default Policy for Built-In Retries via Resiliency FIXED Wait for specified grace period before cleaning actors and closing the API servers FIXED Resiliency: Fixed endpointPolicy get circuitBreakers template, add missing ok for map get FIXED Fix actor client not requires state store. ADDED Add rest API for configuration store. FIXED Fixes a bug that incorrectly allowed the Dapr API HTTP Port to be reused is the app port. FIXED Concurrent streaming requests fail with dapr grpc proxy FIXED bugfix: operator update service CHANGED Dapr is now built with Go 1.18 FIXED odd grammar on error message ADDED Support for installing certificates to the Dapr sidecar container ADDED Improve the logs for resiliency policies ADDED Utilize correct context in resilient calls ADDED Enable flag to enable/disable kubernetes builtin secret store ADDED ci: one-line command for local development FIXED PubSub components do not deliver new messages during the shutdown grace period ADDED Declarative pub/sub subscriptions are picked from stand alone components even if they are not in a .yaml file ADDED VolumeMounts support for Side Car Daprd ADDED Publish a new variant of Dapr container images based on Mariner "distroless" with the `-mariner` tag ADDED Option to prefix state key with namespace ADDED Dapr integration with Agones FIXED Daprd crashed for race condition of grpc connection pool FIXED Adding alicloud.dubbo component caused spike in total cpu usage in longhaul CHANGED optimize/crds: change level from error to warn FIXED Improved the reliability of the Sidecar Injector and Operator services' startup and shutdown sequences CHANGED Actor type metadata as stable feature CHANGED Enable Pub/Sub routing as stable FIXED Actor actor instance missing error during scaling issue FIXED fix metadata get http api ADDED `dapr version` command with JSON output format ADDED `dapr annotate` CLI command for adding dapr annotations to Kubernetes

FIXED CLI upgrade command panics on edge versions ADDED Add timeout to HTTP call in `downloadFile` method ADDED Supporting Dapr GHCR/private registry for `dapr init` in Kubernetes mode FIXED Fixed configuration file initialization bug in `dapr init --from-file` CHANGED Changed certificate generation logic to mimic `dapr` runtime FIXED `--dapr-http-read-buffer-size` not passed properly in CLI ADDED Certification tests for Azure Table Storage in state store ADDED Certification tests for Azure Event Hubs binding FIXED When Consul is used as a name resolution component, the same appid cannot achieve load balancing, and the dapr started later will overwrite the previous dapr ADDED Certification tests for Azure Events Hub in pubsub CHANGED New Azure Service Bus Queues binding based on updated SDK CHANGED New Azure Service Bus pubsub based on updated SDK ADDED Certification tests for Redis CHANGED Simplify vault token read FIXED Fixes an issue including multiple headers with spaces ADDED New state store component for the Huawei DCS ADDED parallel concurrencty for SQS component ADDED output binding for commercetools FIXED Pulsar namespace setting is invalid ADDED Add Nats Streaming Parallel Concurrency Mode ADDED Add metadata property to configure BatchingMaxSize in Pulsar ADDED Add topic metadata for mqtt input binding and support user defined topic for mqtt output binding ADDED Support custom queueEndpoint in Azure Storage Queues FIXED Ignore Subscribe/Get wrong redis configuration type keys. CHANGED Using Go 1.18 for building codebase ADDED Support for MongoDB Atlas connection strings in MongoDB component ADDED Add metadata property to configure Batching in Pulsar ADDED secret store based on Huawei CSMS ADDED new bindings component for the Huawei OBS ADDED new bindings component for Huawei OBS ADDED Certification tests for Azure Storage Queue binding FIXED Fix: MQTT route messages to the correct publisher ADDED middleware: basic WASM support CHANGED Better handling of concurrency in MQTT Subscribe method ADDED support for names in the SendGrid To and From fields. ADDED FIXED Fixes for SNS/SQS PubSub FIXED Fixed Kafka PubSub to allow multiple handlers for different topics ADDED NATS Streaming: Add parallel processing, fix retry bug ADDED Rabbitmq publisher confirm ADDED Apache dubbo output binding ADDED Components capabilities: adding query api to the feature list ADDED Certification test + connection idle time for Postgresql ADDED Add file upload to s3 binding CHANGED Zeebe updated to Camunda Platform 8 ADDED Azure Table Storage State Store: Suppport for Active Directory Authentication and support for CosmosDB Table API FIXED consumer rebalance failed in kakfa binding component CHANGED add id when registering services to consul CHANGED pubsub.mqtt: default value for 'qos' is now '1', and default value for 'cleanSession' to 'false' FIXED Unmarshalling in Azure Service Bus Binding ADDED When publishing a message allow setting Cloudevent attributes / Pub-Sub routing ADDED Support for Configuration Subscribe API FIXED App API Token support ADDED FOSSA Scan to Build Actions ADDED Support for Per Actor Type Configuration ADDED Enable raw metadata for Pub/Sub with .WithTopic<> Extension. FIXED Move AddDaprClient in

from AddSingleton to TryAddSingleton ADDED Subscription supports adding custom metadata ADDED Support for Distributed Lock API FIXED fix(typo): client configuration subscribe FIXED chore(client): update func definition to be clearer FIXED fix/typo: modify state annotation ADDED Added pubsub routing support CHANGED Replace Hashicorp Vault with local file in Secret Store example ADDED support for TTL and time/interval formats in actor timers & reminders ADDED option to disable Pubsub topic validation ADDED support for per Actor Type Configuration FIXED `DaprInvocationHttpClient` should correctly populate headers in InvokeMethodResponse FIXED `invoke_binding` call shouldn't require the data parameter ADDED Support for Unsubscribe Configuration ADDED support for Dapr FastAPI SDK Router Tags in generated OpenAPI docs CHANGED Update actor documentation and examples ADDED Configuration API support ADDED Actors Reminder/Timer TTL support CHANGED Update documentation for dapr client and server ADDED State Management Query API documentation FIXED Validate changes in the syntax of query JSON for state store query API FIXED Fix e2e test pipeline to not fail silently FIXED Fix actors e2e test ADDED Support for configuring the SDK logger ADDED gRPC proxy support CHANGED Publish SDK to new package @dapr/dapr CHANGED Overhaul README CHANGED Deprecate dapr-client NPM package in favor of @dapr/dapr FIXED Stop sending empty body from HTTP Client invoker ADDED Documentation on how to use and customize logger FIXED Do not change buffer data type to JSON in gRPC messages 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? Uninstall Dapr using the CLI you currently have installed. Note that this will remove the default $HOME/.dapr directory, binaries and all containers daprredis, daprplacement and dapr_zipkin. Linux users need to run sudo if docker command needs sudo: ```bash dapr uninstall --all ``` For RC releases like this, download the latest and greatest release from and put the `dapr` binary in your PATH. Once you have installed the CLI, run: ```bash dapr init --runtime-version=1.8.0 ``` Wait for the update to finish, ensure you are using the latest version of Dapr(1.8.0) with: ```bash $ dapr --version CLI version: 1.8.0 Runtime version: 1.8.0 ``` You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI. Download the latest RC release from and put the `dapr` binary in your PATH. To upgrade Dapr, run: ``` dapr upgrade --runtime-version 1.8.0 -k ``` To upgrade with high availability mode: ``` dapr upgrade --runtime-version 1.8.0 --enable-ha=true -k ``` 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 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.8.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 Please see 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.8.0 --namespace dapr-system --wait ``` Alternatively, you can use the latest version of CLI: ``` dapr init --runtime-version=1.8.0 -k ``` Verify the control plane pods are running and are healthy: ``` $ dapr status -k NAME NAMESPACE HEALTHY STATUS REPLICAS VERSION AGE CREATED dapr-dashboard dapr-system True Running 1 0.10.0 15s 2022-06-24 13:07.39 dapr-sidecar-injector dapr-system True Running 1 1.8.0 15s 2022-06-24 13:07.39 dapr-sentry