ungleich-graphviz/cdn-flow-traffic.dot

67 lines
2.2 KiB
Plaintext

digraph G {
node [ shape=box ]
# rankdir=BT;
label="CDN flows"
subgraph cluster_user {
label="Outside / in the Internet"
user [ label="User\n(internal/customer)" color=pink ]
client [ label="Web site User\n" color=blue ]
operator [ label="CDN Operator\n" color=green ]
}
subgraph cluster_origin {
label="Origin DC"
origin [ label="Origin Node\nServing example.com" ]
}
client->origin [ label="non-CDN access" style=dashed color=blue ]
subgraph cluster_homedc {
label="HomeDC"
kubemaster [ label="Kubernetes master nodes" ]
kubeworker [ label="Kubernetes worker nodes" ]
subgraph cluster_kubernetes {
label="Kubernetes Workload"
api [ label="Tenant/OpsAPI" ]
ui [ label="User Interface\nPost MVP" ]
db [ label="Database" ]
promhome [ label="Prometheus" ]
grafana [ label="Grafana" ]
}
}
kubemaster->kubeworker [ label="Controls" ]
api->kubeworker [ label="Runs on" ]
subgraph cluster_pops {
label="PoP"
servicenode [ label="Service Node" ]
edgenode [ label="Edge nodes" ]
delivery [ label="Delivery API" ]
prompop [ label="Prometheus" ]
}
delivery->servicenode [ label="Runs on" ]
user->ui [ label="A1. Create configuration" color=pink ]
user->api [ label="A1. Create configuration" style=dashed color=pink ]
ui->api [ label="A2. Create configuration" color=pink ]
api->db [ label="A3. Store data" color=pink ]
kubeworker->delivery [ label="A4. Trigger update" color=pink ]
delivery->edgenode [ label="A5. Reconfigure" color=pink ]
client->edgenode [ label="B1. Request data for example.com" color=blue ]
edgenode->origin [ label="B2. Request data\n(If not cached)" color=blue]
edgenode->client [ label="B3. Return data for example.com" weight=0.2 color=blue ]
promhome->prompop [ label="C1. Pulls metrics" color=green ]
operator->grafana [ label="C2. View monitoring data" color=green ]
grafana->promhome [ label="C3. Gets data" color=green ]
prompop->{edgenode,servicenode} [ label="Monitors" ]
promhome->{api,db} [ label="Monitors" ]
}