Initial commit: Infrastructure documentation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
97
diagrams/k8s_cluster_diagram.py
Normal file
97
diagrams/k8s_cluster_diagram.py
Normal file
@@ -0,0 +1,97 @@
|
||||
from diagrams import Cluster, Diagram, Edge
|
||||
from diagrams.k8s.network import Ingress
|
||||
from diagrams.k8s.compute import Deployment, StatefulSet
|
||||
from diagrams.k8s.storage import PVC, StorageClass
|
||||
from diagrams.onprem.network import Opnsense
|
||||
from diagrams.onprem.certificates import CertManager
|
||||
from diagrams.onprem.proxmox import ProxmoxVE
|
||||
from diagrams.onprem.vcs import Gitea
|
||||
from diagrams.generic.os import Windows
|
||||
|
||||
graph_attr = {
|
||||
"fontsize": "13",
|
||||
"pad": "0.6",
|
||||
"nodesep": "0.5",
|
||||
"ranksep": "1.0",
|
||||
"splines": "ortho",
|
||||
}
|
||||
|
||||
with Diagram(
|
||||
"ExpertFab Infrastruktur",
|
||||
filename="k8s_cluster",
|
||||
outformat="png",
|
||||
show=False,
|
||||
direction="TB",
|
||||
graph_attr=graph_attr,
|
||||
):
|
||||
# ── Physische Ebene ───────────────────────────────────────────────────────
|
||||
with Cluster("Proxmox Cluster efproxcl02 – 95.156.232.42"):
|
||||
|
||||
with Cluster("efproxcl02n01 – 64 vCPU / 128 GB"):
|
||||
fw = Opnsense("efscfw01\nOPNsense / FW\n10.42.70.1")
|
||||
n01_kctl = ProxmoxVE("efsckubctl\nK3s control plane")
|
||||
n01_kn02 = ProxmoxVE("efsckubnode02\nK3s worker")
|
||||
n01_smtp = ProxmoxVE("efsmtprelay")
|
||||
n01_trade = ProxmoxVE("eftrade01")
|
||||
n01_git = Gitea("efgit01 / Gitea\ngit.expertfab.de")
|
||||
|
||||
with Cluster("efproxcl02n02 – 64 vCPU / 128 GB"):
|
||||
n02_kn1 = ProxmoxVE("efsckubnode1\nK3s worker")
|
||||
n02_af = ProxmoxVE("efscairflow01\nAirflow")
|
||||
n02_veeam = ProxmoxVE("efscveeam01\nVeeam Backup")
|
||||
n02_dc = Windows("efscdc01\nDomain Controller")
|
||||
n02_print = ProxmoxVE("efscprint01\nPrintserver")
|
||||
n02_moni = ProxmoxVE("efscmoni01\nMonitoring")
|
||||
|
||||
# ── Logische K3s-Ebene ────────────────────────────────────────────────────
|
||||
# K3s läuft auf: efsckubctl (control) + efsckubnode1 + efsckubnode02
|
||||
with Cluster("K3s Cluster (efsckubctl · efsckubnode1 · efsckubnode02)"):
|
||||
|
||||
cert = CertManager("cert-manager\nLet's Encrypt")
|
||||
traefik = Ingress("Traefik Ingress\n10.42.71.60")
|
||||
cert >> traefik
|
||||
|
||||
with Cluster("erpnext – expertfab.de / www.expertfab.de"):
|
||||
nginx = Deployment("Nginx")
|
||||
gunicorn = Deployment("Gunicorn")
|
||||
workers = Deployment("Workers\ndefault / short / long")
|
||||
mariadb = StatefulSet("MariaDB 10.6")
|
||||
df_cache = Deployment("DragonflyDB\ncache")
|
||||
df_queue = Deployment("DragonflyDB\nqueue")
|
||||
nginx >> gunicorn >> workers
|
||||
[gunicorn, workers] >> mariadb
|
||||
[gunicorn, workers] >> df_cache
|
||||
workers >> df_queue
|
||||
|
||||
with Cluster("paperless – docs.expertfab.de"):
|
||||
paperless = Deployment("Paperless-NGX")
|
||||
|
||||
with Cluster("zitadel – auth.expertfab.de"):
|
||||
zitadel = Deployment("Zitadel")
|
||||
|
||||
with Cluster("rabbitmq – api.expertfab.de"):
|
||||
fastapi = Deployment("FastAPI")
|
||||
|
||||
with Cluster("coworkbase – coworkbase.de"):
|
||||
cowork = Deployment("Coworkbase")
|
||||
|
||||
with Cluster("qubicticker – qubicticker.qchief.io"):
|
||||
ticker = Deployment("Qubicticker")
|
||||
|
||||
traefik >> [nginx, paperless, zitadel, fastapi, cowork, ticker]
|
||||
|
||||
with Cluster("Longhorn Storage"):
|
||||
sc = StorageClass("longhorn")
|
||||
pvc_mariadb = PVC("MariaDB 10 Gi RWO")
|
||||
pvc_sites = PVC("Sites 10 Gi RWX")
|
||||
pvc_logs = PVC("Logs 5 Gi RWX")
|
||||
pvc_queue = PVC("Queue 2 Gi RWO")
|
||||
sc >> [pvc_mariadb, pvc_sites, pvc_logs, pvc_queue]
|
||||
mariadb >> Edge(style="dashed") >> pvc_mariadb
|
||||
gunicorn >> Edge(style="dashed") >> pvc_sites
|
||||
nginx >> Edge(style="dashed") >> pvc_logs
|
||||
df_queue >> Edge(style="dashed") >> pvc_queue
|
||||
|
||||
# ── Verbindungen ──────────────────────────────────────────────────────────
|
||||
fw >> traefik
|
||||
n01_git >> Edge(label="image pull", style="dashed") >> nginx
|
||||
Reference in New Issue
Block a user