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.
For more information on what is deployed to your Kubernetes cluster read the Kubernetes overview
Prerequisites
Create cluster
You can install Dapr on any Kubernetes cluster. Here are some helpful links:
- Setup KiNd Cluster
- 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 label kubernetes.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.
Ensure correct cluster is set
Make sure the correct “target” cluster is set. Check kubectl context (kubectl config get-contexts)
to verify. You can set a different context using kubectl config use-context <CONTEXT>
.
Run the following command on your local machine to init Dapr on your cluster:
dapr init -k
⌛ Making the jump to hyperspace...
✅ 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
Wait for the installation to complete
You can wait for the installation to complete its deployment with the --wait
flag.
The default timeout is 300s (5 min), but can be customized with the --timeout
flag.
dapr init -k --wait --timeout 600
Uninstall Dapr on Kubernetes with CLI
Run the following command on your local machine to uninstall Dapr on your cluster:
dapr uninstall -k
Install with Helm (advanced)
You can install Dapr on Kubernetes using a Helm 3 chart.
Ensure you are on Helm v3
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.6 \
--namespace dapr-system \
--create-namespace \
--wait
To install in high availability mode:
helm upgrade --install dapr dapr/dapr \
--version=1.6 \
--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.
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.
Verify installation
Once the 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
Next steps
Last modified February 18, 2022: Update setup-jetstream.md (#2200) (428d8c2)