Skip to content

API

Traefik Enterprise exposes information, and the status of a cluster through its API.

Sensitive Information

Enabling the API should be done with caution, as it will expose all configuration, which may include sensitive data. In production, the API should be secured with authentication and authorization.

Configuration

If you enable the API, a new special service named api@internal is created and can be referenced in a router.

To enable the API, use the provided option in the static configuration:

# [...]
entrypoints:
  # [...]
  internal:
    address: ":8888"

api:
  dashboard: true
# [...]
[entryPoints]
  # [...]
  [entryPoints.internal]
    address = ":8888"

[api]
  dashboard = true

Once the API has been enabled in the static configuration, a route configuration can be defined in the dynamic configuration:

labels:
  - "traefik.http.routers.api.rule=Host(`traefikee.domain.org`)"
  - "traefik.http.routers.api.service=api@internal"
  - "traefik.http.routers.api.entrypoints=internal"
  - "traefik.http.routers.api.middlewares=auth"
  - "traefik.http.middlewares.auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # user: test password:test
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - internal
  routes:
    - match: Host(`traefikee.domain.org`)
      kind: Rule
      services:
        - name: api@internal
      middlewares:
        - name: auth
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: auth
spec:
  basicAuth:
    secret: authsecret

---
apiVersion: v1
kind: Secret
metadata:
  name: authsecret
  namespace: default

data:
  users: |2
    dGVzdDokYXByMSRINnVza2trVyRJZ1hMUDZld1RyU3VCa1RycUU4d2ov
- "traefik.http.routers.api.rule=Host(`traefikee.domain.org`)"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.entrypoints=internal"
- "traefik.http.routers.api.middlewares=auth"
- "traefik.http.middlewares.auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # user: test password:test
"labels": {
  "traefik.http.routers.api.rule=Host(`traefikee.domain.org`)"
  "traefik.http.routers.api.service=api@internal"
  "traefik.http.routers.api.entrypoints=internal"
  "traefik.http.routers.api.middlewares=auth"
  "traefik.http.middlewares.auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # user: test password:test
}
labels:
  - "traefik.http.routers.api.rule=Host(`traefikee.domain.org`)"
  - "traefik.http.routers.api.service=api@internal"
  - "traefik.http.routers.api.entrypoints=internal"
  - "traefik.http.routers.api.middlewares=auth"
  - "traefik.http.middlewares.auth.basicauth.users=test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # user: test password:test
http:
  routers:
    api:
      rule: Host(`traefikee.domain.org`)
      service: api@internal
      entryPoints:
        - internal
      middlewares:
        - auth
  middlewares:
    auth:
      basicAuth:
        users:
          - "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/" # user: test password:test
[http.routers.api]
  rule = "Host(`traefikee.domain.org`)"
  service = "api@internal"
  middlewares = ["auth"]
  entryPoints = ["internal"]

[http.middlewares.auth.basicAuth]
  users = [
    "test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", # user: test password:test
  ]

insecure

Optional, Default=false

Enable the API in insecure mode, which means that the API will be available directly on the entryPoint named traefik.

Info

If the entryPoint named traefik is not configured, it will be automatically created on port 8080.

[api]
  insecure = true
api:
  insecure: true

dashboard

Optional, Default=true

Enable the dashboard. More about the dashboard features.

[api]
  dashboard = true
api:
  dashboard: true

debug

Optional, Default=false

Enable additional endpoints for debugging and profiling, served under /debug/.

[api]
  debug = true
api:
  debug: true

Endpoints

All the following endpoints must be accessed with a GET HTTP request.

Path Description
/api/cluster/overview Returns information about the cluster.
/api/cluster/nodes Lists all nodes in the cluster.
/api/cluster/license Returns information about the cluster license.
/api/cluster/errors Lists all errors related to the cluster.
/api/cluster/notification Returns information about license expiry.
/api/http/routers Lists all the HTTP routers information.
/api/http/routers/{name} Returns the information about the HTTP router specified by name.
/api/http/services Lists all the HTTP services information.
/api/http/services/{name} Returns the information about the HTTP service specified by name.
/api/http/middlewares Lists all the HTTP middlewares information.
/api/http/middlewares/{name} Returns the information about the HTTP middleware specified by name.
/api/tcp/routers Lists all the TCP routers information.
/api/tcp/routers/{name} Returns the information about the TCP router specified by name.
/api/tcp/services Lists all the TCP services information.
/api/tcp/services/{name} Returns the information about the TCP service specified by name.
/api/udp/routers Lists all the UDP routers information.
/api/udp/routers/{name} Returns the information about the UDP router specified by name.
/api/udp/services Lists all the UDP services information.
/api/udp/services/{name} Returns the information about the UDP service specified by name.
/api/mesh/services Lists all the Mesh services information.
/api/mesh/services/{id} Returns the information about the Mesh service specified by id.
/api/mesh/errors Lists all the Mesh errors.
/api/mesh/overview Returns the information about the Mesh service.
/api/entrypoints Lists all the entry points information.
/api/entrypoints/{name} Returns the information about the entry point specified by name.
/api/overview Returns statistic information about http, tcp and udp as well as enabled features and providers.
/api/errors Returns errors in the configuration.
/api/version Returns information about Traefik Enterprise version.
/debug/vars See the expvar Go documentation.
/debug/pprof/ See the pprof Index Go documentation.
/debug/pprof/cmdline See the pprof Cmdline Go documentation.
/debug/pprof/profile See the pprof Profile Go documentation.
/debug/pprof/symbol See the pprof Symbol Go documentation.
/debug/pprof/trace See the pprof Trace Go documentation.