How-To: Install Dapr into a Kubernetes cluster

Install Dapr in a Kubernetes cluster

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 dapr init -k --runtime-version 1.0.0-rc.2 on your local machine:

$ dapr init -k --runtime-version 1.0.0-rc.2

⌛ 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 –runtime-version 1.0.0-rc.2



### Install in highly available mode:

You can run Dapr with 3 replicas of each control plane pod with the exception of the Placement pod in the dapr-system namespace for [production scenarios](https://v1-rc2.docs.dapr.io/operations/hosting/kubernetes/kubernetes-production/).

dapr init -k –enable-ha=true –runtime-version 1.0.0-rc.2


### Disable mTLS

Dapr is initialized by default with [mTLS](https://v1-rc2.docs.dapr.io/concepts/security-concept/#sidecar-to-sidecar-communication). You can disable it with:

dapr init -k –enable-mtls=false –runtime-version 1.0.0-rc.2


### Uninstall Dapr on Kubernetes with CLI

```bash
dapr uninstall --kubernetes

Install with Helm (advanced)

You can install Dapr to Kubernetes cluster 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
    
  3. Create dapr-system namespace on your kubernetes cluster

    kubectl create namespace dapr-system
    
  4. Install the Dapr chart on your cluster in the dapr-system namespace.

    helm install dapr dapr/dapr --namespace dapr-system --version 1.0.0-rc.2
    

Verify installation

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

kubectl get pods -n dapr-system -w
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 -n dapr-system

More information

See this page for details on Dapr helm charts.

Next steps

Last modified January 30, 2021: Update mtls.md (#1118) (10c2d21)