|
| 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 | + |
1 | 38 | ## Local installation steps |
2 | 39 |
|
3 | 40 | 1. Install and start minikube: https://minikube.sigs.k8s.io/docs/start/ |
@@ -26,11 +63,14 @@ $ make k8s-config-argo-wait |
26 | 63 | $ make k8s-config-dev | kubectl apply -f - |
27 | 64 | $ make migrate-job.yaml | kubectl create -f - |
28 | 65 | ``` |
29 | | -5. (Optional) Pre-fetch the kernel git repository: |
| 66 | +5. Pre-fetch the kernel git repository: |
30 | 67 | ``` |
31 | 68 | $ make fetch-kernels-once.yaml | kubectl create -f - |
32 | 69 | ``` |
33 | 70 |
|
| 71 | +Note that actual series processing won't start until the job created in (5) |
| 72 | +finishes. |
| 73 | + |
34 | 74 | ## Developmental tips |
35 | 75 |
|
36 | 76 | 1. Install Argo Workflows client: https://github.com/argoproj/argo-workflows/releases |
|
0 commit comments