Apache APISIX traditional vs decoupled vs standalone mode

Apache APISIX offers three documented deployment modes that differ on where configuration lives, whether the Admin API is exposed, and how changes reach the data plane. This page explains which mode fits which team and what each one asks you to operate.

On this page

Which APISIX deployment mode fits your team

Choose traditional mode unless you have a specific reason to separate the planes or remove etcd. Traditional mode runs the data plane and control plane together on each node, uses etcd as the configuration center, serves user traffic on port 9080 and the Admin API on port 9180. It is the simplest single-tier path, and it fits a team that wants one set of instances to operate. Before you go live, decide whether the Admin API should stay on. The deployment modes documentation says it must be turned off manually with enable_admin if you do not need it, so make that a deliberate step in your hardening checklist rather than a default you inherit.

Choose decoupled mode when the Admin API should sit on different infrastructure from public traffic. Control plane nodes serve Admin API requests on port 9180, data plane nodes serve user requests, and both read configuration through the same etcd cluster. This suits organizations that want configuration changes confined to a restricted network segment while gateways face the internet. The cost is a second tier to deploy, scale, patch and monitor, and etcd becomes a shared dependency for both tiers. Confirm the exact network and role settings for your version with the APISIX deployment modes documentation before you draw your topology.

Choose standalone mode when you want no etcd and configuration to live in version control, typically on Kubernetes with GitOps. Standalone nodes read full declarative configuration. The file-driven variant loads conf/apisix.yaml or conf/apisix.json with role data_plane, checks for changes every second and requires a #END marker at the end of the YAML file. The API-driven variant keeps rules only in memory, starts empty and replaces the full configuration on each update through the Standalone Admin API. The docs position that variant for the APISIX Ingress Controller and ADC, and warn against using it directly unless you understand its internals. Treat the two variants as different products for planning purposes, and test failure and restart behavior before you rely on either.

Traditional, decoupled and standalone compared

This table compares the three documented Apache APISIX deployment modes on configuration storage, node roles, Admin API placement, etcd dependency, Kubernetes and GitOps fit, and the cautions in the docs. Read each row across to see which mode matches your change process and where you would need to run extra components. The main takeaway is that only standalone mode removes etcd, and its API-driven variant carries an explicit warning against direct use.

AspectTraditional modeDecoupled modeStandalone mode
Configuration storageetcd as the config_provideretcd shared by data and control planeYAML or JSON file, or the Standalone Admin API
Node roleData plane and control plane on one instanceSeparate data plane and control plane instancesData plane role only, configured from file or API
Admin API locationPort 9180 on the combined instancePort 9180 on control plane nodesStandalone Admin API, intended for API-driven use
Dependency on etcdRequiredRequiredNot used
Kubernetes fitPossible, but etcd remains a dependency to runPossible, with etcd remaining a dependencyDocumented as targeting Kubernetes with full declarative YAML
GitOps fitIndirect, since changes go through etcd and the Admin APIIndirect, since changes go through etcd and the Admin APIDirect for file-driven mode, since the file lives in version control
Change propagationWritten to etcd and picked up by nodesWritten to etcd and picked up by data plane nodesFile-driven: checked every second and hot-reloaded. API-driven: full replacement per update
Documented cautionsAdmin API should be disabled with enable_admin if not neededConfirm the control and data plane split in your own network designRequires a #END marker in the YAML file. Do not use API-driven mode directly unless you fully understand its internals

What each mode runs and where the Admin API sits

Apache APISIX splits its work across a few parts: nodes that serve traffic, nodes that serve the Admin API, a configuration store, and file or API inputs in standalone mode. Each part decides who can change routes and where a compromise could reach, so map them before you pick a mode.

Traditional mode node

In traditional mode, one APISIX instance runs the data plane and control plane together, with etcd as the config_provider. User traffic arrives on port 9080 and the Admin API listens on port 9180 on the same node. Because the Admin API is exposed wherever the node is reachable, the docs say to disable it with enable_admin when you do not need it. Check which networks can reach port 9180 before you go live.

Decoupled control plane

In decoupled mode, control plane instances serve Admin API requests on port 9180 and write configuration through the shared etcd cluster. Keeping the Admin API off the traffic-facing nodes narrows the path an attacker would take to change routes. The cost is a second deployment to run, monitor and upgrade. Confirm who holds Admin API keys and how etcd access is restricted.

Decoupled data plane

Data plane nodes in decoupled mode serve user requests on port 9080 and read configuration from etcd without exposing the Admin API. This is the boundary most security teams want: internet-facing nodes hold no write path to routing rules. Verify that data plane nodes have read-only etcd credentials, and that a failed control plane does not stop traffic already being served.

etcd as the config center

etcd is the shared store in traditional and decoupled modes, so every node that reads it trusts its contents. Anyone who can write to etcd can change routes and plugins across the fleet, regardless of Admin API controls. Ask your platform team to confirm etcd authentication, TLS between members and backup procedures before you commit to these modes.

File-driven standalone loader

In file-driven standalone mode, the node runs with role data_plane and reads conf/apisix.yaml or conf/apisix.json, checking for changes every second and hot-reloading without a restart. The YAML file must end with a #END marker, so a truncated file is a real failure mode. Because there is no etcd and no Admin API write path, changes flow through Git and your deployment pipeline. Confirm who can write the file and how file integrity is verified.

API-driven standalone store

In API-driven standalone mode, rules live only in memory, the node starts empty, and each update replaces the full configuration through the Standalone Admin API. A partial update cannot be applied, and a restart discards the state unless the controller that pushes it re-sends it. The docs position it for the APISIX Ingress Controller and ADC, and warn against direct use unless you understand its internals. Plan for an upstream controller to own this state.

Why turning off the Admin API matters in traditional mode

In traditional mode, the Admin API and user traffic share one instance. The data plane and control plane run together, user requests arrive on port 9080, and the Admin API listens on port 9180 on the same node. Anyone who can reach port 9180 can change routes, upstreams and plugins, so the Admin API is effectively a management interface living on the traffic path. The APISIX deployment modes documentation says the Admin API must be turned off manually with enable_admin if you do not need it, which means the default posture depends on your configuration rather than on the topology alone.

This affects network segmentation directly. If you keep the Admin API, restrict port 9180 to a management network or an allowlist of administration hosts, and confirm that load balancers, ingress rules and security groups never expose it to the client-facing network. Decoupled mode changes the shape of the problem: control plane instances serve Admin API requests on port 9180 and data plane instances serve user requests, so you can place the two behind different network policies and scale or lock down each tier separately. Both modes read configuration through etcd, so etcd access also needs the same scrutiny.

Before you commit to a mode, confirm the exact configuration keys, listening ports and network policy against the current APISIX documentation for the version you will run, not against this summary. Ask your platform team to write down which hosts may reach the Admin API, test that a request from a client-facing network segment fails, and record the result as part of your implementation evidence. Your security team should also decide whether a standalone deployment, which has no Admin API on the traffic path in its file-driven form, better matches the control model you need.

Which mode fits Kubernetes, VMs and GitOps teams

Teams running on Kubernetes usually start with the APISIX Ingress Controller, which is a separate project with its own release line (APISIX Ingress Controller 2.2.0 was released on August 18, 2026, per the APISIX downloads page). The standalone mode is the one the documentation describes as targeting Kubernetes, using declarative full YAML configuration and external configuration centers such as Consul. In API-driven standalone mode, the rules live only in memory, the configuration starts empty, and each update replaces the full configuration through the Standalone Admin API. The docs position that API for the Ingress Controller and ADC, so application teams should not call it directly.

  • Controller-managed config: The Ingress Controller and ADC push full configurations, so the team operates the controller lifecycle alongside the gateway.
  • In-memory state: Standalone configuration does not persist in etcd, so a restarted pod depends on the controller or a file to repopulate routes.
  • Declarative files: File-driven standalone mode reads conf/apisix.yaml or conf/apisix.json and needs the #END marker at the end of the YAML file.
  • Direct API use: The docs warn against using the standalone Admin API directly unless you fully understand its internal workings.
  • External config centers: Consul is named as an example of an external configuration center, so confirm whether your cluster needs it.

Before committing, confirm with the APISIX project which Ingress Controller version pairs with your gateway version and how it handles failover.

What each mode asks your operators to run

This table compares what operators must maintain in each Apache APISIX deployment mode: etcd, the separate control plane, and configuration files or full-replacement pipelines. Read each row against your own team's skills and upgrade cadence. The main takeaway is that traditional and decoupled modes carry etcd operations as a standing duty, while standalone moves that duty into your configuration pipeline.

Operator taskTraditional modeDecoupled modeStandalone mode
Configuration storeetcd cluster on the same nodes as the data and control planeetcd cluster shared by separate data plane and control plane instancesNo etcd; a YAML or JSON file, or an API that replaces the full configuration
etcd backup and recoveryOperators must back up and test restore of etcd, since it holds all routes and pluginsSame etcd duty, with backup covering the shared cluster that both planes readNot applicable to APISIX; back up the configuration files or the source that generates them
Control plane lifecycleUpgraded together with the data plane on each nodeControl plane nodes are a separate fleet to patch, scale and monitorNot applicable; the file or API pipeline is the control surface
Upgrades and release cadenceAPISIX 3.19.0 was released September 28, 2026; the docs do not mark any release as long-term support, so set your own cadenceSame cadence rule, applied to two instance types that must stay compatibleSame cadence rule; test each new release against your full configuration file before rollout
Config change pipelineAdmin API calls or scripts; confirm audit and change records in your own toolingAdmin API on control plane nodes; changes flow to data plane through etcdGit-managed YAML or JSON reloaded within about a second, or full-replacement API calls
Monitoring focusNode health, etcd health, and both listeners on ports 9080 and 9180Data plane and control plane health tracked separately, plus etcdData plane reload status and file integrity; confirm metrics available in your version
Skills your team needsetcd administration, NGINX and Lua operationsetcd administration plus separate fleet management for control planeConfiguration-as-code discipline and tooling for generating full configurations
Admin API exposureAdmin API on port 9180 stays on unless disabled with enable_adminAdmin API served from control plane nodes onlyAdmin API is intended for the Ingress Controller and ADC; the docs advise against direct use without deep understanding

How to choose a mode in four decisions

This sequence narrows the three documented APISIX deployment modes to one by testing for a shared etcd need, Admin API exposure, Git-driven file configuration and Ingress Controller or ADC use. It ends with a pilot that shows whether the chosen mode fits your operations before production commits to it.

  1. Confirm whether you need a shared etcd

    Platform engineering and the API team answer one question: do you need a configuration center that every gateway node reads from, with the Admin API used to change routes at runtime? If yes, you are in traditional or decoupled mode, where etcd is the configuration center. If no, configuration can live in a file or an API-driven standalone setup with no etcd. Record the answer in the design document. It is done when the team agrees on the answer and names who owns the etcd cluster if one is needed.

  2. Decide whether the Admin API must stay off user-facing networks

    The security architect checks where the Admin API on port 9180 will be reachable. In traditional mode, the data plane and control plane share one instance, and the docs say to turn the Admin API off with enable_admin if you do not need it. In decoupled mode, the Admin API runs on separate control plane nodes, which lets you keep those nodes off the user-facing network. Document the network path and the access controls for the Admin API. It is done when the security architect signs off on the placement of every node that serves the Admin API.

  3. Test whether configuration must come from Git through a file

    The platform team checks whether route changes must go through a Git review and be applied from a file. File-driven standalone mode loads routes from conf/apisix.yaml or conf/apisix.json, checks for changes every second and runs with the data_plane role. The YAML file must end with a #END marker. If the team needs runtime changes through the Admin API instead, the API-driven standalone mode is a different option, and its docs warn against using it directly unless you understand its internal workings. It is done when the team has a written choice between file-driven and API-driven configuration, with a sample file that passes review.

  4. Check whether the Ingress Controller or ADC will manage the gateway

    The Kubernetes platform owner determines whether the APISIX Ingress Controller or ADC will generate and push configuration. The standalone docs position API-driven standalone mode for these tools, so their use changes the answer from the earlier steps. Confirm the controller version you plan to run, using the APISIX downloads page as the reference for the 2.2.0 release date, and confirm the compatibility with your APISIX version with the vendor or project. It is done when the team records the controller, its version and the mode it requires.

  5. Build a pilot in a non-production environment

    The platform team deploys the chosen mode in a non-production environment that mirrors your identity provider, network zones and certificate handling. Run the openid-connect flows your applications need, load test a representative route set, and rehearse a configuration change and rollback. Confirm the ports (9080 for client traffic, 9180 for the Admin API) are reachable only where intended. It is done when the pilot passes the agreed checks and the team can explain each failure it found.

  6. Scope the migration cost before production

    Before production, the architecture lead asks the vendor or your own team to estimate what switching modes later would involve. Changing mode generally means moving configuration between a database-backed etcd store and a file or API model, so the work includes exporting routes, plugins and certificates and validating them in the new mode. Ask for the migration steps in writing and who performs each one. It is done when the migration scope is a written document that the sponsor has accepted, because the mode choice is hard to reverse without a configuration migration.

Questions teams ask before running APISIX in production

What drives the cost and effort of each APISIX deployment mode?

The mode changes the number of moving parts more than the license, which is Apache-2.0 for every mode. Traditional mode puts the data plane and control plane on each node and depends on etcd as the configuration center. Decoupled mode adds separate control plane instances, so there are more deployments to size, patch and monitor. Standalone mode removes etcd but shifts effort to how configuration is generated, versioned and reloaded. Recurring cost comes from infrastructure, on-call time and upgrades. Ask any provider to price each mode separately, listing the nodes, etcd cluster, Kubernetes components, monitoring and the hours to build and maintain configuration pipelines.

Can our own team run APISIX in production without outside help?

A team with Linux, NGINX, etcd and Kubernetes experience can run APISIX itself, since the project and its documentation are public and the code is Apache-2.0. The gaps are usually Lua plugin development, hardening the Admin API and writing a safe configuration release process. Count the skills you lack, the people who would carry on-call duty, and the time for a first pilot before you commit. A fixed-scope engagement with DeployOpen can cover planning, implementation, hardening, backup and documentation for a defined set of environments, with ongoing support available as a retainer. Request the written scope, deliverables and timeline before work starts.

How long does an initial APISIX rollout take?

No duration can be stated from the researched facts, so treat any figure you hear with caution. The rollout length depends on the chosen mode, the number of routes and plugins, your identity integration, the number of environments, and whether you run Kubernetes. Standalone file-driven setups can be small, while traditional or decoupled setups add etcd clustering and network design. Ask for a timeline tied to named milestones: environment build, pilot routes, identity testing, load testing, backup and restore testing, and handover. A written scope should state what is excluded so the timeline is comparable across bids.

What skills do operators need for etcd, Kubernetes and Lua plugins?

Traditional and decoupled modes require operators who can run an etcd cluster, since APISIX stores its configuration there and both modes read it through etcd. Kubernetes skills matter if you use the APISIX Ingress Controller or standalone mode for declarative deployment. Lua knowledge matters only if you write custom plugins, because APISIX runs Lua plugins inside worker processes; the docs also describe external plugin runners for Java, Go and Python. Confirm these skills against your roster, and ask any implementer to name the people who would perform the work and how knowledge transfers to your staff.

Is standalone mode safe for general production use?

File-driven standalone mode is the safer starting point for teams that want declarative configuration, because it reads conf/apisix.yaml or conf/apisix.json, checks for changes every second and hot-reloads. The API-driven standalone mode keeps rules only in memory and replaces the full configuration on each update, and the APISIX docs say it is intended for the APISIX Ingress Controller and ADC and warn against using it directly unless you fully understand its internals. Treat that warning as a design constraint. Ask for a written review of which mode fits your release process, and confirm current guidance in the APISIX deployment modes documentation.

How do we switch between APISIX modes later?

Switching is possible but it changes where configuration lives and who operates it, so plan it as a migration. Moving from traditional to decoupled usually means splitting roles across instances while keeping etcd. Moving to standalone means exporting routes, plugins and upstreams into YAML or JSON and removing the etcd dependency, which requires testing every route and credential. Ask any implementer for a migration plan covering inventory of routes and plugins, a parallel run, rollback steps, the Admin API shutdown with enable_admin, and a record of what changed for auditors. Include the cost of that migration in the original quote.

How DeployOpen scopes and delivers APISIX deployments

DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, so the mode decision is made against your network, identity and Kubernetes setup. Engagements are fixed-scope, with scope and deliverables agreed in writing before work starts.

How we scope

  • Written scope names the chosen mode: traditional, decoupled or standalone, and the reason for it.
  • Scope lists which nodes, etcd clusters or Kubernetes namespaces are in and out of the work.
  • Scope states whether the Admin API stays enabled, and who controls its access.
  • Ask us to confirm which identity provider and OIDC flows the openid-connect plugin will use.

How we build

  • Deploy traditional or decoupled topologies with the Admin API on port 9180 restricted to approved clients.
  • For standalone, build the YAML or JSON configuration files and the Git workflow that feeds them.
  • Test route changes, plugin behavior and failover in a non-production environment before cutover.
  • Configure the Admin API off with enable_admin where the chosen mode does not need it.

How we hand over

  • Documentation covers the topology diagram, port map, configuration sources and change procedure.
  • Runbooks cover upgrades, etcd backup and restore, and rollback steps for the chosen mode.
  • Handover includes a record of the trade-offs, including what changes if you later move modes.
  • Evidence for access control and change management is packaged for your compliance reviewers.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers can cover version tracking against the APISIX release history you choose to follow.
  • Re-testing follows each upgrade, plugin change or move from one deployment mode to another.
  • Ask for a written quote tied to the scope, with the recurring and one-time items listed separately.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.