Exemplo n.º 1
0
def get_common_architecture(cloud_provider, filename, container_registry,
                            k8s_cluster_name, k8s_engine_name):
    with Diagram(
            f"QHub Architecture: {cloud_provider}",
            filename=f'{filename}',
            show=False,
            direction="TB",
    ):
        with Cluster(cloud_provider):
            gcr = ContainerRegistry(container_registry)
            with Cluster(k8s_cluster_name):
                kube_engine = KubernetesEngine(k8s_engine_name)

                conda_pvc = PersistentVolume('Conda')
                nfs_pvc = PersistentVolume('NFS')
                elb = LoadBalancing('Ingress')

                with Cluster('Master'):
                    general = Node('general')
                    Node('user')
                    Node('worker')
                    general << kube_engine

                with Cluster("Pods"):
                    dask_gateway = Pod('Dask Gateway')
                    jupyterhub = Pod('JupyterHub')
                    dask_scheduler = Pod('Dask Scheduler')
                    nfs_server = Pod('NFS Server')
                    conda_store = Pod('Conda Store')
                    nginx = Pod('Nginx')
                    Pod('Cert Manager')
                    image_puller = Pod('Image Puller')

        nginx >> elb
        nginx >> jupyterhub
        [nfs_server, conda_store, dask_gateway] << jupyterhub
        [conda_store, dask_scheduler] << dask_gateway
        image_puller >> gcr
        nfs_server >> nfs_pvc
        conda_store >> conda_pvc
        Helm('Helm') >> kube_engine
Exemplo n.º 2
0
def get_common_architecture(cloud_provider, filename, container_registry,
                            k8s_cluster_name, k8s_engine_name):
    with Diagram(
            f"QHub Architecture: {cloud_provider}",
            filename=f"{filename}",
            show=False,
            direction="TB",
    ):
        with Cluster(cloud_provider):
            gcr = ContainerRegistry(container_registry)
            with Cluster(k8s_cluster_name):
                kube_engine = KubernetesEngine(k8s_engine_name)

                conda_pvc = PersistentVolume("Conda")
                nfs_pvc = PersistentVolume("NFS")
                elb = LoadBalancing("Ingress")

                with Cluster("Master"):
                    general = Node("general")
                    Node("user")
                    Node("worker")
                    general << kube_engine

                with Cluster("Pods"):
                    dask_gateway = Pod("Dask Gateway")
                    jupyterhub = Pod("JupyterHub")
                    dask_scheduler = Pod("Dask Scheduler")
                    nfs_server = Pod("NFS Server")
                    conda_store = Pod("Conda Store")
                    nginx = Pod("Nginx")
                    Pod("Cert Manager")
                    image_puller = Pod("Image Puller")

        nginx >> elb
        nginx >> jupyterhub
        [nfs_server, conda_store, dask_gateway] << jupyterhub
        [conda_store, dask_scheduler] << dask_gateway
        image_puller >> gcr
        nfs_server >> nfs_pvc
        conda_store >> conda_pvc
        Helm("Helm") >> kube_engine
Exemplo n.º 3
0
os.chdir(os.path.dirname(__file__))

with Diagram(
        "Notebook to TAP",
        show=False,
        filename="notebook-tap",
        outformat="png",
):
    user = User("End User")

    with Cluster("Kubernetes"):
        ingress = LoadBalancing("NGINX Ingress")

        with Cluster("Nublado"):
            hub = KubernetesEngine("Hub")
            proxy = KubernetesEngine("Proxy")
            notebook = KubernetesEngine("Notebook")
            proxy >> hub
            hub >> notebook
            proxy >> notebook

        with Cluster("TAP"):
            tap = KubernetesEngine("TAP")
            schema = SQL("MySQL Schema DB")
            uws = SQL("PostgreSQL UWS")

        with Cluster("Gafaelfawr"):
            gafaelfawr = KubernetesEngine("Gafaelfawr")
            redis = Memorystore("Redis")
            cloudsql = SQL("Cloud SQL")
Exemplo n.º 4
0
os.chdir(os.path.dirname(__file__))

with Diagram(
    "Portal to TAP",
    show=False,
    filename="portal-tap",
    outformat="png",
):
    user = User("End User")

    with Cluster("Kubernetes"):
        ingress = LoadBalancing("NGINX Ingress")

        with Cluster("Portal"):
            portal_1 = KubernetesEngine("Portal")
            portal_2 = KubernetesEngine("Portal")
            portal_redis = Memorystore("Redis")
            portal_1 >> portal_redis
            portal_2 >> portal_redis

        with Cluster("TAP"):
            tap = KubernetesEngine("TAP")
            schema = SQL("MySQL Schema DB")
            uws = SQL("PostgreSQL UWS")

        with Cluster("Gafaelfawr"):
            gafaelfawr = KubernetesEngine("Gafaelfawr")
            redis = Memorystore("Redis")
            cloudsql = SQL("Cloud SQL")
Exemplo n.º 5
0
with Diagram(
        "Gafaelfawr",
        show=False,
        filename="architecture",
        outformat="png",
        graph_attr=graph_attr,
        node_attr=node_attr,
):
    user = User("End User")

    with Cluster("Kubernetes"):
        ingress = LoadBalancing("NGINX Ingress")

        with Cluster("Gafaelfawr"):
            server = KubernetesEngine("Server")
            redis = KubernetesEngine("Redis")
            storage = PersistentDisk("Redis Storage")
            KubernetesEngine("Background")

            user >> ingress >> server >> redis >> storage

        app = KubernetesEngine("Application")

        ingress >> app

    idp = Server("Identity Provider")

    server >> idp
    user >> idp
Exemplo n.º 6
0
with Diagram(
        "A&A",
        show=False,
        filename="architecture",
        outformat="png",
        graph_attr=graph_attr,
):
    user = User("End User")

    with Cluster("Science Platform"):
        filestore = Filestore("POSIX Filesystem")

        with Cluster("Authentication"):
            auth_ingress = LoadBalancing("NGINX Ingress")
            auth_server = KubernetesEngine("Server")
            storage = SQL("Metadata Store")
            redis = KubernetesEngine("Redis")
            redis_storage = PersistentDisk("Redis Storage")

            user >> auth_ingress >> auth_server >> redis >> redis_storage
            auth_server >> storage

        with Cluster("Notebook Aspect"):
            notebook_ingress = LoadBalancing("NGINX Ingress")
            hub = KubernetesEngine("Hub")
            session_storage = SQL("Session Storage")
            notebook = KubernetesEngine("Notebook")

            auth_server << notebook_ingress
            user >> notebook_ingress >> hub >> session_storage
Exemplo n.º 7
0
        outformat="png",
        graph_attr=graph_attr,
):
    users = Users("End Users")

    with Cluster("NCSA"):
        cilogon = Server("CILogon")
        comanage = Server("COmanage")
        ldap = Server("LDAP")

        users >> cilogon >> comanage >> ldap
        users >> comanage

    with Cluster("Science Platform"):
        ingress = LoadBalancing("NGINX Ingress")
        notebook = KubernetesEngine("Notebook")
        vo = KubernetesEngine("VO Services")

        redis = KubernetesEngine("Redis")
        storage = PersistentDisk("Redis Storage")

        with Cluster("New Services"):
            control = KubernetesEngine("Account UI")
            tokens = KubernetesEngine("Token Issuer")
            authz = KubernetesEngine("Authorizer")
            quota = KubernetesEngine("Quota Manager")

        log_storage = PersistentDisk("Log Storage")

        users >> ingress >> notebook >> vo
        ingress >> cilogon
Exemplo n.º 8
0
}

with Diagram(
        "Token management",
        show=False,
        filename="architecture",
        outformat="png",
        graph_attr=graph_attr,
        node_attr=node_attr,
):
    user = User("End User")
    frontend = React("Web UI")

    with Cluster("Kubernetes"):
        ingress = LoadBalancing("NGINX Ingress")
        kafka = KubernetesEngine("Kafka")

        with Cluster("Gafaelfawr"):
            server = KubernetesEngine("Server")
            postgresql = SQL("PostgreSQL")
            redis = Datastore("Redis")
            redis_storage = PersistentDisk("Redis Storage")

            user >> frontend >> ingress >> server >> redis >> redis_storage
            server >> postgresql

            kafka_listener = KubernetesEngine("Kafka Listener")

            server >> kafka >> kafka_listener >> postgresql

            housekeeping = KubernetesEngine("Housekeeping")