docs/release_notes/v1.7.0.md
We're happy to announce the release of Dapr 1.7.0! 🚀 🎉 🎈
We would like to extend our thanks to all the new and existing contributors who helped make this release happen.
@1046102779, @AaronCrawfis, @abelperezok, @akkie, @alberthuang24, @amimimor, @amulyavarote, @artursouza, @beiwei30, @berndverst, @callmexiaolu88, @chinzhiweiblank, @chiru1221, @Cowlord711, @CrazyHZM, @cuishuang, @daixiang0, @davidgladstone, @DeepanshuA, @derrickburns, @dmitsh, @duglin, @Gehhilfe, @Giovds, @greenie-msft, @halspang, @hhunter-ms, @hmz777, @ItalyPaleAle, @jigargandhi, @jjcollinge, @Joshswooft, @l0ll098, @LaurenceLiZhixin, @lechnerc77, @li1234yun, @light-pan, @ls-2018, @lucasjellema, @lupino3, @marcinjahn, @marviniter, @msfussell, @mukundansundar, @mumumi, @naveen1100, @newbe36524, @nwiizo, @paulyuk, @pkedy, @pravinpushkar, @psychomelet, @qt-luigi, @r-c-correa, @RichardLaos, @rlfcunha, @rodrigoscna, @SergioVelmay, @shizn, @shivamkm07, @Shoothzj, @shubham1172, @si618, @siredmar, @skyao, @sourikghosh, @surenderssm, @Syuparn, @Taction, @tanvigour, @theonefx, @thielepaul, @uptutu, @uy-andrew, @vfarcic, @willvelida, @wimvdc, @XavierGeerinck, @yaron2, @yauri-io, @yordan-pavlov, @zdianjiang
Distributed applications are commonly comprised of many services, with dozens - even hundreds - of instances for any given application. These applications do not live in isolation, but are many times dependent on databases, caches, pub/subs, secret stores and other infrastructure services. With more dependencies, the likelihood of a system failure increases. For example, an instance can fail or be unresponsive due to hardware failure, database slowness, an overwhelming number of requests, application restarts/scale outs, or several other reasons. Designing and implementing your application with fault tolerance (the ability to detect, mitigate, and respond to failures) allows your application to recover to a functioning state and become self healing, and also helps prevent cascading failures all the way to your infrastructure services.
Dapr provides a capability for defining and applying fault tolerance resiliency policies via a resiliency spec. Resiliency specs are saved in the same location as components specs and are applied when the Dapr sidecar starts. The sidecar determines how to apply resiliency policies to your Dapr API calls. Within the resiliency spec, you can define policies for popular resiliency patterns, such as:
Policies can then be applied consistently to targets, which include:
The following components with stable release candidates in the previous Dapr release have graduated to stable designation:
There are now a total of 22 state stores with three new ones added in this release.
In addition, the preview Query API support has been added to the PostgresSQL, CockroachDB and Redis state stores in addition to the existing ones.
See the components section below for the list of numerous other fixes to components in this release.
[Note: With this release, there are now a total of 97 components including 41 bindings, 1 configuration, 8 HTTP middleware, 3 name resolution, 13 pub/sub, 8 secret stores, 23 state stores]
Several features were moved from "preview" status to "stable" status having been available for at least two releases and solicited feedback and fixes. The following features are now stable in this release:
components, configurations and list CLI commands now support Kubernetes namespaces when returning output.Private and alternative image registries (Preview): In self hosted mode the CLI init command can now specify any private registry to pull the container images required to install Dapr, as well as the ability to choose either public Dockerhub or Github repositories. This enables you to place images in trusted repositories of your choice, or pull from different purblic sources in case of image throttling.
Offline or airgap installation (Preview): By default, Dapr downloads binaries and pulls images from the network to setup the development environment. With this release, Dapr now supports offline or airgap installation using pre-downloaded artifacts, either with a Docker or slim environment. The artifacts for each Dapr release are now built into a Dapr Installer Bundle which can be downloaded from the releases in that repository. By using this installer bundle with the Dapr CLI init command, you can install Dapr into environments that do not have any network access.
It's now possible to use Unix Domain Sockets with Kubernetes (as well as self hosted) for increased throughput and lower latency when invoking the Dapr sidecar by using the dapr.io/unix-domain-socket-path annotation.
Note: This feature is not available on Windows, only on Linux
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.7.0.
text/plain 4472prometheus.io/probe annotation 4272dapr init has support for Dapr GitHub container registry via Environment variable 726namespace in the dapr list, configurations and components command 786content-type support for pub/sub, binding and state store components 1299disableBatching 1419value prefix from the key names in JSON query syntax 1490TEXT column type special case handling 1466JSON_EXTRACT and LONGTEXT column types 1486@RequestMapping 694/ to %2f 702DaprClient configuration option max_grpc_message_length for max gRPC message length in service invocation 371invoke_method_async in DaprClient (HTTP only) 300DaprInvocationHttpClient), allowing for use in environments like Jupyter Notebooks 295To 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.7.0
Wait for the update to finish, ensure you are using the latest version of Dapr(1.7.0) with:
$ dapr --version
CLI version: 1.7.0
Runtime version: 1.7.0
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.7.0 -k
To upgrade with high availability mode:
dapr upgrade --runtime-version 1.7.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.7.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 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.7.0 --namespace dapr-system --wait
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.7.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-03-29 13:07.39
dapr-sidecar-injector dapr-system True Running 1 1.7.0 15s 2022-03-29 13:07.39
dapr-sentry dapr-system True Running 1 1.7.0 15s 2022-03-29 13:07.39
dapr-operator dapr-system True Running 1 1.7.0 15s 2022-03-29 13:07.39
dapr-placement dapr-system True Running 1 1.7.0 15s 2022-03-29 13:07.39
After Dapr 1.7.0 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>
value field has been removed from the key name in the state management Query API as part of the ongoing feedback on this preview feature.
content-type will no longer default to text/plain if not explicitly provided as a header for HTTP invocations. Users are recommended to turn on this new behavior via the new preview feature to evaluate the impact of this change.