Skip to content

Commit 29ae80d

Browse files
committed
syz-cluster: update README
Include more details about the system.
1 parent 01c07bf commit 29ae80d

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

syz-cluster/README.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,40 @@
1+
`syz-cluster` is a distributed patch series fuzzing that is relying on syzkaller.
2+
It's deployed at https://ci.syzbot.org.
3+
4+
## Overview
5+
6+
The system is to be deployed on a K8S cluster. The main services are:
7+
* `dashboard`: the web interface, read-only.
8+
* `controller`: manages the state of the system, provides
9+
[API](./pkg/api/client.go) for other components, schedules fuzzing sessions.
10+
* `series-tracker`: polls LKML git archives for the new series.
11+
* `reporter-server`: generates new reports, provides API for actual reporter
12+
implementations.
13+
* `email-reporter`: sends reports over email, handles incoming email commands.
14+
15+
The actual patch processing is orchestrated by Argo Workflows: see [the
16+
template](./pkg/workflow/template.yaml). It relies on the following processing
17+
steps:
18+
* `workflow/triage-step`
19+
* `workflow/build-step`
20+
* `workflow/boot-step`
21+
* `workflow/fuzz-step`
22+
23+
Triage and build steps need the actual kernel checkouts. The base kernel repo is
24+
hosted on a shared network disk and is regularly updated by the scripts in
25+
`kernel-disk`.
26+
27+
The system can be deployed in multiple environments, which is achieved with the
28+
help of Kustomize. Depending on the actual deployment target, different pieces of
29+
configuration are applied:
30+
* `overlays/minikube`: the local dev environment.
31+
* `overlays/gke/staging`: the staging prod environment.
32+
* `overlays/gke/prod`: https://ci.syzbot.org.
33+
34+
`global-config.yaml` is the main configuration file of the system - it
35+
determines the mailing lists to poll, configures resource usage and the actual
36+
reporting.
37+
138
## Local installation steps
239

340
1. Install and start minikube: https://minikube.sigs.k8s.io/docs/start/
@@ -26,11 +63,14 @@ $ make k8s-config-argo-wait
2663
$ make k8s-config-dev | kubectl apply -f -
2764
$ make migrate-job.yaml | kubectl create -f -
2865
```
29-
5. (Optional) Pre-fetch the kernel git repository:
66+
5. Pre-fetch the kernel git repository:
3067
```
3168
$ make fetch-kernels-once.yaml | kubectl create -f -
3269
```
3370

71+
Note that actual series processing won't start until the job created in (5)
72+
finishes.
73+
3474
## Developmental tips
3575

3676
1. Install Argo Workflows client: https://github.com/argoproj/argo-workflows/releases

0 commit comments

Comments
 (0)