The documentation you are viewing is for Dapr v1.10 which is an older version of Dapr. For up-to-date documentation, see the latest version.

Running Dapr with a Kubernetes Job

Use Dapr API in a Kubernetes Job context

Kubernetes Job

The Dapr sidecar is designed to be a long running process, in the context of a Kubernetes Job this behaviour can block your job completion. To address this issue the Dapr sidecar has an endpoint to Shutdown the sidecar.

When running a basic Kubernetes Job you will need to call the /shutdown endpoint for the sidecar to gracefully stop and the job will be considered Completed.

When a job is finish without calling Shutdown your job will be in a NotReady state with only the daprd container running endlessly.

Be sure and use the POST HTTP verb when calling the shutdown API.

apiVersion: batch/v1
kind: Job
  name: job-with-shutdown
      annotations: "true" "with-shutdown"
      - name: job
        image: alpine
        command: ["/bin/sh", "-c", "apk --no-cache add curl && sleep 20 && curl -X POST localhost:3500/v1.0/shutdown"]
      restartPolicy: Never

You can also call the Shutdown from any of the Dapr SDK

package main

import (

    dapr ""

func main() {
  client, err := dapr.NewClient()
  if err != nil {
  defer client.Close()
  defer client.Shutdown()
  // Job