Skip to content

help request: Config as data_plane problem #8067

Description

@PhanPirang

Description

I have configured APISIX as decouple mode. The control plane works fine. I can call Admin API however in the data plane container it shows as below:

/usr/local/openresty/luajit/bin/luajit ./apisix/cli/apisix.lua init
failed to validate config: property "etcd" validation failed: property "prefix" is required

Furthermore, where can I find more documents or sample repository relate to deployment mode? I can only find it in the APISIX document.

Here's my config file:

version: 3.0.0-beta

#control_plane config:

apisix:
  node_listen: 9080
  enable_ipv6: false

  allow_admin:
    - 0.0.0.0/0

  control:
    ip: "0.0.0.0"
    port: 9092

deployment:
  role: control_plane
  role_control_plane:
    config_provider: etcd
    conf_server:
      listen: 0.0.0.0:9280
      cert: /certs/cp/apisix-cp.pem
      cert_key: /certs/cp/apisix-cp-key.pem

  admin:
    allow_admin:
      - 0.0.0.0/0

  etcd:
    host:                           # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
      - "http://etcd:2379"          # multiple etcd address
    prefix: "/apisix"               # apisix configurations prefix
    timeout: 30                     # 30 seconds

#data_plane config:

apisix:
  node_listen: 9080
  enable_ipv6: false

  enable_control: true
  control:
    ip: "0.0.0.0"
    port: 9092

deployment:
  role: data_plane
  role_data_plane:
    config_provider: control_plane
    control_plane:
      host:
        - "https://apisix-control-plane:9280"
      timeout: 30
  certs:
    cert: /certs/dp/apisix-dp.pem
    cert_key: /certs/dp/apisix-dp-key.pem
    trusted_ca_cert: /certs/ca/rootCA.pem

  admin:
    allow_admin:
      - 0.0.0.0/0

plugin_attr:
  prometheus:
    export_addr:
      ip: "0.0.0.0"
      port: 9091
      

#docker compose file:

version: "3"
services:
  apisix-dashboard:
    image: apache/apisix-dashboard:2.13-alpine
    restart: always
    volumes:
    - ./dashboard_conf/conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml
    ports:
    - "9000:9000"
    networks:
      apisix:

  apisix:
    image: apache/apisix:2.99.0-debian
    restart: always
    volumes:
      - ./apisix_dp_log:/usr/local/apisix/logs
      - ./apisix_dp_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
      - ./certs/dp:/certs/dp
      - ./certs/ca:/certs/ca
    depends_on:
      - apisix-control-plane
    ##network_mode: host
    ports:
      - "9080:9080/tcp"
      - "9091:9091/tcp"
      - "9443:9443/tcp"
      - "9092:9092/tcp"
    networks:
      apisix:

  apisix-control-plane:
    image: apache/apisix:2.99.0-debian
    restart: always
    volumes:
      - ./apisix_cp_log:/usr/local/apisix/logs
      - ./apisix_cp_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
      - ./certs/cp:/certs/cp
      - ./certs/ca:/certs/ca
    depends_on:
      - etcd
    ##network_mode: host
    ports:
      - "9180:9180/tcp"
      - "9280:9280/tcp"
    networks:
      apisix:

  etcd:
    image: bitnami/etcd:3.4.15
    restart: always
    volumes:
      - etcd_data:/bitnami/etcd
    environment:
      ETCD_ENABLE_V2: "true"
      ALLOW_NONE_AUTHENTICATION: "yes"
      ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379"
      ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
    ports:
      - "2379:2379/tcp"
    networks:
      apisix:

  prometheus:
    image: prom/prometheus:v2.25.0
    restart: always
    volumes:
      - ./prometheus_conf/prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    networks:
      apisix:

  grafana:
    image: grafana/grafana:7.3.7
    restart: always
    ports:
      - "3000:3000"
    volumes:
      - "./grafana_conf/provisioning:/etc/grafana/provisioning"
      - "./grafana_conf/dashboards:/var/lib/grafana/dashboards"
      - "./grafana_conf/config/grafana.ini:/etc/grafana/grafana.ini"
    networks:
      apisix:

networks:
  apisix:
    driver: bridge

volumes:
  etcd_data:
    driver: local

Note: on APISIX 2.15.0, I also got the same problem.

Environment

  • APISIX version (3.0.0-Beta):
  • Run as Docker Container

Metadata

Metadata

Assignees

No one assigned

    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