k8s.io/test-infra@v0.0.0-20240520184403-27c6b4c223d8/docs/architecture.dot (about) 1 # Update SVG with this command: 2 # dot architecture.dot -Tsvg -oarchitecture.svg 3 4 digraph G { 5 label="Kubernetes Test Infrastructure (Last updated 2021-03-04)" # UPDATE WHEN CHANGED! 6 labelloc="t" 7 graph[compound=true] 8 9 # external services 10 legend_ext, GCS, PubSub, "GitHub\nthrough\nghproxy", BigQuery [style=filled, fillcolor=gray, shape=square] 11 12 # things that host websites 13 legend_site Spyglass, Deck, "Testgrid (closed)", Gubernator, Velodrome, Boskos, Greenhouse [shape=house, fillcolor=lightblue, style=filled] 14 15 legend_cloud GCE, GKE, AWS [shape=doubleoctagon, fillcolor=gray, style=filled] 16 17 legend_prowjob Metrics, Triage, ProwJobs [shape=square, fillcolor=dodgerblue1, style=filled] 18 19 legend_stock InfluxDB, Prometheus [shape=cylinder, fillcolor=gray98, style=filled] 20 21 # handy links! 22 Triage [href="https://go.k8s.io/triage"] 23 Gubernator [href="https://gubernator.k8s.io"] 24 "Testgrid (closed)" [href="https://testgrid.k8s.io"] 25 Deck [href="https://prow.k8s.io"] 26 BigQuery [href="https://bigquery.cloud.google.com/table/k8s_infra_kettle:build.week"] 27 28 subgraph cluster_Prow { 29 label="Prow" 30 color=blue 31 Hook [label="Hook\nhandle GitHub events"] 32 Deck [label="Deck\nfrontend"] 33 Plank [label="Plank\nProwJob controller"] 34 Sinker [label="Sinker\ndeletes old\npods/ProwJobs"] 35 Horologium [label="Horologium\ncreate periodic ProwJobs"] 36 Job 37 ApiServer [label="Kubernetes\nAPI Server" shape=septagon] 38 } 39 40 subgraph cluster_legend { 41 label="Legend" 42 rank=sink 43 legend_ext [label="External\nService"] 44 legend_site [label="Serves\nHTTP"] 45 legend_cloud [label="Cloud\nor\nCloud service"] 46 legend_prowjob [label="ProwJobs"] 47 legend_stock [label="Hosted stock"] 48 } 49 50 # CONNECTIONS START HERE: 51 # graphviz's dot rendering engine generally tries to lay things out 52 # top to bottom, following edges. dir="back" is an orientation hint 53 # to the layout engine, to try to keep hierarchy in a sensible order. 54 # hack to get legend near the bottom 55 "Testgrid (closed)" -> legend_ext [style="invis"] 56 57 Kettle [label="Kettle\nget GCS results into BQ"] 58 59 "GitHub\nthrough\nghproxy" -> Gubernator [label="PR events", dir="both"] 60 "GitHub\nthrough\nghproxy" -> Hook [label="events"] 61 GCS -> Gubernator [dir="back"] 62 Gubernator -> "Testgrid (closed)" [dir="back"] 63 Job -> GCS [label="publish\nstarted.json, finished.json,\nbuild-log.txt, artifacts/", dir="both"] 64 65 Plank -> "GitHub\nthrough\nghproxy" [label="update PR status\ncomment failures", ltail="cluster_Prow"] 66 67 subgraph cluster_Prow { 68 Plank -> ApiServer 69 Splice -> ApiServer 70 Deck -> ApiServer [label="read"] 71 Hook -> ApiServer [label="create ProwJob"] 72 ApiServer -> Job [label="start Pod"] 73 ApiServer -> Sinker [dir="back"] 74 ApiServer -> Horologium [dir="back"] 75 } 76 77 GCS -> PubSub 78 PubSub -> Kettle [label="read"] 79 Kettle -> BigQuery [label="write"] 80 BigQuery -> Triage 81 BigQuery -> Metrics 82 GCS -> Triage [dir="back"] 83 GCS -> "Testgrid (closed)" 84 GCS -> Spyglass 85 Spyglass -> GKE [dir="both"] 86 Metrics -> InfluxDB 87 Prometheus -> InfluxDB 88 InfluxDB -> Velodrome 89 Plank -> Prometheus [ltail="cluster_Prow"] 90 Boskos -> Prometheus 91 Boskos -> ProwJobs [dir="both"] 92 Boskos -> GCE [dir="both"] 93 Boskos -> GKE [dir="both"] 94 ProwJobs -> AWS [dir="both"] 95 ProwJobs -> GKE [dir="both"] 96 ProwJobs -> GCE [dir="both"] 97 ProwJobs -> Greenhouse [dir="both"] 98 }