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  }