
# Dapr 0.6.0

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

**Highlights**

* [Added ability to scope PubSub topics per application](https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-scopes/)
* [Added new components: Hazelcast PubSub, AliCloud Object storage binding, AWS Kinesis binding and GCP Pub/Sub PubSub](https://github.com/dapr/components-contrib)
* [Introduced *new* liveness/readiness probe endpoint for Dapr sidecar](https://docs.dapr.io/developing-applications/building-blocks/observability/sidecar-health/) and [actor service health API in user application](https://docs.dapr.io/reference/api/actors_api/#health-check)
* [Added mandatory TLS between the Dapr sidecar and the Dapr system services (control plane)](https://docs.dapr.io/concepts/security-concept/#sidecar-to-system-services-communication)
* Improved security by separating gRPC server for internal and external APIs
* Introduced Dapr longhaul-test app and environment
* Improved e2e test coverage and release process for manifest yaml
* Fixed major/minor bugs

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](https://docs.dapr.io/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](https://docs.dapr.io/concepts/) and the [Deploying applications](https://docs.dapr.io/developing-applications/).

> **Note: This release contains a few [breaking changes](#breaking-changes).**

See [this](#upgrading-to-dapr-0.6.0) section on upgrading Dapr to version 0.6.0.

## New in this release

### Dapr Runtime

**Improved** secret reference in component config by referring `SecretKeyRef.Name` if `Key` is not given (Thanks! @lynn-orrell)

**Updated** publish endpoint to allow path fragments (Thanks! @khous)

**Improved** self-host component loading by allowing single yaml to have multiple component configurations (Thanks! @ksivamuthu)

**Added** Hazelcast pubsub (Thanks! @peterjot)

**Added** GCP Pub/Sub to dapr loader (Thanks! @ksivamuthu)

**Added** AWS Kinesis input/output bindings to dapr loader (Thanks! @ksivamuthu)

**Separated** gRPC server for internal/user-exposed endpoints

**Added** new ssl connection enabled redis component

**Added** dapr-operator.yaml to GitHub release assets via CI

**Added** replicas per actor types metric to placement service

**Fixed** deployment manifest yaml generation command

**Fixed** http appchannel tracing bug when tracing is enabled

**Fixed** trace span export bug by skipping grpc-trace-bin

**Added** PubSub scoping/whitelisting

**Removed** unnecessary message types from dapr.proto files

**Changed** Kubernetes Operator API server from HTTP to gRPC

**Improved** E2E test coverage for Service invocation (e.g. gRPC to gRPC)

**Added** Support for Readiness and Liveness Probe for Dapr

**Added** app health checks for actors and its e2e tests

**Added** new daprd docker image that is used for sidecar image

**Improved** control plane connectivity resiliency with grpc retry middleware


### Components

**Fixed** key not found error by returning empty response [aerospike/Couchbase/memcache/hazelcast statestore] (Thanks! @abhirockzz, @ksivamuthu)

**Added** GCP Cloud Pubsub (Thanks! @ksivamuthu)

**Improved** eventhub bindings by specifying partition id and key (Thanks! @ksivamuthu)

**Added** the option to decode base64 payloads [Azure Blob storage binding] (Thanks! @CarlosLanderas)

**Added** AliCloud Object storage bindings (Thanks! @madhugilla)

**Added** Hazelcast pubsub support (Thanks! @peterjot)

**Added** AWS Kinesis data stream binding (Thanks! @ksivamuthu)

**Added** metadata support to Azure Blob binding (Thanks! @RicardoNiepel)

**Changed** redis client library to go-redis to enable SSL connection [redis statestore]


### CLI

**Fixed** Use the full container name when checking redis (Thanks! @vjrantal)

**Updated** CI to add new artifact for Homebrew

**Changed** dapr-operator manifest url to GitHub Release


### System service components

**Added** required TLS connection for Kubernetes Operator

**Added** required TLS connection for Placement Service

**Added** required TLS connection for Sentry

**Updated** client validation of Sentry to require TLS certification all the time


### .NET  SDK

**Added** Secret Store configuration provider implementation for Microsoft.Extensions.Configuration (Thanks! @cmendible)

**Updated** proto clients for 0.6.0 dapr runtime and updating DaprClient

**Added** more granular actor configuration

**Added** actor health check API


### Java SDK

**Added** actor health check API

**Added** Springboot integration


### Samples

**Added** state delete call to complete sample operations (Thanks! @vsaroopchand)

**Add** SDK Links to README and **fixed** typos and links in docs


### Docs

**Added** GCP pubsub docs (Thanks! @ksivamuthu)

**Updated** EventHub single partition id (Thanks! @ksivamuthu)

**Added** Hazelcast pubsub howto (Thanks! @peterjot)

**Added** metadata doc to Azure Blob binding (Thanks! @RicardoNiepel)

**Added** AWS kinesis docs (Thanks! @ksivamuthu)

**Improved** existing docs and **fixed** typos (Thanks! @rynowak, @drmcghee, and @eNeRGy164)

**Added** Liveness and readiness probe /healthz API spec

**Update** Actors healhcheck endpoint

**Added** Dapr presentations

**Added** PubSub scopes How-to

**Updated** TLS and security docs

**Improved** application insights distributed tracing onboarding guide by uploading localfowarder docker image to [dapr official dockerhub](https://hub.docker.com/r/daprio/dapr-localforwarder)


## Test-infra (Long haul test)

**Added** the initial long-haul test apps: feed-generator, message-analyzer, hashtag-app

**Added** longhaul-test environment

**Added** CI/CD to automate test app build and deployment


## Upgrading to Dapr 0.6.0

If you're upgrading from an older version of Dapr to 0.6.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:

```bash
dapr uninstall --all
```

Next, get the latest CLI following [these](https://github.com/dapr/cli#installing-dapr-cli) instructions, or alternatively download the latest and greatest release from [here](https://github.com/dapr/cli/releases) and put the `dapr` binary in your PATH.

Once you have downloaded the CLI, run:

```bash
dapr init
```

Wait for the update to finish, and you're good to go!
Make sure you have the right runtime version (0.6.0) with:

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

```bash
dapr uninstall --kubernetes
```

It's fine to ignore any errors that might show up.

If you previously installed Dapr using __Helm 2.X__:

```bash
helm del --purge dapr
```

If you previously installed Dapr using __Helm 3.X__:

```bash
helm uninstall dapr -n dapr-system
```

```bash
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](https://docs.dapr.io/getting-started/install-dapr/#install-with-helm-advanced) 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
```

## Breaking Changes

### Actor Healthz API

Language specific Actor SDKs must expose /healthz endpoint and return 200. All actors SDKs must be upgraded to the latest version.

### Separated Dapr sidecar image

For this release, we split the Dapr runtime binary (daprd) from daprio/dapr image to reduce the size of sidecar image. You must confirm that you deploy Dapr to Kubernetes cluster using the latest 0.6.0 Dapr cli or helm chart.

### dapr-operator.yaml location change for `dapr init --kubernetes`

`dapr init --kubernetes` installs Dapr using dapr-operator.yaml deployment yaml. This release has changed the location of this yaml to [GitHub Release asset](https://github.com/dapr/dapr/releases). You must use the latest CLI. Otherwise, old Dapr CLI will be unable to install the latest Dapr to your Kubernetes cluster.
