https://github.com/prodyna/dapr-demo
DAPR Demo application
https://github.com/prodyna/dapr-demo
dapr kubernetes terraform
Last synced: 3 months ago
JSON representation
DAPR Demo application
- Host: GitHub
- URL: https://github.com/prodyna/dapr-demo
- Owner: PRODYNA
- License: mit
- Created: 2022-03-09T19:52:38.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-13T00:44:32.000Z (almost 2 years ago)
- Last Synced: 2025-04-01T20:44:57.286Z (4 months ago)
- Topics: dapr, kubernetes, terraform
- Language: Go
- Homepage:
- Size: 492 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# demo
DAPR Demo application
## Installation
Configure and lauch minikube
```
minikube config set memory 8000
minikube config set cpus 4
minikube config set kubernetes-version 1.23.3
minikube start
```Once minikube is running enable the ingress controller
```
minikube addons enable ingress
```Read out the IP address of minikube with
```
minikube ip
```and write those entries to your /etc/hosts
```
dapr.minikube backend.minikube grafana.minikube prometheus.minikube
```In the subdirectory terraform run terraform apply, but first only for the resources that create CRDs
```
terraform apply -target=helm_release.kube-prometheus-stack -target=helm_release.dapr-system
```Then create everything else
```
terraform apply
```This will install
* DAPR in the namespace dapr-system
* The business services
* Monitoring### DAPR
DAPR should be available under the http://dapr.minikube and show our services

and the following components

## Number
Number will return an incrementing number
```
curl http://backend.minikube/number
```This call should return an incrementing value
## Checkout
Create a checkout. It does two things
* Call the number service to obtain a number
* Create a message to the topic checkout```
curl -XPOST http://backend.minikube/checkout
```
## OrderSubscribed to the topic checkout
```
curl http://backend.minikube/order
```## Redis
Redis is used for the persistence
```
kubectl -n messaging exec -ti redis-master-0 -- redis-cli --pass redis keys \*
```### State
Redis is a state store
```
kubectl -n messaging exec -ti redis-master-0 -- redis-cli --pass redis hgetall 'number||orderNumber'
```should return something like
```
1) "data"
2) "5"
3) "version"
4) "5"
```### Stream
Streams are used for sending asynchrous messages.
```
kubectl -n messaging exec -ti redis-master-0 -- redis-cli --pass redis xrange checkout - +
```should give you some output like
```
1) 1) "1654699830640-0"
2) 1) "data"
2) "{\"datacontenttype\":\"text/plain\",\"source\":\"checkout\",\"type\":\"com.dapr.event.sent\",\"tracestate\":\"\",\"traceparent\":\"00-22295cc10dd4eb53ae9879363d0e4943-11aac0459158b429-00\",\"data\":\"1\",\"id\":\"e20734c9-607d-4b11-94fd-bd735c43bea4\",\"specversion\":\"1.0\",\"topic\":\"checkout\",\"pubsubname\":\"pubsub\",\"traceid\":\"00-22295cc10dd4eb53ae9879363d0e4943-11aac0459158b429-00\"}"
2) 1) "1654699925789-0"
2) 1) "data"
2) "{\"data\":\"2\",\"source\":\"checkout\",\"pubsubname\":\"pubsub\",\"traceparent\":\"00-7644aab7b8b858c9f99883fe6f6b8b03-07930bba2d1eccc5-00\",\"tracestate\":\"\",\"topic\":\"checkout\",\"traceid\":\"00-7644aab7b8b858c9f99883fe6f6b8b03-07930bba2d1eccc5-00\",\"id\":\"763d3813-887c-4bc1-a50b-94a83f28cfbc\",\"specversion\":\"1.0\",\"datacontenttype\":\"text/plain\",\"type\":\"com.dapr.event.sent\"}"
```## Tips
Restart all business services pods
```
kubectl -n backend get deployments | grep -v NAME | awk '{print $1}' | xargs kubectl -n backend rollout restart deployment
```