docs/release_notes/v1.0.0-rc.1.md
We're happy to announce the release of Dapr 1.0.0-rc.1!
We would like to extend our thanks to all new and existing contributors who helped make this release happen.
This is a release candidate version as we progress towards Dapr v1.0.0. We appreciate you trying Dapr and providing feedback on this release.
See this section on upgrading Dapr to version 1.0.0-rc.1.
Dapr CLI version in this release is 1.0.0-rc.2 and is not compatible with runtime versions prior to 1.0.0-rc.1. Download Dapr CLI 1.0.0-rc.2 from here and put the
daprbinary in your PATH, or use the rc1 install script in the Getting Started guide.
For Java applications using Dapr Java SDK, use SDK version 0.10.0.
For .Net applications using Dapr .Net SDK, use SDK version 0.12.0-preview01.
Note: This release contains a few breaking changes.
Highlights
These are some highlights for this release;
The actor placement service now has a high availability (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.
Open Telemetry is now an option to capture observability events including logs, metrics and tracing.
Note: This is the last release that will support the LocalForwarder and its tracing exporter components. These Dapr components will be removed in the next release and instead be replaced with OpenTelemetry exporters.
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 for the v0.11.3 release which will be updated with each future release.
The CLI component command dapr components -k now shows version information for each component.
ENABLED placement service to run with multiple instances 663
UPDATED documentation to use OpenTelemetry instead of Local Forward 1080
ENABLED secrets API before application endpoint is ready 1493
IMPROVED RabbitMQ's PubSub implementation to automatically reconnect on 'channel/connection is not open' 1688
FIXED verbosity for 'host removed' logs in placement service 1726
UPDATED error handling in HTTP and gRPC APIs 1742
ADDED ability for Dapr to use a non-secure SSL connection when communicating with the app 1883
FIXED Component YAMLs needing quoted values for Kubernetes 1893
End to end tests now save container logs 2063
FIXED gRPC error handing to follow grpc error handling guide 2067
ADDED RFC1123 validation for app IDs 2068
UPDATED Change hardcoded integer status codes to constants for HTTP API 2070
FIXED memory leak and high memory utilization in actor building block 2093
IMPROVED Actor distribution and made replication factor configurable 2094
REMOVE redundant 'metadata' in dapr_sidecar_injector_service.yaml 2136
FIXED Dapr does not report error when component category is invalid 2146
FIXED disabling metrics configuration 2163
ADDED E2E tests option to run in HA mode 2188
ADDED permission of "Watch" for crds of Subscriptions 2208
ADDED Unit tests for Sentry and gRPC server 2212
FIXED wrong error response when grpc callee returns error for http->gRPC invocation 2220
FIXED .Net gRPC appcallback server OnInvoke callback failure 2221
FIXED input binding load order 2222
REMOVED deprecated flags from daprd main 2232
FIXED Pubsub fails delivery on 200 with empty JSON 2235
ADDED configurable healthz port for placement service 2242
VALIDATED CosmosDB state store for actors 2243
CHANGED preferred node affinity to required 2245
ADDED codecov rules to ensure that no PR reduces unit test coverage 2262
FIXED Dapr hiding gRPC transport error in service invocation 2272
ADDED the feature to collect Dapr control plane service logs when the test is done 2284
CHANGED Cors middleware to optional + added tests 2285
IMPROVED performance by removing fmt.Sprintf from hot path for service invocation 2287
FIXED Update OpenTelemetry attribute keys db.{type,url,instance} to the latest spec db.{system,connection_string,name} 2288
FIXED memory leak in app health check for actor 2292
REMOVED 60 seconds timeout on app channel 2301
USE Go 1.15.3 to build binary 2303
FIXED race condition of busy flag and channel and unnecessary heap alloc in actor locking 2306
REMOVED package deprecation warning for protoc-gen-go 2313
ADDED Additional unit test coverage for HTTP API 2315
ADDED HTTP PUT support for statestore APIs 2316
ADDED limits/requests in helm charts 2325
FIXED Dapr API status codes for HTTP audited and updated to match documentation 2338
FIXED memory leak in pending actor call metric 2339
FIXED unnecessary memory alloc for actor in actor invocation call flow 2340
SWITCH apiextensions.k8s.io/v1beta1 to apiextensions.k8s.io/v1 2354
ADDED the option to generate crd via controller-gen 2355
ADDED Raft server and its state for placement 2373
USE Raft state to maintain dapr runtime host state and hashing table 2374
ENABLED placement client in runtime to connect the leader of placement 2375
UPDATED helm chart to install three placement replicas for HA mode 2376
ADDED graceful server shutdown for placement 2377
ADDED gRPC method to register actor timer 2388
ADDED gRPC method to unregister actor timer 2397
ADDED gRPC method to invoke actors 2400
FIXED Fail Dapr sidecar if specified configuration cannot be loaded properly 2425
IMPROVED help messages 421
UPGRADED Golang Lint to 1.31.0 443
SKIP container check for Redis when --redis-host is specified 479
ADDED Enable SSL connection flag 494
REMOVED deprecated commands 503
FIXED azure auth import in CLI 504
ADDED Version and scopes field to dapr components -k output 505
FIXED Dapr CLI status command to display dapr-placement-server StatefulSet 509
FIXED CLI publish to accept 2xx codes 510
FIXED Empty spaces in path 513
ADDED version argument in one line scripts to pull the specific version of dapr cli 516
CHANGED dapr init behavior to download the latest daprd binary when cli version has -rc suffix 518
ADDED Apple Push Notification Service Output Binding 480
ENABLED metadata to force HTTPS on final redirect from oauth2 middleware 486
REMOVE CloudKMS from Secret Stores 495
ADDED Ack wait and MaxInFlight Parameters to Nats Streaming Component 505
FIXED Azure Blob Storage binding not saving JSON values 515
FIXED Display app name (id) in Dashboard on K8s 87
ADDED Support for imagePullSecret Secret on Helm Chart 2475
ADDED HTTP status code for error in method invocation 400
ADDED configurable log level in .Net SDK 406
USE Guid to generate unique Actor ID 415
FIXED Bug in the Actors SDK for dotnet-sdk. Actor Reference and Id can now be stored 444
FIXED documentation for Actor sample in .Net 450
FIXED Save byte[] in actor's state store 352
FIXED register timer method to return timer's name, enabling use of auto-generated values 355
FIXED withObjectSerializer method to return generic type in ActorProxyBuilder 356
UPDATED dependencies expect opentelemetry 361
FIXED Timer invocation after Actor runtime app restarts 362
ADDED Added codecov rules to ensure that no PR reduces unit test coverage 364
FIXED high memory consumption issue in Java SDK for HTTP communication 370
UPDATED opentelemetry library to 0.7.1. CHANGED repo ID of spring repo to spring 382
ADDED W3C trace headers to Dapr API calls 97
Updated dapr python sdk pkg documents 125
ADDED missing etag to StateResponse 128
ADDED Added codecov reports to python-sdk PRs 133
UPDATED environment-setup.md 841
ADDED Performance section in docs 863
FIXED documentation link to "Sending Messages to Output Bindings" 867
ADDED Documentation for enabling Dapr to talk to an app via an SSL connection 868
FIXED dead link to Ignite video session 878
FIXED links in page developing-applications/ides/vscode-remotecontainers/ 887
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?
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.0.0-rc.1
Wait for the update to finish, ensure you are using the latest version of Dapr(1.0.0-rc.1) with:
$ dapr --version
CLI version: 1.0.0-rc.2
Runtime version: 1.0.0-rc.1
If you previously installed Dapr using Helm, you can upgrade Dapr to a new version. If you installed Dapr using the CLI, go here.
Download the latest RC release from here and put the dapr binary in your PATH.
Follow instructions below to migrate from 0.11.x placement service to 1.0.0-rc.1 placement service safely.
First run these two commands to disable helm upgrade from uninstall 0.11.x placement service.
kubectl annotate deployment dapr-placement helm.sh/resource-policy=keep -n dapr-system
kubectl annotate svc dapr-placement helm.sh/resource-policy=keep -n dapr-system
Then, export certs:
dapr mtls export -o ./certs
Now, upgrade Dapr to 1.0.0-rc.1 using the below commands:
helm repo update
helm upgrade dapr dapr/dapr --version 1.0.0-rc.1 --namespace dapr-system --reset-values --set-file dapr_sentry.tls.root.certPEM=./certs/ca.crt --set-file dapr_sentry.tls.issuer.certPEM=./certs/issuer.crt --set-file dapr_sentry.tls.issuer.keyPEM=./certs/issuer.key --set global.ha.enabled=true --wait
Once Dapr is installed completely, ensure that 0.11.x dapr-placement service is still running and wait until all PODs are running
kubectl get pods -n dapr-system -w
NAME READY STATUS RESTARTS AGE
dapr-dashboard-69f5c5c867-mqhg4 1/1 Running 0 42s
dapr-operator-5cdd6b7f9c-9sl7g 1/1 Running 0 41s
dapr-operator-5cdd6b7f9c-jkzjs 1/1 Running 0 29s
dapr-operator-5cdd6b7f9c-qzp8n 1/1 Running 0 34s
dapr-placement-5dcb574777-nlq4t 1/1 Running 0 76s ---- 0.11.x placement
dapr-placement-server-0 1/1 Running 0 41s
dapr-placement-server-1 1/1 Running 0 41s
dapr-placement-server-2 1/1 Running 0 41s
dapr-sentry-84565c747b-7bh8h 1/1 Running 0 35s
dapr-sentry-84565c747b-fdlls 1/1 Running 0 41s
dapr-sentry-84565c747b-ldnsf 1/1 Running 0 29s
dapr-sidecar-injector-68f868668f-6xnbt 1/1 Running 0 41s
dapr-sidecar-injector-68f868668f-j7jcq 1/1 Running 0 29s
dapr-sidecar-injector-68f868668f-ltxq4 1/1 Running 0 36s
Restart your application deployments to update the Dapr runtime.
kubectl rollout restart deploy/<DEPLOYMENT-NAME>
Once the deployment is completed, delete the 0.11.x dapr-placement service by running the following commands:
kubectl delete deployment dapr-placement -n dapr-system
kubectl delete svc dapr-placement -n dapr-system
All done!
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 --version 1.0.0-rc.1 --namespace dapr-system
Alternatively, you can use the latest version of CLI:
dapr init --runtime-version=1.0.0-rc.1 --kubernetes
If you previously installed Dapr on your Kubernetes cluster using the Dapr CLI, run:
Note: Make sure you're uninstalling with your existing CLI version
dapr uninstall --kubernetes
If you previously installed Dapr using Helm 3.X:
helm uninstall dapr -n dapr-system
If you installed Dapr with Helm to a namespace other than dapr-system, modify the uninstall command above to account for that.
Verify the control plane pods are running and are healthy:
$ kubectl get pods -n dapr-system
NAME READY STATUS RESTARTS AGE
dapr-dashboard-85cc6c9f7d-hzk69 1/1 Running 0 13m
dapr-operator-84985cb985-h2zdv 1/1 Running 0 13m
dapr-placement-server-0 1/1 Running 0 13m
dapr-sentry-5974c7cb6d-9bnqd 1/1 Running 0 13m
dapr-sidecar-injector-5b5bb9454-sfmmx 1/1 Running 0 13m
After Dapr 1.0.0-rc.1 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>
The following annotations are no longer supported:
dapr.io/iddapr.io/portdapr.io/protocolInstead, use the following:
dapr.io/app-iddapr.io/app-portdapr.io/app-protocolREMOVED deprecated flags from daprd main 2232
FIXED Pubsub fails delivery on 200 with empty JSON 2235
FIXED Dapr API status codes for HTTP audited and updated to match documentation 2338
SWITCH apiextensions.k8s.io/v1beta1 to apiextensions.k8s.io/v1 2354
Thanks to everyone who made this release possible!
Special thanks to @jigargandhi for the amazing work on 1493. Also, thanks to @skyao for the great work on 2101
@Li-Yanzhi, @TenSt, @abserari, @ajaysingh77, @artursouza, @beiwei30, @bvwells, @cilerler, @cmendible, @discostu105, @halspang, @jdubois, @jigargandhi, @juazasan, @kendallroden, @mfcollins3, @mukundansundar, @rynowak, @skyao, @tcnghia, @tianvan, @tylermurry, @vinayada1, @wcs1only, @yaron2, @youngbupark