You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+45-29Lines changed: 45 additions & 29 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,21 +2,37 @@
2
2
3
3
[](https://www.repostatus.org/#active)
4
4
5
-
This project provides a set of declarative REST API for [NGINX Instance Manager](https://docs.nginx.com/nginx-management-suite/nim/) and [NGINX One Console](https://docs.nginx.com/nginx-one/)
5
+
NGINX Declarative API enables users to manage **NGINX configurations** in a modern **declarative style**. Instead of modifying configurations manually or using low-level APIs, this project simplifies operational workflows by allowing users to express desired configurations as a single JSON object.
6
+
The API abstracts the complexity of managing NGINX configurations, empowering developers, operators, and automation systems to integrate seamlessly with NGINX.
6
7
7
-
It can be used to manage NGINX Plus configuration lifecycle and to create NGINX Plus configurations using JSON service definitions.
8
+
This project supports [F5 NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/)and [F5 NGINX One Console](https://docs.nginx.com/nginx-one/)
8
9
9
-
GitOps integration is supported: source of truth is checked for updates (NGINX App Protect policies, TLS certificates, keys and chains/bundles, Swagger/OpenAPI definitions, snippets) and NGINX configurations are automatically kept in sync.
10
+
## 📚 Overview
10
11
11
-
Use cases include:
12
+
At its core, the NGINX Declarative API supports **declarative configuration management** by letting users define what the state of NGINX *should be*, rather than how to get there. It eliminates the need for procedural changes by processing user-defined JSON payloads into valid and optimized NGINX configurations.
12
13
13
-
- Integration with NGINX Instance Manager (instance group) and NGINX One Console (config sync group)
14
-
- NGINX App Protect DevSecOps integration
14
+
This tool is ideal for managing NGINX in **modern, dynamic infrastructures** such as CI/CD environments, containerized applications (like Kubernetes), or large-scale proxy server setups.
15
+
16
+
### ➡️ Why Use the NGINX Declarative API?
17
+
18
+
- ✅ **Declarative Simplicity**: Express configurations as a single, high-level JSON object.
19
+
- ✅ **Automation-First Design**: Integrate configurations into CI/CD pipelines with minimal effort.
20
+
- ✅ **Error Reduction**: Built-in validation for accurate and optimized configurations.
GitOps integration is supported: source of truth is checked for updates (F5 WAF for NGINX policies, TLS certificates, keys and chains/bundles, Swagger/OpenAPI definitions, snippets) and NGINX configurations are automatically kept in sync.
26
+
27
+
### 📝 Use Cases
28
+
29
+
- Integration with F5 NGINX Instance Manager (instance group) and F5 NGINX One Console (config sync group)
30
+
- F5 WAF for NGINX DevSecOps integration
15
31
- API Gateway deployments with automated Swagger / OpenAPI schema import
16
32
- API Developer portals zero-touch deployment (redocly and backstage supported)
17
33
- API Visibility (moesif supported)
18
34
- GitOps integration with source of truth support for
19
-
-NGINX App Protect WAF policies
35
+
-F5 WAF for NGINX policies
20
36
- TLS certificates, keys and chains/bundles
21
37
- mTLS certificates
22
38
-`http` snippets, upstreams, servers, locations
@@ -26,16 +42,16 @@ Use cases include:
26
42
27
43
A **blog article** to automate NGINX API Gateway management from OpenAPI schemas is available [here](https://www.f5.com/company/blog/nginx/from-openapi-to-nginx-as-an-api-gateway-using-a-declarative-api)
-[F5 NGINX One Console](https://docs.nginx.com/nginx-one/)
49
+
-[F5 NGINX Plus R33+](https://docs.nginx.com/nginx/)
50
+
-[F5 WAF for NGINX](https://docs.nginx.com/waf/)
35
51
36
-
**Note**: NGINX Plus R33 and above [require a valid license](https://docs.nginx.com/solutions/about-subscription-licenses/) and the `.output.license` section in the declarative JSON is required. See the [usage notes](/USAGE-v5.4.md) for further details. [Postman collection](/contrib/postman) examples are provided for NGINX Plus R33+.
52
+
**Note**: F5 NGINX Plus R33 and above [require a valid license](https://docs.nginx.com/solutions/about-subscription-licenses/) and the `.output.license` section in the declarative JSON is required. See the [usage notes](/USAGE-v5.4.md) for further details. [Postman collection](/contrib/postman) examples are provided for NGINX Plus R33+.
37
53
38
-
## Architecture
54
+
## 🛠️ Architecture
39
55
40
56
```mermaid
41
57
---
@@ -80,7 +96,7 @@ stateDiagram-v2
80
96
AGENT2 --> NGINX2
81
97
```
82
98
83
-
## GitOps Autosync Mode
99
+
## 🤖 GitOps Autosync Mode
84
100
85
101
```mermaid
86
102
sequenceDiagram
@@ -130,7 +146,7 @@ Note over NGINX Declarative API, Redis: data synchronization
-[X] Output to NGINX Instance Manager 2.14+ imperative REST API (instance group)
191
-
-[X] Output to NGINX One Console REST API (config sync group)
206
+
-[X] Output to F5 NGINX Instance Manager 2.14+ imperative REST API (instance group)
207
+
-[X] Output to F5 NGINX One Console REST API (config sync group)
192
208
193
-
## Supported features
209
+
## 🌟 Supported features
194
210
195
211
See the [features list](/FEATURES.md)
196
212
197
-
## How to use
213
+
## 🔧 How to use
198
214
199
215
Usage details and JSON schema are available here:
200
216
@@ -203,34 +219,34 @@ Usage details and JSON schema are available here:
203
219
204
220
A sample Postman collection and usage instructions can be found [here](/contrib/postman)
205
221
206
-
## How to run
222
+
## 🏃 How to run
207
223
208
224
NGINX Declarative API can be deployed on a Linux virtual machine using [docker-compose](/contrib/docker-compose) or on [Kubernetes](/contrib/kubernetes)
209
225
210
-
## Building Docker images
226
+
## 🐳 Building Docker images
211
227
212
228
Docker images can be built and run using the Docker compose [script](/contrib/docker-compose) provided
213
229
214
-
## REST API documentation
230
+
## 📖 REST API documentation
215
231
216
232
When NGINX Declarative API is running, REST API documentation can be accessed at:
217
233
218
234
- Documentation and testing: `/docs`
219
235
- Redoc documentation: `/redoc`
220
236
- OpenAPI specification: `/openapi.json`
221
237
222
-
## License
238
+
## ⚖️ License
223
239
224
240
This repository is licensed under the Apache License, Version 2.0. You are free to use, modify, and distribute this codebase within the terms and conditions outlined in the license. For more details, please refer to the [LICENSE](/LICENSE.md) file.
225
241
226
-
## Support
242
+
## 🆘 Support
227
243
228
244
For support, please open a GitHub issue. Note that the code in this repository is community supported.
0 commit comments