Skip to content

Dapr Runtime v1.0.0

Compare
Choose a tag to compare
@dapr-bot dapr-bot released this 17 Feb 01:26
· 3335 commits to master since this release
6314733

Dapr 1.0.0

We're excited to announce the release of Dapr 1.0.0! 🎉🎉🎉🎉 🎈🎈🎈🎈

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.

See this section on installing/upgrading Dapr to version 1.0.0.

For a list of all changes since 0.11 release, refer to the release notes from the release candidates:

For Java applications using Dapr Java SDK, use SDK version 1.0.0. See upgrade instructions for the Java SDK.

For .Net applications using Dapr .Net SDK, use SDK version 1.0.0. See upgrade instructions for the .Net SDK.

Acknowledgements ❤️

Thanks to everyone who made this release possible!

@AaronCrawfis, @1046102779, @abserari, @alpha-baby, @alydersen, @ajaysingh77, @arghya88, @artursouza, @beiwei30, @Betula-L, @bvwells, @cilerler, @cmendible, @cvictory, @DarqueWarrior, @darren-wang, @davidkarlsen, @discostu105, @dylandee, @eibrunorodrigues, @eNeRGy164, @fjvela, @gaoxinge, @georgestevens99, @halspang, @harrykimpel, @hepin1989, @IroNEDR, @issacg, @jdubois, @jigargandhi, @jjcollinge, @juazasan, @Karishma-Chawla, @karoldeland, @kendallroden, @kevgo, @ksivamuthu, @kzmake, @Li-Yanzhi, @mchmarny, @mfcollins3, @msfussell, @mrchypark, @mukundansundar, @newbe36524, @orizohar, @PeterGerrard, @Phiph, @pkedy, @ProfessorMc, @Qalifah, @rrylee, @rynowak, @sau-lanvy, @shubham1172, @skyao, @soiboxauxi, @tcnghia, @TenSt, @tianvan, @tomkerkhove, @trondhindenes, @tylermurry, @vinayada1, @wcs1only, @withinboredom, @wjayesh, @XavierGeerinck, @xiazuojie, @yaron2, @Yggdrasill-7C9, @youngbupark, @wwulfric, @ZeyadYasser, @zzxwill

Highlights since the 0.11 release

  • The actor placement service now has a high availabilty (HA) configuration to improve resilience and enable upgrades on production system that use actors to minimize downtime on actor instance availability.
  • Substantial work has been done on improving the scale and performance of actors.
  • All Dapr APIs can now be called on the Dapr sidecar before the app has responded on the app-port. For example, this enables the app to retrieve secrets before the app starts, enabling setting up JWT validation in an auth pipeline/middleware.
  • Http endpoints in your app can now be https endpoints, which previously were blocked. If your app is listening on https or has a gRPC TLS configuration enabled, use the app-ssl flag like this. This will have Dapr invoke the app over an insecure SSL channel: dapr run --app-id nodeapp --app-port 3000 node app.js --app-ssl
  • Published service invocation API performance numbers.
  • The CLI component command dapr components -k now shows version information for each component.
  • Support for HTTP query parameters with many values per key, including support in SDKs. 2786
  • Added the ability to share state between different applications using prefix strategies. Visit this link to learn more.
  • Added a bulk secrets API to get all the secrets at once from a secret store that the app has access to. Implemented in the secret components
  • Actors in Java SDK communicate to Dapr sidecar via GRPC. This allows better performance for invocation of Actor methods, timers and reminders.
  • Deprecation of exporters component #2337: Tracing is now part of Dapr core, and tracing settings have moved to Configuration CRD. See this doc for information about the new tracing settings. For more detailed instructions on setting up tracing in new Configuration, check out the observability quickstart sample as well as backend-specific guides for Zipkin, Jaeger, New Relics, and OpenTelemetry trace backends like Azure AppInsight.
  • Service invocation performance test results now published and available at the dapr perf website
  • Full review on the Dapr CLI to make command parameters consistent, update descriptions, provide more examples and add capabilites such as getting the output for configuration.Note that this includes breaking changes.
  • Improvements to the Dapr metrics dashboards.
  • Round robin load balancing of mDNS requests. This supports multiple app instances for a single standalone app id with round robin load balancing across them for environments that support mDNS, such a physical machines. For example, if you have 1 instance of app A and 5 instances of app B and then call from A->B, Dapr round robins' between the 5 B instances.
  • Added the option to specify whether Dapr should ignore errors when loading a component and continue initialization. See here for the new ignoreErrors field.
  • Dependency injection (DI) for .NET actors
  • Pub/Sub per message time-to-live Dapr enables per-message time-to-live (TTL) for all pub/sub components. Applications can set time-to-live per message, and subscribers will not receive those messages after expiration.
  • Sidecar to app authentication
  • MySQL output binding
  • MySQL state store
  • Component metadata's random value via {uuid} marker
  • Upgrade CLI command to upgrade the Dapr control plane
  • Runs as non-root by defaut on Kubernetes
  • Numerous improvements to the Dapr Dashboard
  • Added dapr-distributed-calendar sample
  • Java SDK fixed to perform async API calls to Dapr sidecar
  • Improvements to actor registration, exception handling in the .NET SDK
  • Service invocation in the SDK now uses HTTP as the underlying protocol so deeper integration with .NET SDK API surface for HTTP is possible, which makes service invocation much more flexible. See Service Invocation section for more details
  • Support for data_base64 attribute when wrapping pubsub payload as CloudEvent. 2612
  • Java SDK uses Reactor's context builtin capabilities and does not have Context object as part of the request and response objects anymore. 478

New in this release since 1.0.0-rc.3

Dapr Runtime

  • RESOLVED Add sha256sum to the released files 626
  • RESOLVED oauth middleware not obtaining token 1699
  • RESOLVED Require versions in APIs 2297
  • FIXED Update E2E procedures to replace deprecated kafka chart 2450
  • ADDED Support for binary data when wrapping pubsub payload as CloudEvent. 2612
  • RESOLVED Update the license header in all files 2758
  • RESOLVED Apply access list url normalization 2768
  • RESOLVED Helm chart has duplicate securityContext attributes for dapr-sidecar-injector 2784
  • RESOLVED Allow duplicate query string parameters in service to service invocation 2786
  • FIXED gRPC app callback should use data_base64 CloudEvent field when present. 2794

Dapr CLI

  • Fix Dapr stable version initialization 592

Components

  • RESOLVED Azure Blob Storage Binding Expecting String for Data 492
  • RESOLVED Remove Exporter Components now OpenTelemetry is adopted. 508
  • RESOLVED Allow DynamoDB state store to resolve credentials using AWS SDK credentials chain 647
  • RESOLVED Support Kafka partition key in Pub/Sub 667
  • FIXED handling of key not found in mongodb to return empty result instead of errror. 684
  • RESOLVED Error when saving byte[] in cosmosdb 685
  • RESOLVED Kafka pubsub can drop message in partial failures 687

.NET SDK

  • RESOLVED Handle content type of "application/octet-stream" in CloudEvent data 582
  • RESOLVED Add missing cancellation token 584

Go SDK

  • RESOLVED Updates for next runtime RC 142

Java SDK

  • RESOLVED Fix PubSub publish + Update IT to use RC3 bits. 471
  • RESOLVED Enhancing validation for ActorTurnBasedConcurrencyIT. 474
  • RESOLVED Adds IT to confirm eTag is parsed correctly to/from runtime. 475
  • REMOVED Context from request and response objects. 478
  • ADDED Support many values for one query param in HTTP and binary data in Cloud Event for PubSub. 484
  • ADDED Support to publish CloudEvent payload (and others) with correct content-type per event. 491

Python SDK

  • ADDED Autovalidation for python examples. 177
  • RESOLVED Allow multiple query param values per key for service invocation 192

Rust SDK

  • RESOLVED update proto to the latest 30
  • RESOLVED Automate cargo package publish process 33

C++ SDK

  • RESOLVED Update copyright header 27

JavaScript SDK

  • RESOLVED Upgrade proto to the latest 63

Documentation

  • RESOLVED Update troubleshooting guide for tracing 208
  • RESOLVED Improved the service invocation building block concepts doc 362
  • RESOLVED Provide guidance doc to use Prometheus queries to view Dapr metrics 707
  • RESOLVED Update the mTLS configuration doc to describe how to run Sentry control plan service locally 851
  • RESOLVED Establish a deprecation/support versions policy 864
  • RESOLVED Update docs for #2338 899
  • RESOLVED Binding documentation needed for Alicloud Object Storage (OSS) 970
  • RESOLVED Incorrect instructions for sending ETag 1071
  • RESOLVED Updating K8s guidance to include app rollout step for when a cluster is completely restarted 1072
  • RESOLVED Update Secrets API reference with the new Get Bulk Secret HTTP Response type 1089
  • RESOLVED Add competing consumer concept to pub/sub overview docs 1093
  • RESOLVED Add documentation for the "--dapr-http-max-request-size" argument for the CLI and "dapr.io/http-max-request-size" annotation 1099
  • RESOLVED Document all the environments variables used by developer in code and in the dapr CLI 1114
  • RESOLVED Rework Azure Blob Storage documentation to be more clear 1122
  • RESOLVED Update the component docs for bindings to capture all the metadata fields and have complete examples [1137](dapr/docs#1137
  • RESOLVED Update get-started-component.md 1139
  • RESOLVED HTTP Binding missing information/outdated 1153
  • RESOLVED CLI Upgrade command missing 1163
  • RESOLVED Update the Kubernetes Hosting documentation 1168
  • RESOLVED Update the Service Invocation Perf numbers for v1.0 1169
  • RESOLVED fixed typo in Service invocation overview 1170
  • RESOLVED Remove retry policies section for state 1172
  • RESOLVED v1.0 - Update RC related commands in "getting-started" 1188
  • RESOLVED It is unclear which state store components support actors 1199

Quickstarts

  • RESOLVED Document steps to setup allow lists feature for self hosted mode 317
  • RESOLVED Add OpenTelemetry collector agent instruction into quickstarts sample 324
  • RESOLVED Kafka helm chart deprecated. 325
  • RESOLVED Kubernetes quickstarts should point at 'latest' container tags. 346

Test Infrastructure

  • RESOLVED Update test-infra to v0.12.0 .Net SDK 78

Upgrading to Dapr 1.0.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

Next, follow these instructions to install the latest CLI version, or alternatively 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

Wait for the update to finish, ensure you are using the latest version of Dapr(1.0.0) with:

$ dapr --version

CLI version: 1.0.0
Runtime version: 1.0.0

Kubernetes

Upgrading from a previous version

You can perform zero-downtime upgrades using both Helm 3 and the Dapr CLI.

Upgrade using the 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.0.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

Upgrade using Helm

Note: If upgrading from Dapr 0.11.x, use the CLI to upgrade

To upgrade Dapr using Helm, run:

helm repo add dapr https://dapr.github.io/helm-charts/
helm repo update

helm upgrade dapr dapr/dapr --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

helm install dapr dapr/dapr --create-namespace=true --namespace dapr-system --wait

Alternatively, you can use the latest version of CLI:

dapr init -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-02-14 13:07.39
  dapr-sidecar-injector  dapr-system  True     Running  1         1.0.0   15s  2021-02-14 13:07.39
  dapr-sentry            dapr-system  True     Running  1         1.0.0   15s  2021-02-14 13:07.39
  dapr-operator          dapr-system  True     Running  1         1.0.0   15s  2021-02-14 13:07.39
  dapr-placement         dapr-system  True     Running  1         1.0.0   15s  2021-02-14 13:07.39

After Dapr 1.0.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

Components

  • FIXED handling of key not found in mongodb to return empty result instead of errror. 684
  • RESOLVED Error when saving byte[] in cosmosdb 685

Java SDK

  • REMOVED Context from request and response objects. 478
  • ADDED Support many values for one query param in HTTP and binary data in Cloud Event for PubSub. 484

.Net SDK

  • RESOLVED Handle content type of “application/octet-stream” in CloudEvent data 582

Python SDK

  • RESOLVED Support multiple values for a single query param key in service invocation 192