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
-[1. With ETCD and with the Ingress Controller](#1-with-etcd-and-with-the-ingress-controller)
31
+
-[2. With ETCD and without the Ingress Controller](#2-with-etcd-and-without-the-ingress-controller)
32
+
-[3. Without ETCD and with the Ingress Controller](#3-without-etcd-and-with-the-ingress-controller)
33
+
-[4. Without ETCD and without the Ingress Controller](#4-without-etcd-and-without-the-ingress-controller)
28
34
-[How to contribute](#how-to-contribute)
29
35
-[License](#license)
30
36
@@ -118,6 +124,106 @@ The tests can be executed via:
118
124
They will spin up the [Local Deployment](#local-deployment) and run
119
125
the [test-scenarios](./it/src/test/resources/it/mvds_basic.feature) against it.
120
126
127
+
128
+
## APISIX Deployment Modes
129
+
130
+
APISIX can operate in four distinct deployment modes. Each mode determines how routes are stored, managed, and persisted, as well as which components are responsible for maintaining the routing configuration.
|**1. With ETCD and with Ingress Controller**| ✔️ | ✔️ | APISIX CRDs, Kubernetes Ingress, Admin API | ✔️ Persisted in ETCD | Recommended for Kubernetes-native setups |
137
+
|**2. With ETCD and without Ingress Controller**| ✔️ | ❌ | Admin API only | ✔️ Persisted in ETCD | Chart-defined routes are *not* initialized |
138
+
|**3. Without ETCD and with Ingress Controller**| ❌ | ✔️ | APISIX CRDs, Kubernetes Ingress, Admin API | ❌ In-memory only | Requires at least one route to start |
139
+
|**4. Without ETCD and without Ingress Controller**| ❌ | ❌ | Static ConfigMap (`apisix.yaml`) | ✔️ Persisted only in ConfigMap |**Under development**; installation may fail but upgrades will work |
140
+
141
+
---
142
+
143
+
### 1. With ETCD and with the Ingress Controller
144
+
145
+
In this mode, APISIX persists all route definitions in ETCD. Routes may be defined via APISIX CRDs, standard Kubernetes Ingress resources, or the Admin API.
146
+
Because the configuration is stored in ETCD, all routes—including those created through the Admin API—will **remain available after restarts**.
147
+
148
+
```yaml
149
+
apisix:
150
+
ingress-controller:
151
+
enabled: true
152
+
apisix:
153
+
deployment:
154
+
role: traditional
155
+
role_traditional:
156
+
config_provider: yaml
157
+
etcd:
158
+
enabled: true
159
+
```
160
+
161
+
---
162
+
163
+
### 2. With ETCD and without the Ingress Controller
164
+
165
+
In this configuration, ETCD persists the routes, but no Ingress Controller is available to manage them. As a result, routes can **only** be created or updated using the APISIX Admin API.
166
+
Chart-defined routes are **not** initialized automatically.
167
+
168
+
```yaml
169
+
apisix:
170
+
ingress-controller:
171
+
enabled: false
172
+
apisix:
173
+
deployment:
174
+
role: traditional
175
+
role_traditional:
176
+
config_provider: yaml
177
+
etcd:
178
+
enabled: true
179
+
```
180
+
181
+
---
182
+
183
+
### 3. Without ETCD and with the Ingress Controller
184
+
185
+
When ETCD is disabled, APISIX loads all routes from APISIX CRDs and stores them in memory. The Ingress Controller continuously synchronizes APISIX with these CRDs.
186
+
Although the Admin API can still modify routes, such changes **will not persist across restarts**.
187
+
Kubernetes Ingress objects may also be used to define new routes.
188
+
189
+
> [!WARNING]
190
+
> APISIX requires at least one route to exist for the service to start correctly.
191
+
192
+
```yaml
193
+
apisix:
194
+
ingress-controller:
195
+
enabled: true
196
+
apisix:
197
+
deployment:
198
+
role: traditional
199
+
role_traditional:
200
+
config_provider: yaml
201
+
etcd:
202
+
enabled: false
203
+
```
204
+
205
+
---
206
+
207
+
### 4. Without ETCD and without the Ingress Controller
208
+
209
+
In this mode, routes are defined statically within the `apisix.yaml` ConfigMap. APISIX loads these routes at startup, and the configuration remains unchanged unless the ConfigMap or Helm values are manually updated.
210
+
This mode is suitable for simple or fully static environments.
211
+
212
+
> [!WARNING]
213
+
> This mode is currently under development. Installation may fail, but upgrades will function correctly.
214
+
215
+
```yaml
216
+
apisix:
217
+
ingress-controller:
218
+
enabled: false
219
+
apisix:
220
+
deployment:
221
+
mode: standalone
222
+
role: data_plane
223
+
etcd:
224
+
enabled: false
225
+
```
226
+
121
227
## How to contribute
122
228
123
229
Please, check the doc [here](doc/CONTRIBUTING.md).
0 commit comments