Skip to content

Environment Architecture

Genestack is making use of some homegrown solutions, community operators, and OpenStack-Helm. Everything in Genestack comes together to form cloud in a new and exciting way; all built with opensource solutions to manage cloud infrastructure in the way you need it.

They say a picture is worth 1000 words, so here's a picture.

flowchart LR
  %% ─── Class styles ───────────────────────────────────────────
  classDef storage fill:#fdf6e3,stroke:#657b83;
  class LONGHORN,ISCSI,RBD,NFS,STORLAYER,LOCALSTORLAYER storage;

  %% ─── External sources / Artifacts ───────────────────────────
  subgraph "Artifacts & External Input"
    direction TB
    INT["🌐 Internet"]
    A1(OCI Containers)
    A2(Git Repo)
    A3([Helm + Kustomize])
    A1 --> A3
    A2 --> A3
  end

  %% ─── Kubernetes control plane ───────────────────────────────
  subgraph "Kubernetes Control Plane"
    direction TB
    ETCD[(etcd)]
    K1[[K8s API Server]]
    ETCD --> K1
    A3 --> K1
  end

  %% ─── Ingress & CNI / Networking ─────────────────────────────
  subgraph "Ingress & CNI / Networking"
    direction TB
    GWAPI[[Gateway API]]
    CNI[CNI Plugin]
    NET[Kube-OVN]
    OVS["OVS/OVN Switch"]
    NETLAYER[[Networking Layer]]

    INT <--> |Ingress/Egress| GWAPI
    K1 --> GWAPI
    K1 --> CNI
    CNI --> NET
    NET --> OVS
    OVS --> NETLAYER
  end

  %% ─── Storage systems ────────────────────────────────────────
  subgraph "Storage Systems"
    direction TB
    CSI[CSI Plugin]
    LONGHORN[Longhorn]
    STORAGECHOICE{{Storage Driver}}
    ISCSI[iSCSI]
    RBD["RBD (Ceph)"]
    NFS[NFS]
    STORLAYER[[Network Storage]]
    LOCALSTORLAYER[[Local Storage]]

    K1 --> CSI
    CSI --> LONGHORN
    LONGHORN <-->|PVC| K1
    LONGHORN <--> |PVC Replication| STORLAYER
    LONGHORN <--> |PVC| LOCALSTORLAYER

    NETLAYER <--> STORAGECHOICE
    STORAGECHOICE --> ISCSI
    STORAGECHOICE --> RBD
    STORAGECHOICE --> NFS
    STORAGECHOICE --> |LVM| LOCALSTORLAYER

    ISCSI --> STORLAYER
    RBD   --> STORLAYER
    NFS   --> STORLAYER
  end

  %% ─── Observability stack ────────────────────────────────────
  subgraph "Observability"
    direction TB
    EXPORTER(Node / API Exporter)
    PROM(Prometheus)
    AM(Alertmanager)
    GRAF(Grafana)
    TICKET[Trouble-Ticket Sys]

    K1 --> EXPORTER
    EXPORTER --> PROM
    EXPORTER --> GRAF
    PROM --> GRAF
    PROM --> AM
    AM --> TICKET
  end

  %% ─── Provisioning & Operators ───────────────────────────────
  subgraph "K8s Operators & Backing DB/MQ"
    direction TB
    KOPS[K8s Operators]
    MQ[(rabbitMQ)]
    MARIADB[(Mariadb)]
    MEM[(memcacheD)]

    K1 --> KOPS
    KOPS --> MQ
    KOPS --> MARIADB
    KOPS --> MEM
  end

  %% ─── OpenStack integration ──────────────────────────────────
  subgraph "OpenStack Integration"
    direction TB
    OSAPI[(OpenStack API)]
    OSS[[OpenStack Services]]

    OSAPI --> OSS
    OSAPI --> EXPORTER
    OSAPI <--> GWAPI

    OSS <--> MQ
    OSS <--> MARIADB
    OSS <--> MEM
    OSS <--> |Cinder| STORAGECHOICE
    OSS <--> |Neutron| OVS
  end

  %% ─── Compute & identity layer ───────────────────────────────
  subgraph "Compute & Identity"
    direction TB
    IDENTITY[Keystone]
    LIBVIRT[libvirt]
    KVM["KVM (qemu)"]

    OSS --> |Nova Scheduling| LIBVIRT
    LIBVIRT --> |VMs| KVM
    KVM --> |vSwitch| OVS
    IDENTITY --> OSS
  end

The idea behind Genestack is simple, build an Open Infrastructure system that unites Public and Private clouds with a platform that is simple enough for the hobbyist yet capable of exceeding the needs of the enterprise.