digraph gitlabpages {
        label="high availability GitLab pages design brainstorm, January 2021"

        node [shape=record]
        subgraph "clusterhosts" {
                label="hosts"
                labelloc=bottom

                GitLab [ label="<host> GitLab | <git> gitaly | <CI> CI | <pages> pages" ]
                runner [ label="GitLab runner"]
                GitLab:CI -> runner [label="pull"]
                runner -> GitLab:pages [label="push"]
                cache -> GitLab:pages [label="proxies"]
                puppet
        }
        subgraph "clusterusers" {
                label="users"
                labelloc="bottom"
                TPA
                GitLab_user [label="GitLab user"]
                public
        }
        TPA -> puppet
        puppet -> { runner, cache }
        puppet -> GitLab:host [taillabel="deploys"]
        GitLab_user -> GitLab:git
        public -> cache [ label="browses" ]
}
                
