49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
from diagrams import Cluster, Diagram, Edge
|
|
from diagrams.custom import Custom
|
|
from diagrams.onprem.certificates import LetsEncrypt
|
|
from diagrams.onprem.database import PostgreSQL
|
|
from diagrams.onprem.logging import Loki
|
|
from diagrams.onprem.monitoring import Grafana
|
|
from diagrams.onprem.network import Nginx
|
|
from diagrams.programming.flowchart import InputOutput
|
|
from diagrams.programming.framework import Vue
|
|
from diagrams.programming.language import Nodejs
|
|
|
|
with Diagram("Dwengo-1 architectuur", filename="docs/architecture/schema", show=False):
|
|
ingress = Nginx("Reverse Proxy")
|
|
certificates = LetsEncrypt("SSL")
|
|
|
|
with Cluster("Dwengo VZW"):
|
|
dwengo = Custom("Dwengo", "../../assets/img/dwengo-groen-zwart.png")
|
|
|
|
with Cluster("Dwengo-1"):
|
|
frontend = Vue("/")
|
|
backend = Nodejs("/api")
|
|
identity_provider = Custom("IDP", "../../assets/img/keycloak.png")
|
|
|
|
database = PostgreSQL("Database")
|
|
orm = InputOutput("MikroORM")
|
|
orm >> Edge(label="map") << database
|
|
|
|
with Cluster("Observability"):
|
|
logging = Loki("Logging")
|
|
logging << Edge(color="firebrick", style="dashed") << Grafana("Monitoring")
|
|
|
|
dependencies = [
|
|
dwengo,
|
|
logging,
|
|
orm
|
|
]
|
|
|
|
backend >> dependencies
|
|
|
|
service = [
|
|
frontend,
|
|
backend,
|
|
identity_provider,
|
|
certificates
|
|
]
|
|
|
|
ingress \
|
|
>> Edge(color="darkgreen") \
|
|
<< service
|