Traefik Mesh Controller API

The Traefik Mesh Controller API provides internal debugging and status endpoints for the Traefik Mesh controller pod. It exposes the current dynamic configuration built by the controller, the mesh topology, the readiness status of the controller, and per-node configuration for each Traefik Mesh proxy node. The API is accessed directly on the controller pod IP at port 9000 and is not exposed via Kubernetes service for security reasons. As of the last released version (v1.4.8, 2022-08-19) this surface has not changed and is unlikely to evolve given the project's dormant maintenance state.

Traefik Mesh Controller API is published by Traefik Mesh on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 2 JSON Schema definitions.

Tagged areas include Configuration, Debugging, Kubernetes, Service Mesh, and Status. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, a GitHub repository, and 2 JSON Schemas.

OpenAPI Specification

traefik-mesh-controller-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Traefik Mesh Controller API
  description: >-
    The Traefik Mesh Controller API provides internal debugging and status
    endpoints for the Traefik Mesh controller pod running in a Kubernetes
    cluster. It exposes the current dynamic Traefik configuration built by the
    controller, the mesh topology, the readiness state of the controller, and
    per-node configuration for each Traefik Mesh proxy node. This API is
    accessed directly on the controller pod IP at port 9000 and is intentionally
    not exposed via a Kubernetes Service for security reasons.


    Maintenance status: this surface is documented as of Traefik Mesh v1.4.8
    (released 2022-08-19), the most recent tagged release. The project has
    received only CI and documentation maintenance since then and there is no
    announced successor from Traefik Labs. Consumers should treat this API as
    stable in shape but unlikely to evolve.
  version: '1.4.8'
  x-maintenance: dormant
  x-last-release-date: '2022-08-19'
  contact:
    name: Traefik Labs
    url: https://traefik.io/
  license:
    name: Apache 2.0
    url: https://github.com/traefik/mesh/blob/master/LICENSE
externalDocs:
  description: Traefik Mesh API Documentation
  url: https://doc.traefik.io/traefik-mesh/
servers:
  - url: http://controller-pod-ip:9000
    description: Traefik Mesh Controller Pod (direct pod IP access)
tags:
  - name: Configuration
    description: >-
      Endpoints for retrieving the current dynamic Traefik configuration
      generated by the Traefik Mesh controller.
  - name: Status
    description: >-
      Endpoints for checking the readiness and status of the Traefik Mesh
      controller and proxy nodes.
  - name: Topology
    description: >-
      Endpoints for inspecting the mesh topology as seen by the controller.
paths:
  /api/configuration/current:
    get:
      operationId: getCurrentConfiguration
      summary: Get Current Controller Configuration
      description: >-
        Returns the current dynamic Traefik configuration built by the Traefik
        Mesh controller. This is the live configuration that the controller has
        computed from Kubernetes services, SMI resources, and annotations. The
        response may differ between requests as it reflects real-time state.
      tags:
        - Configuration
      responses:
        '200':
          description: Current dynamic configuration as raw JSON.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicConfiguration'
  /api/topology/current:
    get:
      operationId: getCurrentTopology
      summary: Get Current Mesh Topology
      description: >-
        Returns the current mesh topology as seen by the Traefik Mesh
        controller, including all discovered services, pods, and their
        relationships within the Kubernetes cluster.
      tags:
        - Topology
      responses:
        '200':
          description: Current mesh topology as raw JSON.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeshTopology'
  /api/status/nodes:
    get:
      operationId: getMeshNodes
      summary: Get Mesh Node Status
      description: >-
        Returns a JSON array containing details about the readiness and status
        of all Traefik Mesh proxy nodes visible to the controller. Returns an
        empty array (HTTP 200) if no nodes are visible.
      tags:
        - Status
      responses:
        '200':
          description: Array of mesh node status objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PodInfo'
  /api/status/node/{node}/configuration:
    get:
      operationId: getMeshNodeConfiguration
      summary: Get Mesh Node Configuration
      description: >-
        Returns the current Traefik configuration running on the specified
        Traefik Mesh proxy node, identified by its pod name. Returns 404 if
        the pod cannot be found, or other non-200 status codes on errors.
        The error message is returned in the body and logged on the controller.
      tags:
        - Status
      parameters:
        - name: node
          in: path
          required: true
          description: The Kubernetes pod name of the Traefik Mesh proxy node.
          schema:
            type: string
          example: traefik-mesh-proxy-abc12
      responses:
        '200':
          description: Current Traefik configuration on the specified node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicConfiguration'
        '404':
          description: Node pod not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal error retrieving node configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/status/readiness:
    get:
      operationId: getReadiness
      summary: Get Controller Readiness
      description: >-
        Returns HTTP 200 if the Traefik Mesh controller has successfully started
        and is ready to process requests. Returns HTTP 500 if the controller is
        not yet ready. Used as a readiness probe in Kubernetes deployments.
      tags:
        - Status
      responses:
        '200':
          description: Controller is ready.
          content:
            text/plain:
              schema:
                type: string
                example: OK
        '500':
          description: Controller is not ready.
          content:
            text/plain:
              schema:
                type: string
                example: Not Ready
components:
  schemas:
    PodInfo:
      type: object
      description: Status information about a Traefik Mesh proxy node pod.
      properties:
        Name:
          type: string
          description: Kubernetes pod name of the mesh proxy node.
          example: traefik-mesh-proxy-abc12
        IP:
          type: string
          description: Pod IP address.
          example: 10.0.0.5
        Ready:
          type: boolean
          description: Whether the pod is ready to handle traffic.
          example: true
    DynamicConfiguration:
      type: object
      description: >-
        Traefik dynamic configuration object containing HTTP, TCP, and UDP
        routing rules, middlewares, services, and TLS configuration generated
        by the Traefik Mesh controller.
      properties:
        http:
          type: object
          description: HTTP routing configuration including routers, services, and middlewares.
          properties:
            routers:
              type: object
              additionalProperties:
                type: object
            services:
              type: object
              additionalProperties:
                type: object
            middlewares:
              type: object
              additionalProperties:
                type: object
        tcp:
          type: object
          description: TCP routing configuration.
          properties:
            routers:
              type: object
              additionalProperties:
                type: object
            services:
              type: object
              additionalProperties:
                type: object
        udp:
          type: object
          description: UDP routing configuration.
          properties:
            routers:
              type: object
              additionalProperties:
                type: object
            services:
              type: object
              additionalProperties:
                type: object
    MeshTopology:
      type: object
      description: >-
        The mesh topology as computed by the Traefik Mesh controller, including
        all discovered Kubernetes services, pods, and traffic relationships.
      properties:
        services:
          type: object
          description: Map of discovered Kubernetes services in the mesh.
          additionalProperties:
            $ref: '#/components/schemas/ServiceEntry'
        pods:
          type: object
          description: Map of pods participating in the mesh.
          additionalProperties:
            type: object
    ServiceEntry:
      type: object
      description: A Kubernetes service entry in the mesh topology.
      properties:
        name:
          type: string
          description: Service name.
        namespace:
          type: string
          description: Kubernetes namespace.
        ports:
          type: array
          items:
            type: integer
          description: Exposed service ports.
        trafficType:
          type: string
          enum: [http, tcp, udp]
          description: Traffic type for this service.
    ErrorResponse:
      type: object
      description: Error response body.
      properties:
        error:
          type: string
          description: Error message.
          example: pod not found