@@ -29,38 +29,80 @@ 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+
52+ DevOps --> Pipeline
53+ Pipeline --> INPUT
54+ Client --> INPUT
55+ INPUT --> NDAPI
56+ NDAPI --> OUTPUT
57+ NDAPI --> SOT
58+ SOT --> NDAPI
59+ NDAPI --> REDIS
60+ REDIS --> NDAPI
61+ OUTPUT --> POST
62+ OUTPUT --> CONFIGMAP
63+ OUTPUT --> PLAINTEXT
64+ OUTPUT --> NIM
65+ NDAPI --> DEVP
66+ DEVP --> NDAPI
67+ NIM --> AGENT
68+ AGENT --> NGINX
4369```
4470
45- ## GitOps
71+ ## GitOps Autosync Mode
4672
4773``` mermaid
4874sequenceDiagram
4975
50- title GitOps with NGINX Instance Manager
76+ title GitOps autosync operations
5177
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
78+ participant CI/CD Pipeline
79+ participant Source of Truth
80+ participant NGINX Declarative API core
81+ participant Developer Portal Service
82+ participant NGINX Instance Manager
83+ participant NGINX
5584
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
85+ CI/CD Pipeline ->> Source of Truth: Commit object updates
5986
60- NGINX Declarative API->> NGINX Declarative API: Build staged config
61- NGINX Declarative API->> NGINX Instance Manager: POST staged config to instance group
87+
88+ critical Run every "synctime" seconds
89+
90+ NGINX Declarative API core -->> Source of Truth: Check for updates
91+ Source of Truth -->> NGINX Declarative API core: Latest timestamp
92+
93+ option If updates available
94+ NGINX Declarative API core -->> Source of Truth: Pull updated objects
95+ Source of Truth -->> NGINX Declarative API core : Updated objects
96+
97+ NGINX Declarative API core -->> Developer Portal Service: DevPortal generation request
98+ Developer Portal Service -->> NGINX Declarative API core: DevPortal definition
99+
100+ NGINX Declarative API core -->> NGINX Declarative API core: Build staged config
101+ NGINX Declarative API core -->> NGINX Instance Manager: POST staged config to instance group
62102
63103NGINX Instance Manager ->> NGINX: Publish config to NGINX instances
104+
105+ end
64106```
65107
66108## Input formats
0 commit comments