Skip to content

proposal: Add support for APISIX v3 decoupled deployment mode #459

Description

@tao12345666333

Apache APISIX v3 adds a decoupled deployment mode. ref: https://apisix.apache.org/docs/apisix/deployment-modes/#decoupled

In the decoupled deployment mode the data plane and control plane instances of APISIX are deployed separately. i.e one instance of APISIX is configured to be a data plane and the other to be a control plane.

image

In this mode, there are different configuration files for the data plane and control plane.

control plane

deployment:
    role: control_plane
    role_control_plane:
        config_provider: etcd
        conf_server:
            listen: 0.0.0.0:9280
            cert: /path/to/ca-cert
            cert_key: /path/to/ca-cert
            client_ca_cert: /path/to/ca-cert
    etcd:
       host:
           - https://${etcd_IP}:${etcd_Port}
       prefix: /apisix
       timeout: 30
    certs:
        cert: /path/to/ca-cert
        cert_key: /path/to/ca-cert
        trusted_ca_cert: /path/to/ca-cert

data plane

deployment:
    role: data_plane
    role_data_plane:
       config_provider: control_plane
       control_plane:
           host:
               - https://${Control_Plane_IP}:9280
           prefix: /apisix
           timeout: 30
    certs:
        cert: /path/to/ca-cert
        cert_key: /path/to/ca-cert
        trusted_ca_cert: /path/to/ca-cert

If we want to add this kind of support in the Helm chart, I think we can manage them separately through two releases.
In this way, users can operate independently during subsequent maintenance and upgrades.

e.g.

# Deploy APISIX's control plane
➜  ~ helm install apisix-control-plane apisix/apisix  --set deployment.mode=control_plane

# Deploy APISIX's data plane
➜  ~ helm install apisix-data-plane apisix/apisix --set deployment.mode=data_plane --set deployment.control_plane.host=https://apisix-control-plane-admin.apisix.svc:9280 --set deployment.control_plane.prefix="/apisix" 

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions