NAME

IO::K8s::Traefik - Traefik CRD resource map provider for IO::K8s

VERSION

version 1.108

SYNOPSIS

my $k8s = IO::K8s->new(with => ['IO::K8s::Traefik']);

my $ir = $k8s->new_object('IngressRoute',
    metadata => { name => 'my-route', namespace => 'default' },
    spec => {
        entryPoints => ['web'],
        routes => [{ match => 'Host(`example.com`)', kind => 'Rule' }],
    },
);

print $ir->to_yaml;

DESCRIPTION

Resource map provider for Traefik Custom Resource Definitions. Registers 10 CRD classes for traefik.io/v1alpha1, modeled to full depth: spec (and, where upstream declares one, status) is a typed object graph of 76 further IO::K8s::Traefik::V1alpha1::* classes, one per upstream Go structure, named after the upstream Go types (IO::K8s::Traefik::V1alpha1::Middleware's rateLimit is an IO::K8s::Traefik::V1alpha1::RateLimit, and so on down) rather than an opaque hashref. Embedded core types are referenced, not re-modeled — a route's middlewares/parentRefs are Core::V1::SecretReference. A Go type used by more than one Kind (Service, Sticky, Cookie, ServerHealthCheck, IPStrategy, ...) is one shared class, not a copy per Kind.

Not loaded by default — opt in via the with constructor parameter of IO::K8s or by calling $k8s->add('IO::K8s::Traefik') at runtime.

Included CRDs (traefik.io/v1alpha1)

All ten Kinds are namespace-scoped.

  • IngressRoute -- the CRD implementation of a Traefik HTTP router: matches incoming HTTP requests against a set of routes, each attaching optional middlewares and TLS settings.

  • IngressRouteTCP -- the CRD implementation of a Traefik TCP router: the TCP counterpart of IngressRoute.

  • IngressRouteUDP -- the CRD implementation of a Traefik UDP router: the UDP counterpart of IngressRoute.

  • Middleware -- the CRD implementation of a Traefik middleware: a reusable HTTP request/response transformation (redirect, header rewrite, rate limiting, basic auth, ...) attached to one or more IngressRoutes.

  • MiddlewareTCP -- the CRD implementation of a Traefik TCP middleware: the TCP counterpart of Middleware (e.g. InFlightConn, IP allow/deny-listing), attached to IngressRouteTCP routes.

  • ServersTransport -- the CRD implementation of a ServersTransport: configures the HTTP connection between Traefik and its backend servers (TLS trust, timeouts, certificates).

  • ServersTransportTCP -- the CRD implementation of a TCPServersTransport: the TCP counterpart of ServersTransport (proxy protocol, TLS, timeouts for TCP backends).

  • TLSOption -- the CRD implementation of a Traefik TLS Option: configures parameters of the TLS connection (protocol versions, cipher suites, client authentication) on a Traefik entry point.

  • TLSStore -- the CRD implementation of a Traefik TLS Store: a store of TLS certificates, in particular the default certificate Traefik falls back to. Traefik only ever consults the store named default.

  • TraefikService -- the CRD implementation of a Traefik Service: an abstraction layered on top of Kubernetes Services for weighted round-robin load-balancing, mirroring, and failover across one or more backend services.

SEE ALSO

IO::K8s

Traefik documentation

Traefik Kubernetes CRD reference

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/pplu/io-k8s-p5/issues.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHORS

  • Torsten Raudssus <getty@cpan.org>

  • Jose Luis Martinez Torres <jlmartin@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018-2026 by Jose Luis Martinez Torres <jlmartin@cpan.org>.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004