MongoDB
Detailed information on the MongoDB state store component
Setup a MongoDB state store
You can run MongoDB locally using Docker:
docker run --name some-mongo -d mongo
You can then interact with the server using localhost:27017
.
The easiest way to install MongoDB on Kubernetes is by using the Helm chart:
helm install mongo stable/mongodb
This will install MongoDB into the default
namespace. To interact with MongoDB, find the service with: kubectl get svc mongo-mongodb
.
For example, if installing using the example above, the MongoDB host address would be:
mongo-mongodb.default.svc.cluster.local:27017
Follow the on-screen instructions to get the root password for MongoDB. The username will be admin
by default.
Create a Dapr component
The next step is to create a Dapr component for MongoDB.
Create the following YAML file named mongodb.yaml
:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: state.mongodb
version: v1
metadata:
- name: host
value: <REPLACE-WITH-HOST> # Required. Example: "mongo-mongodb.default.svc.cluster.local:27017"
- name: username
value: <REPLACE-WITH-USERNAME> # Optional. Example: "admin"
- name: password
value: <REPLACE-WITH-PASSWORD> # Optional.
- name: databaseName
value: <REPLACE-WITH-DATABASE-NAME> # Optional. default: "daprStore"
- name: collectionName
value: <REPLACE-WITH-COLLECTION-NAME> # Optional. default: "daprCollection"
- name: writeconcern
value: <REPLACE-WITH-WRITE-CONCERN> # Optional.
- name: readconcern
value: <REPLACE-WITH-READ-CONCERN> # Optional.
- name: operationTimeout
value: <REPLACE-WITH-OPERATION-TIMEOUT> # Optional. default: "5s"
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.
Example
The following example uses the Kubernetes secret store to retrieve the username and password:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
namespace: <NAMESPACE>
spec:
type: state.mondodb
version: v1
metadata:
- name: host
value: <REPLACE-WITH-HOST>
- name: username
secretKeyRef:
name: <KUBERNETES-SECRET-NAME>
key: <KUBERNETES-SECRET-KEY>
- name: password
secretKeyRef:
name: <KUBERNETES-SECRET-NAME>
key: <KUBERNETES-SECRET-KEY>
...
Apply the configuration
In Kubernetes
To apply the MondoDB state store to Kubernetes, use the kubectl
CLI:
kubectl apply -f mongodb.yaml
Running locally
To run locally, create a components
dir containing the YAML file and provide the path to the dapr run
command with the flag --components-path
.
Last modified February 16, 2021: Merge pull request #1235 from dapr/update-v0.11 (b4e9fbb)