Deploy Dapr on 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
Create cluster
You can install Dapr on any Kubernetes cluster. Here are some helpful links:
- Setup Minikube Cluster
- Setup Azure Kubernetes Service Cluster
- Setup Google Cloud Kubernetes Engine
- Setup Amazon Elastic Kubernetes Service
Hybrid clusters
Both the Dapr CLI and the Dapr Helm chart automatically deploy with affinity for nodes with the labelkubernetes.io/os=linux
. You can deploy Dapr to Windows nodes if your application requires it. For more information see Deploying to a hybrid Linux/Windows Kubernetes cluster.
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.
Target cluster
Make sure the correct “target” cluster is set. Checkkubectl context (kubectl config get-contexts)
to verify. You can set a different context using kubectl config use-context <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.
Note
The latest Dapr helm chart no longer supports Helm v2. Please migrate from Helm v2 to Helm v3 by following this guide.Add and install Dapr Helm chart
-
Make sure Helm 3 is installed on your machine
-
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
-
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.