Dapr 1.1.0
We're happy to announce the release of Dapr 1.1.0!
We would like to extend our thanks to all the new and existing contributors who helped make this release happen.
Highlights
- New preview feature for sidecar injection in Kubernetes Job with new
shutdown
API to stop sidecar from app 2689 - Defining Dapr sidecar environment variables 2508
- Etag is required for actors in future added state stores 2890
- Dapr API Token is not included in telemetry traces anymore 2974
- Local Storage Binding 752
- Added conformance tests for various pubsub components (Pulsar, MQTT, Hazelcast, RabbitMQ)
- .NET Apps can now have unit tests for Actor Timers and Reminder functionality 575
- .NET SDK support for hierarchical nesting configuration 615
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.
See this section on upgrading Dapr to version 1.1.0.
Acknowledgements
Thanks to everyone who made this release possible!
@1046102779, @Betula-L, @Hugome, @PeterGerrard, @SamuelMcAravey, @Taction, @artursouza, @dinggh, @halspang, @hnlq715, @jigargandhi, @ksivamuthu, @liamgib, @luckyxiaoqiang, @lynn-orrell, @moonchanyong, @mukundansundar, @orizohar, @pkedy, @puzpuzpuz, @rynowak, @springe2004, @tcnghia, @trondhindenes, @wcs1only, @withinboredom, @yaron2
New in this release
Dapr Runtime
- FIXED Bug in runtime. 2348
- RESOLVED feat: Allow for defining env-vars for sidecar 2508
- ADDED Support response propagation for input bindings 2628
- RESOLVED Prevent helm install from clashing with an existing
role-tokenreview-binding
(used by Vault) cluster role binding 2651 - RESOLVED Daprd failed to start metric server due to address already in use even though configuration metric disabled. 2677
- ADDED Dapr sidecar support for K8s Cronjob. 2689
- ADDED list of Dapr components before loading them 2723
- RESOLVED TraceId is not propagated when using dapr grpc client's InvokeMethodAsync method 2749
- RESOLVED Avoid push of Helm chart when chart version wasn't updated 2750
- RESOLVED hotfix(fswatcher): repair fswatcher fmask &error 2777
- RESOLVED feat(logger): fix typo 2778
- RESOLVED support(scopes): increase resource definition fault tolerance 2779
- RESOLVED optimize(healthz): continuously check failed and return failure state 2781
- RESOLVED Upgrade to Go 1.16 2819
- RESOLVED optimize(components): use IsInitialVersion method 2832
- RESOLVED confirms that state key does not contain "||" 2835
- RESOLVED optimize(http): reduce repetitive secretstore codes 2841
- FIXED Runtime will no longer override X-Forwarded Headers if they already exist 2846
- RESOLVED fixme(fasthttp/router): upgrade fasthttp router to solve '/' 2863
- RESOLVED Fail actors state stores if etag is not supported 2890
- RESOLVED Fix spelling of separator 2913
- RESOLVED Fix read/write map race in grpc.Manager 2915
- RESOLVED Fix typos in comments 2928
- FIXED Race condition of reading and writing components in runtime. 2932
- RESOLVED Use filepath package to do file path operations 2936
- FIXED Component update without checking namespace and scope by operator 2937
- RESOLVED Fix typos related to placement 2959
- RESOLVED Changed sidecar injector pull policy to IfNotPresent 2965
- RESOLVED Dapr API Token should not be included in telemetry traces 2974
Dapr CLI
- ADDED JSON logging option 515
- ADDED
--wait
flag forinit
andupgrade
commands 597 - RESOLVED status check panic on pending containers 609
- RESOLVED CRD gone after running
dapr upgrade
622 - FIXED CLI returns non-zero for dapr stop command in Windows 631
Components
- ADDED blob deletion support in Azure Blob Storage binding 681
- RESOLVED Avoid using github.com/satori/go.uuid 703
- ADDED message redelivery and improved concurrency settings for Redis PubSub 710
- ADDED Retries to handle MQTT message error and acknowledge processed messages 720
- ADDED Retries to handle Hazelcast message errors 723
- ADDED
eTag
support for MongoDB state store 726 - RESOLVED GetResponse does not return nil eTag in state store 731
- RESOLVED Storing
byte[]
value in CosmoDB state component 745 - ADDED AWS SSM Parameter store component as secret store 746
- RESOLVED Local Storage Binding 752
- RESOLVED refactor GCP pubsub 760
- RESOLVED fix pubsub redis close bug 769
.NET SDK
- RESOLVED Added documentation for docker-compose, Tye and other local development options 534
- RESOLVED Updated actor docs 546
- RESOLVED Make it possible to unit test Actor Timers and Reminder functionality 575
- FIXED handling of non-JSON content in data field for CloudEvents 592
- RESOLVED Add documentation for dependency injection in actors 612
- ADDED support for hierarchical nesting configuration 615
- ADDED support for configuring key delimiters for nesting configuration 627
Python SDK
- ADDED Add DAPR_HTTP_TIMEOUT_SECONDS configuration option. 162
- ADDED Shutdown support for python-sdk 210
Go SDK
- RESOLVED fix go-sdk example doc 144
- RESOLVED Update pub.go 145
- RESOLVED doc: fix typo 148
- RESOLVED feat: add shutdown 151
Quickstarts
- RESOLVED Broken Link for .net SDK quick start examples 389
- RESOLVED Update quickstarts to reflect dapr init --namespace option 393
- RESOLVED Autovalidate external URLs 394
- RESOLVED Multiple race conditions when deploying quickstarts to Kubernetes 398
- RESOLVED Pub/Sub quickstart links lead to Chinese pages 410
Upgrading to Dapr 1.1.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
For releases like this, download the latest and greatest release from here and put the dapr
binary in your PATH. Alternatively, follow these instructions to get the latest CLI.
Once you have installed the CLI, run:
dapr init --runtime-version=1.1.0
Wait for the update to finish, ensure you are using the latest version of Dapr(1.1.0) with:
$ dapr --version
CLI version: 1.1.0
Runtime version: 1.1.0
Kubernetes
Upgrading from previous version
You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.
Upgrade using the CLI
Download the latest CLI release from here and put the dapr
binary in your PATH.
Alternatively, follow these instructions to get the latest CLI.
To upgrade Dapr, run:
dapr upgrade --runtime-version 1.1.0 -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
Troubleshooting upgrade using the CLI
There is a known issue running upgrades on clusters that may have previously had a version prior to 1.0.0-rc.2 installed on a cluster.
Most users should not encounter this issue, but there are a few upgrade path edge cases that may leave an incompatible CustomResourceDefinition installed on your cluster. The error message for this case looks like this:
❌ Failed to upgrade Dapr: Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
The CustomResourceDefinition "configurations.dapr.io" is invalid: spec.preserveUnknownFields: Invalid value: true: must be false in order to use defaults in the schema
To resolve this issue please run the follow command to upgrade the CustomResourceDefinition to a compatible version:
kubectl replace -f https://raw.githubusercontent.com/dapr/dapr/5a15b3e0f093d2d0938b12f144c7047474a290fe/charts/dapr/crds/configuration.yaml
Then proceed with the dapr upgrade --runtime-version 1.1.0 -k
command as above.
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.1.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
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.1.0 --namespace dapr-system --wait
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.1.0 -k
Post installation
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.6.0 15s 2021-03-31 13:07.39
dapr-sidecar-injector dapr-system True Running 1 1.1.0 15s 2021-03-31 13:07.39
dapr-sentry dapr-system True Running 1 1.1.0 15s 2021-03-31 13:07.39
dapr-operator dapr-system True Running 1 1.1.0 15s 2021-03-31 13:07.39
dapr-placement dapr-system True Running 1 1.1.0 15s 2021-03-31 13:07.39
After Dapr 1.1.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>
Breaking Changes
None.