Project: Dapr (App Definition and Development / Application Definition & Image Build)
File: 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 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 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 and put the `dapr` binary 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 . Highlights These are some highlights for this release; The 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. is now an including logs, metrics and tracing. > Note: This is the last release that will support the LocalForwarder and its . 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 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

ENABLED placement service to run with multiple instances UPDATED documentation to use OpenTelemetry instead of Local Forward ENABLED secrets API before application endpoint is ready IMPROVED RabbitMQ's PubSub implementation to automatically reconnect on 'channel/connection is not open' FIXED verbosity for 'host removed' logs in placement service UPDATED error handling in HTTP and gRPC APIs ADDED ability for Dapr to use a non-secure SSL connection when communicating with the app FIXED Component YAMLs needing quoted values for Kubernetes End to end tests now save container logs FIXED gRPC error handing to follow grpc error handling guide ADDED RFC1123 validation for app IDs UPDATED Change hardcoded integer status codes to constants for HTTP API FIXED memory leak and high memory utilization in actor building block IMPROVED Actor distribution and made replication factor configurable REMOVE redundant 'metadata' in daprsidecarinjector_service.yaml FIXED Dapr does not report error when component category is invalid FIXED disabling metrics configuration ADDED E2E tests option to run in HA mode ADDED permission of "Watch" for crds of Subscriptions ADDED Unit tests for Sentry and gRPC server FIXED wrong error response when grpc callee returns error for http->gRPC invocation FIXED .Net gRPC appcallback server OnInvoke callback failure FIXED input binding load order REMOVED deprecated flags from `daprd` main FIXED Pubsub fails delivery on 200 with empty JSON ADDED configurable healthz port for placement service VALIDATED CosmosDB state store for actors CHANGED preferred node affinity to required ADDED codecov rules to ensure that no PR reduces unit test coverage FIXED Dapr hiding gRPC transport error in service invocation ADDED the feature to collect Dapr control plane service logs when the test is done CHANGED Cors middleware to optional + added tests IMPROVED performance by removing `fmt.Sprintf` from hot path for service invocation FIXED Update OpenTelemetry attribute keys `db.{type,url,instance}` to the latest spec `db.{system,connection_string,name}` FIXED memory leak in app health check for actor REMOVED 60 seconds timeout on app channel USE Go 1.15.3 to build binary FIXED race condition of busy flag and channel and unnecessary heap alloc in actor locking REMOVED package deprecation warning for protoc-gen-go ADDED Additional unit test coverage for HTTP API ADDED HTTP PUT support for statestore APIs ADDED limits/requests in helm charts FIXED Dapr API status codes for HTTP audited and updated to match documentation FIXED memory leak in pending actor call metric FIXED unnecessary memory alloc for actor in actor invocation call flow SWITCH apiextensions.k8s.io/v1beta1 to apiextensions.k8s.io/v1 ADDED the option to generate crd via controller-gen ADDED Raft server and its state for placement USE Raft state to maintain dapr runtime host state and hashing table ENABLED placement client in runtime to connect the leader of placement UPDATED helm chart to install three placement replicas for HA mode ADDED graceful server shutdown for placement ADDED gRPC method to register actor timer ADDED gRPC method to unregister actor timer ADDED gRPC method to invoke actors FIXED Fail Dapr sidecar if specified configuration cannot be loaded properly IMPROVED help messages UPGRADED Golang Lint to

SKIP container check for Redis when --redis-host is specified ADDED Enable SSL connection flag REMOVED deprecated commands FIXED azure auth import in CLI ADDED Version and scopes field to `dapr components -k` output FIXED Dapr CLI status command to display dapr-placement-server StatefulSet FIXED CLI publish to accept 2xx codes FIXED Empty spaces in path ADDED version argument in one line scripts to pull the specific version of dapr cli CHANGED `dapr init` behavior to download the latest daprd binary when cli version has -rc suffix ADDED Apple Push Notification Service Output Binding ENABLED metadata to force HTTPS on final redirect from oauth2 middleware REMOVE CloudKMS from Secret Stores ADDED Ack wait and MaxInFlight Parameters to Nats Streaming Component FIXED Azure Blob Storage binding not saving JSON values FIXED Display app name (id) in Dashboard on K8s ADDED Support for imagePullSecret Secret on Helm Chart ADDED HTTP status code for error in method invocation ADDED configurable log level in .Net SDK USE Guid to generate unique Actor ID FIXED Bug in the Actors SDK for dotnet-sdk. Actor Reference and Id can now be stored FIXED documentation for Actor sample in .Net FIXED Save byte FIXED register timer method to return timer's name, enabling use of auto-generated values FIXED withObjectSerializer method to return generic type in ActorProxyBuilder UPDATED dependencies expect opentelemetry FIXED Timer invocation after Actor runtime app restarts ADDED Added codecov rules to ensure that no PR reduces unit test coverage FIXED high memory consumption issue in Java SDK for HTTP communication UPDATED opentelemetry library to 0.7.1. CHANGED repo ID of spring repo to spring ADDED W3C trace headers to Dapr API calls Updated dapr python sdk pkg documents ADDED missing etag to StateResponse ADDED Added codecov reports to python-sdk PRs UPDATED environment-setup.md ADDED Performance section in docs FIXED documentation link to "Sending Messages to Output Bindings" ADDED Documentation for enabling Dapr to talk to an app via an SSL connection FIXED dead link to Ignite video session FIXED links in page developing-applications/ides/vscode-remotecontainers/ 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 daprredis, daprplacement 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 and put the `dapr` binary in your PATH. Once you have installed the CLI, run: ```bash 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: ```bash $ 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 . Download the latest RC release from 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. ```sh 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: ```sh dapr mtls export -o ./certs ``` Now, upgrade Dapr to

using the below commands: ```sh helm repo update helm upgrade dapr dapr/dapr --version 1.0.0-rc.1 --namespace dapr-system --reset-values --set-file daprsentry.tls.root.certPEM=./certs/ca.crt --set-file daprsentry.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 ```sh 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. ```sh kubectl rollout restart deploy/<DEPLOYMENT-NAME> ``` Once the deployment is completed, delete the 0.11.x dapr-placement service by running the following commands: ```sh 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: ```sh 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 ```bash dapr uninstall --kubernetes ``` If you previously installed Dapr using Helm 3.X: ```bash 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/id` `dapr.io/port` `dapr.io/protocol` Instead, use the following: `dapr.io/app-id` `dapr.io/app-port` `dapr.io/app-protocol` REMOVED deprecated flags from `daprd` main FIXED Pubsub fails delivery on 200 with empty JSON FIXED Dapr API status codes for HTTP audited and updated to match documentation SWITCH apiextensions.k8s.io/v1beta1 to apiextensions.k8s.io/v1 REMOVED deprecated cli command flags Thanks to everyone who made this release possible! Special thanks to @jigargandhi for the amazing work on . Also, thanks to @skyao for the great work on @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