JetStream KV
Detailed information on the JetStream KV state store component
Component format
To setup a JetStream KV state store create a component of type state.jetstream
. See this guide on how to create and apply a state store configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
spec:
type: state.jetstream
version: v1
metadata:
- name: natsURL
value: "nats://localhost:4222"
- name: jwt
value: "eyJhbGciOiJ...6yJV_adQssw5c" # Optional. Used for decentralized JWT authentication
- name: seedKey
value: "SUACS34K232O...5Z3POU7BNIL4Y" # Optional. Used for decentralized JWT authentication
- name: bucket
value: "<bucketName>"
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.
Spec metadatafield
Field | Required | Details | Example |
---|---|---|---|
natsURL | Y | NATS server address URL | “nats://localhost:4222 ” |
jwt | N | NATS decentralized authentication JWT | “eyJhbGciOiJ…6yJV_adQssw5c ” |
seedKey | N | NATS decentralized authentication seed key | “SUACS34K232O…5Z3POU7BNIL4Y ” |
bucket | Y | JetStream KV bucket name | “<bucketName>” |
Create a NATS server
You can run a NATS Server with JetStream enabled locally using Docker:
docker run -d -p 4222:4222 nats:latest -js
You can then interact with the server using the client port: localhost:4222
.
Install NATS JetStream on Kubernetes by using the helm:
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm install my-nats nats/nats
This installs a single NATS server into the default
namespace. To interact with NATS, find the service with: kubectl get svc my-nats
.
Creating a JetStream KV bucket
It is necessary to create a key value bucket, this can easily done via NATS CLI.
nats kv add <bucketName>
Related links
- Basic schema for a Dapr component
- Read this guide for instructions on configuring state store components
- State management building block
- JetStream Documentation
- Key Value Store Documentation
- NATS CLI
Last modified July 27, 2022: Remove namespace element from component examples (#2647) (ff9de5c8)