Back to Dapr

Dapr 1.3.0

docs/release_notes/v1.3.0.md

1.17.619.8 KB
Original Source

Dapr 1.3.0

We're happy to announce the release of Dapr 1.3.0!

We would like to extend our thanks to all the new and existing contributors who helped make this release happen.

Highlights

If you’re new to Dapr, familiarize yourself by visiting the getting started page.

  • Service Invocation
    • Added gRPC proxying to enable bring-your-own-proto (preview feature) #323. Use your existing proto based gRPC services and have the traffic go through the Dapr sidecar. This enables Dapr applications to use the benefits of Service Invocation, including security, retries and ACLs to these gRPC services. See our How-To: Invoke services using gRPC documentation for further details.
  • Actors
    • Actor reminders and triggers now support ISO 8601 intervals #2513. Read more here
    • Added actor reentrancy support in .NET, PHP and Python SDKs (preview feature) . Actor reentrancy remains a preview feature in this release. Note that Java and PHP SDKs will support actor reentrancy in the next release.
    • Added configuration for actor reentrancy (preview feature) #3049. Actor reentrancy has several configuration values that must be understood by the runtime/actors. The configuration is provided to the runtime during the call to dapr/config
    • Support for actor reminder storage partitioning (preview feature) #2889. Applications can now enable partitioning of actor reminders in the state store across multiple keys for improved scale and performance. For more information on actor reminder storage partitioning, visit Dapr's Actors Documentation
  • State Management
    • Added support for TTL (time to live) to a subset of state store components #306. Applications can set time-to-live per state stored, and these states cannot be retrieved after expiration (the state is deleted) Supported state store components that support TTL are: Cassandra, Memcache, Redis, CosmosDB. Read more about state TTL
  • New components
  • Setup VS Code development in a containerized environment and use this in GitHub Codespaces for contributing to dapr project #3229. Read more here

Note: This release contains breaking changes.

See this section on upgrading Dapr to version 1.3.0.

Acknowledgements

Thanks to everyone who made this release possible!

@1046102779, @AaronCrawfis, @akkie, @alvinhenrick, @amirmm11, @anhldbk, @artursouza, @Banchio, @beiwei30, @berndverst, @bjorkstromm, @caogj, @CodeMonkeyLeet, @CodingSinger, @daixiang0, @DanAbara, @DarqueWarrior, @delvh, @dmitsh, @emattiza, @eNeRGy164, @fabistb, @gogi2811, @greenie-msft, @halspang, @iamazy, @ItalyPaleAle, @jasonviviano, @jcdickinson, @jigargandhi, @Junnplus, @luckyxiaoqiang, @luiscantero, @marviniter, @msfussell, @mukundansundar, @orizohar, @pinxiong, @pkedy, @puzpuzpuz, @rovangju, @seeflood, @skyao, @stulzq, @Taction, @tanvigour, @tianjipeng, @tomkerkhove, @wcs1only, @withinboredom, @yaron2

New in this release

Dapr Runtime

  • RESOLVED Have Actor reminder and triggers support ISO 8601 intervals standard format 2513
  • RESOLVED Improve developer documentation for Windows 2529
  • ADDED Custom component definition of Kubernetes secret store 2821
  • RESOLVED Support partitioned storage of actor reminders as experimental feature 2889
  • FIXED Data race and concurrency problems of actor placement. 2961
  • ADDED Log warning for missing app port when pub/sub subscription is loaded. 2979
  • FIXED Race condition between placement service table dissemination and actor removal 3023
  • ADDED Configuration for actor reentrancy 3049
  • RESOLVED Crash in daprd sidecar when multiple invocation requests are made without the server running 3128
  • ADDED Use pod anti-affinity for spreading across node for high-availability 3147
  • ADDED Use Pod Disruption Budget to ensure Dapr remains up 3148
  • RESOLVED Injector customize cluster domain of k8s when access some system service 3163
  • RESOLVED GetState API to return metadata in HTTP 3172
  • RESOLVED Exit runtime on connection error during component update loop 3175
  • RESOLVED Use separate custom image for injector service in dapr_sidecar_injector chart 3192
  • RESOLVED Add support for metadata in pub/sub subscription CRD 3225
  • ADDED Support GitHub Codespaces for contributing to dapr project 3229
  • RESOLVED Call existing gRPC methods and bring your own gRPC protos - renewed gRPC experience. 3231
  • ADDED PKCS8 support 3240
  • FIXED Go Panic on Actors usage (Redis) with PubSub (Redis) on Start 3258
  • RESOLVED Apply max request body to gRPC channel 3265
  • FIXED sendToOutputBinding incorrect make slice 3270
  • RESOLVED use dapr.io/enable-debug: "true" to debug dapr failed 3287
  • FIXED Race condition in grpc/api.go for state API 3323
  • RESOLVED InvokeBinding API now returns metadata in HTTP 3326
  • ADDED Git commit hash to STDOUT with new flag --buildinfo 3341
  • FIXED unblockPlacements concurrent calls will raise panic bug 3364
  • ADDED Support for aws parameter store 3369
  • FIXED operator component crd resouces update all dapr runtime 3375
  • ADDED GraphQL Binding (components-contrib#844) 3394

Dapr CLI

  • RESOLVED Make install script work with non-privilege's environments like Azure Cloud Shell 580
  • ADDED dapr buildinfo command to print commit id and other info 599
  • ADDED dapr uninstall -k --all which also removes CRDs 656
  • FIXED Added fallback version check for dapr init if Github API is unavailable 677
  • ADDED dapr run --placement-host-address now supports specifying TCP port 705
  • RESOLVED JSON/YAML output format for dapr list 728
  • RESOLVED Dapr List Displays Dapr Dashboards As Empty Services 736
  • FIXED The --enable-profiling and --app-ssl parameters not being properly passed to daprd768

Components

  • RESOLVED Event-Hub input binding should propagate event meta-data 227
  • RESOLVED Add optional support for TTL (Time to Live) for state stores 306
    • Currently supported components: Cassandra, Memcache, Redis, CosmosDB. See this table.
  • RESOLVED AWS Managed Cassandra State : not working 691
  • RESOLVED Azure Storage - getBlobRetryCount 758
  • RESOLVED Move The common Redis code to internal 857
  • RESOLVED Add backoff for rabbitmq PubSub component 861
  • RESOLVED Rabbitmq component goroutine not exit after close 863
  • RESOLVED Update Zeebe to version 1.0 875
  • RESOLVED Move retry and config packages to dapr/kit for reuse 893
  • RESOLVED Binding to GraphQL 902
  • RESOLVED Dapr Mongo State Store component does not support srv record format 904
  • RESOLVED Mysql should support more data types. 923
  • RESOLVED Hashicorp Vault - using BulkGetSecret (through asp.net core) always return 404 Not Found 925
  • ADDED ConsumerId parameter can also be referred as ConsumerGroup for Kafka 928
  • ADDED Support Codespaces and VSCode devcontainers in Components-Contrib repo 935
  • FIXED Panic when handle Pub/Sub with missing CloudEvent attributes (dapr#3281) 967
  • RESOLVED Fix reported 3rd party vulnerabilities 979

.NET SDK

  • ADDED Support for actor reentrancy 661
  • RESOLVED Add support to provide Pubsub (and Topic) during runtime at startup for controller methods. 678
  • RESOLVED Adds support for providing pubsub and topic names during runtime. 681
  • RESOLVED Improve Actor error messages 684
  • RESOLVED fix: InvalidProgramException under ASP.Net 6.0 711
  • RESOLVED Configurable actor reminder storage partitions 712
  • RESOLVED GrpcServiceSample: No message returned from method 719

Go SDK

  • RESOLVED Introduce golangci-lint 168
  • RESOLVED Invoke: gRPC errors are wrapped multiple times - cannot get the status code 186
  • RESOLVED Expose GRPCClient.protoClient 188
  • RESOLVED cleanup temp binary file 193

Java SDK

  • RESOLVED Update Spring Boot DaprBeanPostProcessor to evaluate expressions Topic attribute values 554
  • FIXED Actor gRPC client to be non-blocking 562
  • RESOLVED Update GRPC libraries for security updates 573
  • ADDED Support for configuring actor reminder storage partitions 574

Python SDK

  • ADDED Support for actor reentrancy 214
  • RESOLVED Configurable actor reminder storage patitions 236
  • ADDED Implement State Isolation for Reentrant Actor Calls 237

PHP SDK

  • ADDED Dapr API token support 81
  • RESOLVED Add Laravel example 84
  • ADDED Support for actor reentrancy 85
  • RESOLVED A whole new client 93
  • ADDED native DateInterval support 95
  • RESOLVED Support Reminder Storage Partitions Actor Runtime Config 97

Documentation

  • RESOLVED Add deployment and upgrade guidelines for self-hosted mode 760
  • RESOLVED [CONTENT] Incorrect curl syntax in Actors API examples 1365
  • RESOLVED Enabling HA for existing Dapr installations on Kubernetes 1476
  • RESOLVED [CONTENT] Actor sections should mention that only a single state store can be used for actor state 1525
  • RESOLVED VS Code Dapr Extension Documentation Update 1533
  • RESOLVED GCP Pub/Sub Binding required fields 1534
  • RESOLVED gRPC service extension examples won't run 1542
  • RESOLVED Secrets getting started guide should clarify path to file 1544
  • RESOLVED Add gRPC proxy section 1548
  • RESOLVED Building blocks articles do not link to the SDK topic for that building block 1549
  • RESOLVED Add automation to create PR for submodule updates 1562
  • RESOLVED metadata missing consumerGroup 1575
  • RESOLVED Need topic that list all the preview features and when they were introduced 1592
  • RESOLVED Actors reminder and triggers support ISO 8601 intervals standard format 1600
  • RESOLVED Update info about supported Kubernetes versions 1603
  • RESOLVED Document kubernetes secret store 1622
  • RESOLVED Document how to use partitioning for actor reminders storage 1648
  • RESOLVED updated Actor How To docs for reminder intervals 1651
  • RESOLVED Document actor reminder partitioning 1658
  • RESOLVED Add gRPC proxying content 1671
  • RESOLVED Added a How-To section for VSCode debugging 1673
  • RESOLVED Fix profiling flag example 1675
  • RESOLVED Add a list of all current preview features 1678
  • RESOLVED Update the list of supported Dapr versions for v1.3 1684

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

bash
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:

bash
dapr init --runtime-version=1.3.0

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

bash
$ dapr --version

CLI version: 1.3.0
Runtime version: 1.3.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 RC release from here and put the dapr binary in your PATH.

To upgrade Dapr, run:

dapr upgrade --runtime-version 1.3.0 -k

To upgrade with high availability mode:

dapr upgrade --runtime-version 1.3.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

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.3.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

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.3.0 --namespace dapr-system --wait

Alternatively, you can use the latest version of CLI:

dapr init --runtime-version=1.3.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.7.0    15s  2021-07-26 13:07.39
  dapr-sidecar-injector  dapr-system  True     Running  1         1.3.0   15s  2021-07-26 13:07.39
  dapr-sentry            dapr-system  True     Running  1         1.3.0   15s  2021-07-26 13:07.39
  dapr-operator          dapr-system  True     Running  1         1.3.0   15s  2021-07-26 13:07.39
  dapr-placement         dapr-system  True     Running  1         1.3.0   15s  2021-07-26 13:07.39

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

  • RESOLVED Update Zeebe to version 1.0 875