211 lines
5.3 KiB
Markdown
211 lines
5.3 KiB
Markdown
# 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
|
|
```
|