Design Proposal
This document contains the design proposal for MultiVAC, based on the stack:
* Flask Server: Web Server
* Redis Server: Cache
* MongoDB: Database
-
Flask is a microframework to develop Web servers in Python.
- Deploy as Kubernetes Deployment
-
MongoDB is a NoSQL document-oriented database.
- Deployed as Stateful Set
-
Redis - (REmote DIrectory Server)is an (in-memory) key-value store.
- Introduction to Redis - In Memory Key Value Datastore
- Using Redis as an LRU (Least Frequently Used) cache
- Deplyed as Kubernetes Deployment.
MultiVAC is developed using Docker contaneis and can deployed in a Kubernetes cluster.
To run MultiVAC locally, was well modify/test the code, see this doc.
- Security
- Secrets
- Add Redis password by adding secrets
- Related redis issue
- [Next Steps] Vault
- [Next Steps] Build own images based on onw registres
- Secrets
- Scalability
- Scale Independently
$ kubectl scale deploy multivac-redis --replicas=4
deployment.extensions/multivac-redis scaled
$ kubectl get pods
NAME READY STATUS
multivac-redis-68bb4787cd-5qvx2 1/1 Running
multivac-redis-68bb4787cd-fl4zz 1/1 Running
multivac-redis-68bb4787cd-l2dsd 1/1 Running
multivac-redis-68bb4787cd-r89nj 1/1 Running
multivac-db-0 1/1 Running
multivac-server-7548df6db-2bbz8 1/1 Running
- Logging
# Logs from Multivac App
kubectl logs -l app=multivac
# Logs from Redis
kubectl logs -l app=multivac,role=cache
# Logs from Mongo
kubectl logs -l app=multivac,role=db
- Monitoring
- Google Cloud has default tools for monitoring
- Automation
- Dynaconf on app
- ConfigMaps
- Manifests
Unorganized stuff :shame:
https://netdevops.me/2017/flask-application-in-a-production-ready-container/
Full redis.conf doc: https://raw.githubusercontent.com/antirez/redis/4.0/redis.conf