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
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified July 27, 2022: Remove namespace element from component examples (#2647) (ff9de5c8)