@startuml deployment actor "Runboat UI\n(Browser)" as RunboatUI component Runboat interface "WebUI: /builds, /builds/{name}\nSSE: /build-events\nAPI: /docs, /api/v1/...\n(8000)" as API interface "Runboat Webhook\n/webhooks/github" as Webhook interface "HTTP\n(80)" as IngressHTTP actor "Builds UI\n(Browser)" as BuildsUI component Kubernetes { collections "Builds\n(Deployment,\nPersistentVolumeClaim,\nJob,\n...)" as Builds interface "HTTP\n(8069)" as BuildsHTTP component Ingress } interface "Kubernetes API\n(HTTPS)" as K8SAPI component GitHub interface "GitHub API\nhttps://api.github.com" as GitHubAPI interface "Git\nhttps://github.com" as Git database Postgres Runboat -- Webhook API -- Runboat Git -- GitHub GitHubAPI -- GitHub Webhook <-- GitHub : "Events:\npush,\npull_request" Runboat --> GitHubAPI : "Get Commit Info,\nSend Status updates" RunboatUI <--> API Builds - BuildsHTTP BuildsHTTP <- Ingress Builds --> Git : "git clone" Builds -- Postgres IngressHTTP -- Ingress BuildsUI --> IngressHTTP K8SAPI - Kubernetes Runboat <-> K8SAPI : "kubectl / HTTPS" @enduml