|
| 1 | +@startuml http-metering-c4 |
| 2 | +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml |
| 3 | + |
| 4 | +LAYOUT_WITH_LEGEND() |
| 5 | + |
| 6 | +title C4 Container Diagram - HTTP Traffic Metering System |
| 7 | + |
| 8 | +Person(client, "End User / Client", "Requests services exposed via Datum Cloud Edge") |
| 9 | + |
| 10 | +System_Boundary(edge_cluster, "Edge Cluster") { |
| 11 | + Container(envoy, "Envoy Gateway Proxy", "Envoy/Go", "Handles ingress HTTP traffic, terminates TLS, enforces WAF/rate-limiting, emits JSON access logs to stdout") |
| 12 | + Container(vector_collector, "billing-usage-collector-vector", "Vector DaemonSet (Billing)", "Tails Envoy container logs, parses JSON access logs, translates to CloudEvents, and forwards them to the Billing System") |
| 13 | + Container(nso, "Network Services Operator", "Go", "Deploys Envoy Gateway and configures EnvoyProxy logging policies") |
| 14 | +} |
| 15 | + |
| 16 | +System_Boundary(control_plane, "Platform Control Plane") { |
| 17 | + Container(billing_system, "Billing System & Service Catalog", "Platform Service", "Handles service registration, event validation, attribution, and storage") |
| 18 | +} |
| 19 | + |
| 20 | +Rel(client, envoy, "Sends HTTPS requests to", "HTTPS") |
| 21 | +Rel(nso, envoy, "Configures & manages", "Kubernetes API / EnvoyProxy CR") |
| 22 | +Rel_D(envoy, vector_collector, "Outputs JSON access logs to", "stdout / container logs") |
| 23 | +Rel_D(vector_collector, billing_system, "Forwards batched events to", "HTTPS CloudEvents") |
| 24 | + |
| 25 | +@enduml |
0 commit comments