diff --git a/notes/mermaid-test.md b/notes/mermaid-test.md new file mode 100644 index 0000000..8dbebb6 --- /dev/null +++ b/notes/mermaid-test.md @@ -0,0 +1,210 @@ +# Mermaid Diagram Rendering Test + +Test file to verify Gitea renders mermaid diagrams correctly. +Delete this file after confirming. + +--- + +## Test 1: HAProxy Architecture (flowchart, top-down) + +Original: `notes/haproxy-guide.md` lines 13-44 + +```mermaid +flowchart TD + client["Client / LAN Traffic"] + vip["UPLINK VIP Address\n192.168.103.200"] + ovnlb["OVN Load Balancer\n(distributes to HA pair\nfor failover)"] + ha1["HAProxy 01\n10.10.10.50\n(container)"] + ha2["HAProxy 02\n10.10.10.51\n(container)"] + ng1["nginx-01\n.60 :80"] + ng2["nginx-02\n.61 :80"] + ng3["nginx-03\n.62 :80"] + + client --> vip --> ovnlb + ovnlb --> ha1 + ovnlb --> ha2 + ha1 --> ng1 + ha1 --> ng2 + ha1 --> ng3 + ha2 --> ng1 + ha2 --> ng2 + ha2 --> ng3 + + style vip fill:#4a90d9,color:#fff + style ovnlb fill:#7b68ee,color:#fff + style ha1 fill:#2ecc71,color:#fff + style ha2 fill:#2ecc71,color:#fff + style ng1 fill:#e67e22,color:#fff + style ng2 fill:#e67e22,color:#fff + style ng3 fill:#e67e22,color:#fff +``` + +--- + +## Test 2: Bridge Topology (subgraphs for nodes) + +Original: `notes/networking-guide.md` lines 81-100 + +```mermaid +flowchart TD + subgraph node1["Node 1 (net-node-01)"] + br1["incusbr0\n10.0.0.1/24"] + c1["c1\n.202"] + c2["c2\n.40"] + nat1["NAT → ens18\n192.168.1.209"] + c1 --- br1 + c2 --- br1 + br1 --> nat1 + end + + subgraph node2["Node 2 (net-node-02)"] + br2["incusbr0\n10.0.0.1/24"] + c3["c3\n.52"] + nat2["NAT → ens18\n192.168.1.150"] + c3 --- br2 + br2 --> nat2 + end + + nat1 --- lan + nat2 --- lan + lan(("LAN\n192.168.1.0/24")) + + node1 ~~~ node2 + + linkStyle 5 stroke:red,stroke-dasharray:5 + linkStyle 6 stroke:red,stroke-dasharray:5 +``` + +> **Key point:** Each node has its own bridge with the same subnet. The +> bridges are NOT connected to each other. + +--- + +## Test 3: OVN Topology (control plane + nodes + tunnels) + +Original: `notes/networking-guide.md` lines 196-227 + +```mermaid +flowchart TD + subgraph cp["OVN Control Plane"] + ovnc["ovn-central\novn-northd + ovsdb-server\nNB: tcp:192.168.1.209:6641\nSB: tcp:192.168.1.209:6642"] + end + + subgraph n1["Node 1 (net-node-01)"] + ctrl1["ovn-controller\novs-vswitchd"] + oc1["c1 (.2)"] + oc2["c2 (.3)"] + ls1["OVN logical switch\n10.10.10.0/24"] + oc1 --- ls1 + oc2 --- ls1 + ctrl1 ~~~ ls1 + end + + subgraph n2["Node 2 (net-node-02)"] + ctrl2["ovn-controller\novs-vswitchd"] + oc3["c3 (.4)"] + ls2["OVN logical switch\n10.10.10.0/24"] + oc3 --- ls2 + ctrl2 ~~~ ls2 + end + + subgraph n3["Node 3 (net-node-03)"] + ctrl3["ovn-controller\novs-vswitchd"] + oc4["c4 (.5)"] + ls3["OVN logical switch\n10.10.10.0/24"] + oc4 --- ls3 + ctrl3 ~~~ ls3 + end + + ovnc -->|proxy devices| ctrl1 + ovnc -->|proxy devices| ctrl2 + ovnc -->|proxy devices| ctrl3 + + ls1 <-->|Geneve tunnel\n192.168.1.209| ls2 + ls2 <-->|Geneve tunnel\n192.168.1.150| ls3 + ls1 <-->|Geneve tunnel\n192.168.1.13| ls3 + + lan(("LAN\n192.168.1.0/24")) + n1 --- lan + n2 --- lan + n3 --- lan +``` + +--- + +## Test 4: Geneve Tunnel Mesh + +Original: `notes/ovn-deep-dive.md` lines 331-349 + +```mermaid +graph LR + n1(("oc-node-01\n.140")) + n2(("oc-node-02\n.141")) + n3(("oc-node-03\n.142")) + + n1 <-->|"Geneve\nUDP 6081\nBFD ✓"| n2 + n2 <-->|"Geneve\nUDP 6081\nBFD ✓"| n3 + n1 <-->|"Geneve\nUDP 6081\nBFD ✓"| n3 + + style n1 fill:#3498db,color:#fff + style n2 fill:#2ecc71,color:#fff + style n3 fill:#e74c3c,color:#fff +``` + +--- + +## Test 5: OVS Bridge Architecture (per-node) + +Original: `notes/ovn-deep-dive.md` lines 305-313 + +```mermaid +flowchart LR + subgraph provider["incusovn7 (provider bridge)"] + nic["incusovn7 ← physical NIC"] + intport["incusovn7b ← internal port"] + patch1["patch-...-to-br-int"] + end + + subgraph integration["br-int (integration bridge)"] + veth["veth* ← instance NICs"] + ovntun["ovn-* ← Geneve tunnels"] + patch2["patch-br-int-to-..."] + brint["br-int ← internal port"] + end + + patch1 <-->|"patch port"| patch2 + + style provider fill:#e8f4fd,stroke:#3498db + style integration fill:#eafaf1,stroke:#2ecc71 +``` + +--- + +## Test 6: Operations Center Architecture + +Original: `notes/operations-center-guide.md` lines 12-45 + +```mermaid +flowchart TD + subgraph proxmox["Proxmox VE Host (pve)\nIntel i9-13900HK · 64 GiB · 20 cores"] + subgraph cluster["Incus Cluster (OVN Geneve · net-prod 10.10.10.0/24)"] + n1["oc-node-01\nVMID 400\n4c/8G/64G\n.140\novn-central"] + n2["oc-node-02\nVMID 401\n4c/8G/50G\n.141"] + n3["oc-node-03\nVMID 402\n4c/8G/50G\n.142"] + end + oc["oc-server\nVMID 920 · 2c/4G/50G\n.120\nhttps://192.168.102.120\nWeb UI + CLI + REST API"] + end + + vmbr0["vmbr0 (VLAN 69)\n192.168.100.0/22\nGateway: 192.168.100.1"] + ext["OVN External IPs\n192.168.103.200-210\nLB: .201 · Fwd: .202"] + + proxmox --- vmbr0 + cluster -.->|"OVN external"| ext + + style proxmox fill:#f5f5f5,stroke:#333 + style cluster fill:#e8f4fd,stroke:#3498db + style oc fill:#fff3cd,stroke:#e67e22 + style n1 fill:#d4edda,stroke:#28a745 + style n2 fill:#d4edda,stroke:#28a745 + style n3 fill:#d4edda,stroke:#28a745 +```