@@ -29,38 +29,95 @@ Use cases include:
2929## Architecture
3030
3131``` mermaid
32- graph TD
33- DEVOPS([DevOps]) -- REST API --> CICD
34- User([User]) -- REST API --> NCG
35- CICD(CI/CD Pipeline) -- REST API --> NCG[[NGINX Declarative API]]
36- NCG -- Staged Configs --> NIM(NGINX Instance Manager)
37- NCG -- REST API --> Generic(Generic REST API endpoint)
38- NCG -- AutoSync / GitOps --> CICD
39- NIM -- REST API --> NGINX(NGINX Plus) & NGINXOSS(NGINX OSS)
40- NCG -- ConfigMap --> K8S(Kubernetes)
41- REDIS[[Redis backend]] --> NCG
42- NCG --> REDIS
32+ ---
33+ title: NGINX Declarative API internal architecture
34+ ---
35+ stateDiagram-v2
36+ DevOps: User
37+ Client: REST Client
38+ Pipeline: CI/CD Pipeline
39+ NIM: NGINX Instance Manager
40+ AGENT: NGINX Agent
41+ NGINX: NGINX
42+ INPUT: Input
43+ SOT: Source of Truth
44+ NDAPI: NGINX Declarative API Core
45+ DEVP: Developer Portal Service
46+ OUTPUT: Output
47+ REDIS: Redis
48+ POST: Generic POST endpoint
49+ CONFIGMAP: Kubernetes ConfigMap
50+ PLAINTEXT: Plaintext
51+ BASE64: Base64-encoded
52+
53+ DevOps --> Pipeline
54+ Pipeline --> INPUT
55+ Client --> INPUT
56+ INPUT --> NDAPI
57+ NDAPI --> OUTPUT
58+ NDAPI --> SOT
59+ SOT --> NDAPI
60+ NDAPI --> REDIS
61+ REDIS --> NDAPI
62+ OUTPUT --> BASE64
63+ OUTPUT --> POST
64+ OUTPUT --> CONFIGMAP
65+ OUTPUT --> PLAINTEXT
66+ OUTPUT --> NIM
67+ NDAPI --> DEVP
68+ DEVP --> NDAPI
69+ NIM --> AGENT
70+ AGENT --> NGINX
4371```
4472
45- ## GitOps
73+ ## GitOps Autosync Mode
4674
4775``` mermaid
4876sequenceDiagram
4977
50- title GitOps with NGINX Instance Manager
78+ title GitOps autosync operations
5179
52- User ->> Source of truth: Commit object updates
53- NGINX Declarative API ->> Source of truth: Check for updates
54- Source of truth ->> NGINX Declarative API: Latest timestamp
80+ participant CI/CD Pipeline
81+ participant Source of Truth
82+ participant NGINX Declarative API Core
83+ participant Redis
84+ participant Developer Portal Service
85+ participant NGINX Instance Manager
86+ participant NGINX
5587
56- NGINX Declarative API->> NGINX Declarative API: If updates available
57- NGINX Declarative API->> Source of truth: Pull updated objects
58- Source of truth ->> NGINX Declarative API : Updated objects
88+ box NGINX Declarative API
89+ participant NGINX Declarative API Core
90+ participant Developer Portal Service
91+ participant Redis
92+ end
5993
60- NGINX Declarative API->> NGINX Declarative API: Build staged config
61- NGINX Declarative API->> NGINX Instance Manager: POST staged config to instance group
94+ CI/CD Pipeline ->> Source of Truth: Commit object updates
6295
96+ critical Run every "synctime" seconds
97+
98+ NGINX Declarative API Core ->>+ Source of Truth: Check for referenced objects updates
99+ Source of Truth ->>- NGINX Declarative API Core: Latest timestamp
100+
101+ Note over NGINX Declarative API Core, Redis: data synchronization
102+
103+ option If updates available
104+ NGINX Declarative API Core ->>+ Source of Truth: Pull updated objects
105+ Source of Truth ->>- NGINX Declarative API Core : Updated objects
106+
107+ critical Build Staged Config
108+ critical If Developer Portal enabled
109+ NGINX Declarative API Core ->>+ Developer Portal Service: DevPortal generation request
110+ Developer Portal Service ->>- NGINX Declarative API Core: DevPortal definition
111+ end
112+ end
113+
114+ NGINX Declarative API Core ->>+ NGINX Instance Manager: Publish staged config to instance group
63115NGINX Instance Manager ->> NGINX: Publish config to NGINX instances
116+ NGINX Instance Manager ->>- NGINX Declarative API Core: Publish outcome
117+
118+ Note over NGINX Declarative API Core, Redis: data synchronization
119+
120+ end
64121```
65122
66123## Input formats
0 commit comments