docs/release_notes/v1.12.0.md
We're happy to announce the release of Dapr 1.12!
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.
Note: This release contains a few breaking changes.
See this section on upgrading Dapr to version 1.12.
Thanks to everyone who made this release possible!
@aaguilartablada, @AaronCrawfis, @AdamKorcz, @addjuarez, @akkie, @alexandreliberato, @alicejgibbons, @AnnuCode, @antontroshin, @artiom, @arturotrenard, @artursouza, @Azhovan, @batazor, @bderusha, @berndverst, @brendandburns, @cgillum, @ChaosInTheCRD, @chncaption, @cicoyle, @cisionmarkwalls, @cmoulliard, @cneijenhuis, @codefromthecrypt, @CrazyHZM, @DeepanshuA, @dnwe, @doe-base, @dollysah, @ejba, @elena-kolevska, @emctl, @evacchi, @fabistb, @fabrizziocht, @famarting, @fcabrera23, @FerencoVonMatterhorn, @filintod, @Gcaya, @guergabo, @halspang, @hdget, @helpta, @hhunter-ms, @hughxia, @hunter007, @ItalyPaleAle, @Jack97, @jackycsl, @jaeheonji, @Jhoysbou, @jjkcharles, @JoshVanL, @kendallroden, @kovalromank, @kruthika04, @Kuzbekov, @LaurenceLiZhixin, @letmerecall, @lburgazzoli, @macromania, @marcduiker, @MaxSchaefer, @mikeee, @mohitpalsingh, @MregXN, @msfussell, @mukundansundar, @mustaFAB53, @niakamk, @nyemade-uversky, @onionhammer, @paskozdilar, @paulyuk, @phillipleblanc, @pravinpushkar, @rabollin, @rickKoch, @robert-oh, @robertojrojas, @ross-p-smith, @RyanLettieri, @sagarlohani, @sakibian, @salmankhan-prs, @sclarke81, @shivam-51, @shivamkm07, @shruthiragu, @shubham1172, @sicoyle, @skyao, @srilasya02, @srparupu, @Taction, @thomasklinger1234, @Timtech4u, @tjsiron, @tmacam, @tomsft, @VazeeKevin, @vicancy, @vlardn, @WhitWaldo, @wimvc1, @XavierGeerinck, @xiangpingjiang, @yannart, @yaron2, @yash-nisar, @zhangcheng
These are the v1.12 release highlights:
The HTTP service invocation API now leverages streaming by default and is stable in the v1.12 release. This increases the overall performance of HTTP service invocation in many scenarios. Users that leverage HTTP service invocation will notice improvements such as: reduced memory usage, much smaller time-to-first-byte (TTFB), and can now send messages in chunks.
You can now securely call https:// non-Dapr endpoints providing a certificate for authentication to the remote endpoint
The outbox pattern enables a single transaction across a state store and any message broker and is a powerful design pattern for sending notifications regarding changes in an application’s state.
In this v1.12 release, the outbox pattern is enabled as a preview feature for any transactional state store.
The workflow runtime and APIs have been moved to beta status indicating the next stage of maturity towards stable. The beta APIs are the preferred choice when calling the Workflow APIs directly. [Note: the alpha APIs remain functional to prevent breaking changes]
Additionally, Java SDK is now supported for authoring Workflows, which you can try through the Java workflow quickstarts.
The metadata API on the Dapr sidecar now includes information on the app connection details including the app port, protocol, host, max concurrency, along with health check details as seen from the Dapr sidecar.
In this v1.12 release we continued to make improvements to Dapr actors, including bug fixes and performance improvements to Actor Reminders.
Some notable changes include:
dapr init -k command now supports a --dev option which deploy Redis and Zipkin containers to Kubernetes identical to the self-hosted mode. Simply set the Kubernetes cluster configuration context! Give this is try on your locally kubernetes cluster!dapr run --app-id myapp --resources-path path1 --resources-path path2 . For example you can have a shared folder for components used across many application and a per application specific folder. This applies to any of the Dapr resources.There are over 115+ components in Dapr. One more component has been added in this release:
The following components have been promoted to stable status:
The following components have had additional capabilities added:
DAPR_HTTP_ENDPOINT and/or DAPR_GRPC_ENDPOINT 502DAPR_API_TOKEN to gRPC client 520dapr run -f dapr.yamlIf 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.12.0.
APP_PROTOCOL env in app containers 6512global.ha.enabled in Helm Chart 6518--config flags for daprd in standalone mode 6091dapr_placement_actor_heartbeat_timestamp 6534/dapr/config 6583dapr.io/unix-domain-socket-path annotation causes deployments to fail 6705dapr stop -f 1221dapr list display the paths to the application and daprd logs in multi-app run 1228oauthbearer.extensions 3008ttlExpiryTime is returned for these state stores:
DAPR_HTTP_ENDPOINT and DAPR_GRPC_ENDPOINT environment variables 1124OnActorMethodFailedAsync method to simplify actor error logging 1014DAPR_HTTP_ENDPOINT and DAPR_GRPC_ENDPOINT environment variables 577dapr-ext-workflow)DAPR_HTTP_ENDPOINT and/or DAPR_GRPC_ENDPOINT 502DaprChunkedStream 503PATCH verb support for service invocation 518DAPR_API_TOKEN to gRPC client 520To 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 dapr_redis, dapr_placement and dapr_zipkin. Linux users need to run sudo if docker command needs sudo:
dapr uninstall --all
For RC releases like this, download the latest and greatest release from here and put the dapr binary in your PATH.
Once you have installed the CLI, run:
dapr init --runtime-version=1.12
Wait for the update to finish, ensure you are using the latest version of Dapr(1.12) with:
$ dapr --version
CLI version: 1.12
Runtime version: 1.12
You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.
Download the latest RC release from here and put the dapr binary in your PATH.
To upgrade Dapr, run:
dapr upgrade --runtime-version 1.12 -k
To upgrade with high availability mode:
dapr upgrade --runtime-version 1.12 --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.12 --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 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.12 --namespace dapr-system --wait
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.12 -k
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.12 15s 2023-09-26 13:07.39
dapr-sentry dapr-system True Running 1 1.12 15s 2023-09-26 13:07.39
dapr-operator dapr-system True Running 1 1.12 15s 2023-09-26 13:07.39
dapr-placement dapr-system True Running 1 1.12 15s 2023-09-26 13:07.39
After Dapr 1.12 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>
maxResponseBodySize of 100 MB, for security reasons components-contrib#3040The NATS Streaming PubSub component has been deprecated in Dapr 1.12 and will be removed in Dapr 1.13. The upstream NATS Streaming project has been deprecated and has reached End-Of-Life in June 2023. The upstream projects recommends all users migrate to NATS JetStream.
The UnsubscribeConfiguration call for gRPC API has been deprecated. 6769
The certchain, issuer-ca-filename, issuer-certificate-filename, and issuer-key-filename CLI flags have been deprecated in placement & operator and will no longer have any effect. Placement & operator now only requests their identity certificate from sentry.
The token-audience CLI flag has been deprecated in sentry. Sentry now requires inbound Kubernetes Service Account tokens to have an audience of dapr.io/sentry or the SPIFFE ID of sentry (spiffe://<trust domain>/ns/<namespace>/dapr-sentry).
The DAPR_CERT_CHAIN and DAPR_CERT_KEY daprd environment variables have been deprecated and will be ignored. Daprd must request their identity certificate from sentry.