@@ -87,9 +87,34 @@ This split architecture ensures operational boundaries between the control plane
87
87
This figure depicts an example of NGINX Gateway Fabric exposing three web applications within a Kubernetes cluster to clients on the internet:
88
88
89
89
``` mermaid
90
- graph TD
90
+ graph LR
91
91
%% Nodes and Relationships
92
92
subgraph KubernetesCluster[Kubernetes Cluster]
93
+
94
+ subgraph applications2[Namespace: applications2]
95
+
96
+ subgraph DataplaneComponentsC[Dataplane Components]
97
+ GatewayC[Gateway C<br>Listener: *.other-example.com]
98
+
99
+ subgraph NGINXPodC[NGINX Pod]
100
+ subgraph NGINXContainerC[NGINX Container]
101
+ NGINXProcessC(NGINX)
102
+ NGINXAgentC(NGINX Agent)
103
+ end
104
+ end
105
+ end
106
+
107
+ subgraph HTTPRouteCAndApplicationC[HTTPRoute C and Application C]
108
+ HTTPRouteC[HTTPRoute C<br>Host: c.other-example.com]
109
+ ApplicationC[Application C<br>Pods: 1]
110
+ end
111
+
112
+ end
113
+
114
+ subgraph nginx-gateway[Namespace: nginx-gateway]
115
+ NGFPod[NGF Pod]
116
+ end
117
+
93
118
subgraph applications1[Namespace: applications]
94
119
95
120
subgraph DataplaneComponentsAB[Dataplane Components]
@@ -103,42 +128,15 @@ graph TD
103
128
end
104
129
end
105
130
106
- subgraph HTTPRouteAAndApplicationA[HTTPRoute A and Application A]
107
- HTTPRouteA[HTTPRoute A<br>Host: a.example.com]
108
- subgraph ApplicationA[Application A]
109
- Pod1[Pod]
110
- Pod2[Pod]
111
- end
112
- end
113
-
114
131
subgraph HTTPRouteBAndApplicationB[HTTPRoute B and Application B]
115
132
HTTPRouteB[HTTPRoute B<br>Host: b.example.com]
116
133
ApplicationB[Application B<br>Pods: 1]
117
134
end
118
- end
119
-
120
- subgraph applications2[Namespace: applications2]
121
-
122
- subgraph DataplaneComponentsC[Dataplane Components]
123
- GatewayC[Gateway C<br>Listener: *.other-example.com]
124
-
125
- subgraph NGINXPodC[NGINX Pod]
126
- subgraph NGINXContainerC[NGINX Container]
127
- NGINXProcessC(NGINX)
128
- NGINXAgentC(NGINX Agent)
129
- end
130
- end
131
- end
132
135
133
- subgraph HTTPRouteCAndApplicationC [HTTPRoute C and Application C ]
134
- HTTPRouteC [HTTPRoute C <br>Host: c.other- example.com]
135
- ApplicationC [Application C <br>Pods: 1 ]
136
+ subgraph HTTPRouteAAndApplicationA [HTTPRoute A and Application A ]
137
+ HTTPRouteA [HTTPRoute A <br>Host: a. example.com]
138
+ ApplicationA [Application AB <br>Pods: 2 ]
136
139
end
137
-
138
- end
139
-
140
- subgraph nginx-gateway[Namespace: nginx-gateway]
141
- NGFPod[NGF Pod]
142
140
end
143
141
144
142
KubernetesAPI[Kubernetes API]
@@ -253,12 +251,13 @@ For example, the Cluster Operator is denoted by the color green, indicating they
253
251
## NGINX Gateway Fabric: Component Communication Workflow
254
252
255
253
``` mermaid
256
- graph TD
254
+ graph LR
257
255
%% Main Components
258
- NGFPod[NGF Pod]
259
256
KubernetesAPI[Kubernetes API]
260
257
PrometheusMonitor[Prometheus]
261
258
F5Telemetry[F5 Telemetry Service]
259
+ NGFPod[NGF Pod]
260
+ NGINXPod[NGINX Pod]
262
261
Client[Client]
263
262
Backend[Backend]
264
263
@@ -276,6 +275,13 @@ graph TD
276
275
ContainerRuntimeNGF[stdout/stderr]
277
276
end
278
277
278
+ %% External Components Grouping
279
+ subgraph ExternalComponents[.]
280
+ KubernetesAPI[Kubernetes API]
281
+ PrometheusMonitor[Prometheus]
282
+ F5Telemetry[F5 Telemetry Service]
283
+ end
284
+
279
285
%% HTTPS: Communication with Kubernetes API
280
286
NGFProcess -- "(1) Reads Updates" --> KubernetesAPI
281
287
NGFProcess -- "(1) Writes Statuses" --> KubernetesAPI
@@ -294,7 +300,7 @@ graph TD
294
300
295
301
%% gRPC: Configuration Updates
296
302
NGFProcess -- "(6) Sends Config to Agent" --> NGINXAgent
297
- NGINXAgent -- "(7) Validates Config & Writes TLS Certs" --> ConfigFiles
303
+ NGINXAgent -- "(7) Validates & Writes Config & TLS Certs" --> ConfigFiles
298
304
NGINXAgent -- "(8) Reloads NGINX" --> NGINXMaster
299
305
NGINXAgent -- "(9) Sends DataPlaneResponse" --> NGFProcess
300
306
@@ -314,6 +320,7 @@ graph TD
314
320
classDef metrics fill:#FFC0CB,stroke:#333,stroke-width:2px;
315
321
classDef io fill:#FFD700,stroke:#333,stroke-width:2px;
316
322
classDef signal fill:#87CEEB,stroke:#333,stroke-width:2px;
323
+ style ExternalComponents fill:transparent,stroke-width:0px
317
324
318
325
%% Class Assignments for Node Colors
319
326
class NGFPod,KubernetesAPI important;
0 commit comments