Deploy Dapr on a Kubernetes cluster

Follow these steps to deploy Dapr on Kubernetes.

When setting up Kubernetes you can use either the Dapr CLI or Helm.

As part of the Dapr initialization the following pods are installed:

  • dapr-operator: Manages component updates and Kubernetes services endpoints for Dapr (state stores, pub/subs, etc.)
  • dapr-sidecar-injector: Injects Dapr into annotated deployment pods
  • dapr-placement: Used for actors only. Creates mapping tables that map actor instances to pods
  • dapr-sentry: Manages mTLS between services and acts as a certificate authority

Prerequisites

  • Install Dapr CLI
  • Install kubectl
  • Kubernetes cluster (see below if needed)

Create cluster

You can install Dapr on any Kubernetes cluster. Here are some helpful links:

Install with Dapr CLI

You can install Dapr to a Kubernetes cluster using the Dapr CLI.

Install Dapr

The -k flag initializes Dapr on the Kubernetes cluster in your current context.

Run on your local machine:

dapr init -k
⌛  Making the jump to hyperspace...
ℹ️  Note: To install Dapr using Helm, see here:  https://github.com/dapr/docs/blob/master/getting-started/environment-setup.md#using-helm-advanced

✅  Deploying the Dapr control plane to your cluster...
✅  Success! Dapr has been installed to namespace dapr-system. To verify, run "dapr status -k" in your terminal. To get started, go here: https://aka.ms/dapr-getting-started

Install in custom namespace

The default namespace when initializing Dapr is dapr-system. You can override this with the -n flag.

dapr init -k -n mynamespace

Install in highly available mode:

You can run Dapr with 3 replicas of each control plane pod in the dapr-system namespace for production scenarios.

dapr init -k --enable-ha=true

Disable mTLS

Dapr is initialized by default with mTLS. You can disable it with:

dapr init -k --enable-mtls=false

Uninstall Dapr on Kubernetes with CLI

dapr uninstall --kubernetes

Upgrade Dapr on a cluster

To upgrade Dapr on a Kubernetes cluster you can use the CLI. See upgrade Dapr on Kubernetes for more information.

Install with Helm (advanced)

You can install Dapr on Kubernetes using a Helm 3 chart.

Add and install Dapr Helm chart

  1. Make sure Helm 3 is installed on your machine

  2. Add Helm repo and update

    helm repo add dapr https://dapr.github.io/helm-charts/
    helm repo update
    # See which chart versions are available
    helm search repo dapr --devel --versions
    
  3. Install the Dapr chart on your cluster in the dapr-system namespace.

    helm upgrade --install dapr dapr/dapr \
    --version=1.0.0 \
    --namespace dapr-system \
    --create-namespace \
    --wait
    

To install in high availability mode:

```bash
helm upgrade --install dapr dapr/dapr \
--version=1.0.0 \
--namespace dapr-system \
--create-namespace \
--set global.ha.enabled=true \
--wait
```

See Guidelines for production ready deployments on Kubernetes for more information on installing and upgrading Dapr using Helm.

Verify installation

Once the chart installation is complete, verify that the dapr-operator, dapr-placement, dapr-sidecar-injector and dapr-sentry pods are running in the dapr-system namespace:

kubectl get pods --namespace dapr-system
NAME                                     READY     STATUS    RESTARTS   AGE
dapr-dashboard-7bd6cbf5bf-xglsr          1/1       Running   0          40s
dapr-operator-7bd6cbf5bf-xglsr           1/1       Running   0          40s
dapr-placement-7f8f76778f-6vhl2          1/1       Running   0          40s
dapr-sidecar-injector-8555576b6f-29cqm   1/1       Running   0          40s
dapr-sentry-9435776c7f-8f7yd             1/1       Running   0          40s

Uninstall Dapr on Kubernetes

helm uninstall dapr --namespace dapr-system

More information

  • Read this guide for recommended Helm chart values for production setups
  • See this page for details on Dapr Helm charts.

Next steps