digraph gitlabpagesminio {
        label="high availability GitLab pages and Minio design brainstorm, August 2021"
        node [shape=box]
        compound=true

        subgraph "clusterpages" {
                label="GitLab pages cluster\nreplicated in multiple hosts"
                labelloc="bottom"
                glp [ label="GitLab Pages\nwebserver" ]
                minio [ label="Minio" ]
        }
        subgraph "clusterhosts" {
                label="GitLab hosts"
                labelloc=bottom

                rails [ label="GitLab rails app" ]
                git [ label="Gitaly server" ]

                runner [ label="GitLab runners"]
        }
        subgraph "clusterusers" {
                label="users"
                labelloc="bottom"
                TPA
                GitLab_user [label="GitLab user"]
                public
        }
        rails -> minio [label="push"]
        glp -> rails [label="caches\nconfig"]
        { rails, git } -> runner [label="pull"]
        runner -> rails [label="push"]
        glp -> minio [label="caches\ncontent"]

        TPA -> puppet
        puppet -> rails [taillabel="deploys" lhead="clusterhosts" ]
        puppet -> glp [lhead="clusterpages" ]
        GitLab_user -> git [label="git\npush/pull"]
        public -> glp [ label="browses" ]
}
                
