Dapr 0.7.0
We're happy to announce the release of Dapr 0.7.0!
With this release we focused on improvements to tracing and service invocation. This release also expands Dapr functionality with addition components. Continuing with the theme of improved stability, we also added a performance test for service invocation, fixed bugs, and added features to our long haul tests infrastructure.
There are also updated to the CLI with new commands and a lot of docs updates.
Newly added components:
- Azure EventGrid input/output binding
- Twitter input binding
- SendGrid output binding
- Kafka Pub/Sub
- Azure EventHubs Pub/Sub
We would like to extend our thanks to all 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 How To section.
Note: This release contains a few breaking changes.
See this section on upgrading Dapr to version 0.7.0.
New in this release
Dapr Runtime
Fixed Trace options defaults
Fixed gRPC load balancing not working on Kubernetes
Updated HTTP router to fasthttp/router
- ~4% throughput increase
Updated Service invocation APIs and implementation with new spec
Updated Tracing headers for new service invocation spec changes
Updated Tracing scopes for internal and external gRPC servers (Thanks @jjcollinge)
Fixed Actor drain variable spelling errors (Thanks @ksashikumar)
Fixed Metadata API inconsistency
Added Context propagation
Updated Tracing headers to fit industry standards
Fixed Distributed tracing call map formation
Added gRPC API versioning
Updated Tracing spec configuration
Moved To using versioned Docker image tags instead of :latest
Added Sampling rate for tracing configuration
Components
Added Azure Event Grid input/output binding (Thanks @lynn-orrell)
Added Twitter output binding
Added Sendgrid output binding (Thanks @benc-uk)
Added Azure Event Hubs Pub/Sub (Thanks @abhirockzz)
Added Kafka Pub/Sub (Thanks @khous)
Added Message time to live in RabbitMQ, Azure Service Bus/Storage Queue bindings (Thanks @fbeltrao)
Added Support for nested partition keys in CosmosDB (Thanks @ksivamuthu)
Fixed string escape for Azure Blob Storage (Thanks @benc-uk)
Added TLS support for Redis binding
Added Per call partition key support for Kafka binding
Fixed Non-existent key error for Zookeeper (Thanks @Julian-Chu)
CLI
Added dapr status
command for validating Kubernetes control plane health and status
Updated dapr init
to only pull a new binary if needed (Thanks @abhirockzz)
Added Homebrew package for MacOS
Added --runtime-verion
flag support for dapr init --kubernetes
System service components
Fixed Operator not creating k8s services if a deployment is patched
Updated Sidecar injector to add configurable resource requests and limits on sidecar container
Updated Sidecar injector to support configurable readiness probes
.NET SDK
Added Actor proxy method with parameterized interface (Thanks @jpiquot)
Updated Protobuf clients
Java SDK
Updated Protobuf clients
Fixed Actor API always returning true on Contain State API call
Docs
Added TTL information for RabbitMQ/Azure Service Bus bindings (Thanks @fbeltrao)
Added Added namespace metadata to deployments
Added All Dapr sidecar annotations for Kubernetes
Added Service invocation V1 spec
Updated Kafka binding for partition key
Added How To for Azure Event Hubs Pub/Sub
Added How To for Kafka Pub/Sub
Updated How To tutorial for Azure Application Insights
Updated Redis binding with TLS configuration
Added How To tutorial for using Pub Sub across different namespaces
Added Sendgrid binding spec
Added Readiness configuration for Kubernetes
Improved application insights distributed tracing onboarding guide by uploading localfowarder docker image to dapr official dockerhub
Tests
Added Performance test for service invocation
Added Performance test configuration and test app using Fortio
Improved Coverage for service invocation
Added Message analyzer delay monitor for Long Haul
Fixed Containers not updating if config YAML doesn't change
Improved Long haul tests validation and monitoring
Added Long haul test snapshot monitor
Added Long haul test hashtag counter delay monitor
Added Long haul test Generic error spike monitor
Added Long haul test feed stream generator
Added Hashtag snapshot service
Upgrading to Dapr 0.7.0
If you're upgrading from an older version of Dapr to 0.7.0, 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:
dapr uninstall --all
Next, get the latest CLI following these instructions, or alternatively download the latest and greatest release from here and put the dapr
binary in your PATH.
Once you have downloaded the CLI, run:
dapr init
Wait for the update to finish, and you're good to go!
Make sure you have the right runtime version (0.7.0) with:
dapr --version
Kubernetes
Download the latest CLI release as outlined above in the Local Machine / Self-hosted
section.
If you previously installed Dapr on your Kubernetes cluster using the Dapr CLI, run:
dapr uninstall --kubernetes
It's fine to ignore any errors that might show up.
If you previously installed Dapr using Helm 2.X:
helm del --purge dapr
If you previously installed Dapr using Helm 3.X:
helm uninstall dapr -n dapr-system
helm repo update
Wait until Dapr is uninstalled, and make sure the dapr-system
namespace is gone.
If you installed Dapr with Helm to a namespace other than dapr-system
, modify the uninstall command above to account for that.
You can now follow these instructions on how to install Dapr using Helm 3.
Alternatively, if you want to install Dapr in a dev/test setup, run:
dapr init --kubernetes
Post installation
After Dapr 0.7.0 has been installed, perform a rolling restart for your deployments.
Breaking Changes
gRPC Service Invocation
gRPC Protobuf update
- Package name in Dapr gRPC protobuf files has been changed to :
- renamed to
dapr to
dapr.proto.dapr.v1` - renamed to
daprclient
-dapr.proto.daprclient.v1
- moved the common protobuf message related to service invocation to
dapr.proto.common.v1
package
- renamed to
gRPC Service invocation
- If you're a Java SDK or dotnet SDK user, you must upgrade your SDK to the latest version.
- If you're a JS/Python/CPP/Rust SDK user, you must upgrade your SDK to the latest version first and update your code by referring to each sdk's examples.
- If caller app invokes HTTP callee app, caller app needs to specify HTTPExtension in InvokeRequest message.
- If HTTP callee app returns non-OK status code to caller app using gRPC API, caller app's gRPC client will throw the exception in 0.7.0 release. The caller app needs to handle the exception properly.
Tracing configuration
With the 0.7.0 release, Dapr trace configuration is simplified. Users now provide a "samplingRate" value to enable or disable the traces. Set "samplingRate: "0" to disable the traces. Set "samplingRate: "1" to generate traces on every operation. Refer https://github.com/dapr/docs/blob/master/concepts/observability/traces.md for more details.