@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