@kubernetes-models/traefik
Version:
201 lines (200 loc) • 10.4 kB
TypeScript
import { IObjectMeta } from "@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta";
import { Model, ModelData } from "@kubernetes-models/base";
/**
* IngressRoute is the CRD implementation of a Traefik HTTP Router.
*/
export interface IIngressRoute {
/**
* APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
*/
"apiVersion": "traefik.io/v1alpha1";
/**
* Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
*/
"kind": "IngressRoute";
"metadata": IObjectMeta;
/**
* IngressRouteSpec defines the desired state of IngressRoute.
*/
"spec": {
/**
* EntryPoints defines the list of entry point names to bind to. Entry points have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/entrypoints/ Default: all.
*/
"entryPoints"?: Array<string>;
/**
* Routes defines the list of routes.
*/
"routes": Array<{
/**
* Kind defines the kind of the route. Rule is the only supported kind.
*/
"kind": "Rule";
/**
* Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule
*/
"match": string;
/**
* Middlewares defines the list of references to Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware
*/
"middlewares"?: Array<{
/**
* Name defines the name of the referenced Middleware resource.
*/
"name": string;
/**
* Namespace defines the namespace of the referenced Middleware resource.
*/
"namespace"?: string;
}>;
/**
* Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority
*/
"priority"?: number;
/**
* Services defines the list of Service. It can contain any combination of TraefikService and/or reference to a Kubernetes Service.
*/
"services"?: Array<{
/**
* Kind defines the kind of the Service.
*/
"kind"?: "Service" | "TraefikService";
/**
* Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field.
*/
"name": string;
/**
* Namespace defines the namespace of the referenced Kubernetes Service or TraefikService.
*/
"namespace"?: string;
/**
* NativeLB controls, when creating the load-balancer, whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP. The Kubernetes Service itself does load-balance to the pods. By default, NativeLB is false.
*/
"nativeLB"?: boolean;
/**
* PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true.
*/
"passHostHeader"?: boolean;
/**
* Port defines the port of a Kubernetes Service. This can be a reference to a named port.
*/
"port"?: number | string;
/**
* ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.
*/
"responseForwarding"?: {
/**
* FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body. A negative value means to flush immediately after each write to the client. This configuration is ignored when ReverseProxy recognizes a response as a streaming response; for such responses, writes are flushed to the client immediately. Default: 100ms
*/
"flushInterval"?: string;
};
/**
* Scheme defines the scheme to use for the request to the upstream Kubernetes Service. It defaults to https when Kubernetes Service port is 443, http otherwise.
*/
"scheme"?: string;
/**
* ServersTransport defines the name of ServersTransport resource to use. It allows to configure the transport between Traefik and your servers. Can only be used on a Kubernetes Service.
*/
"serversTransport"?: string;
/**
* Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions
*/
"sticky"?: {
/**
* Cookie defines the sticky cookie configuration.
*/
"cookie"?: {
/**
* HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript.
*/
"httpOnly"?: boolean;
/**
* Name defines the Cookie name.
*/
"name"?: string;
/**
* SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
*/
"sameSite"?: string;
/**
* Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS).
*/
"secure"?: boolean;
};
};
/**
* Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment.
*/
"strategy"?: string;
/**
* Weight defines the weight and should only be specified when Name references a TraefikService object (and to be precise, one that embeds a Weighted Round Robin).
*/
"weight"?: number;
}>;
}>;
/**
* TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls
*/
"tls"?: {
/**
* CertResolver defines the name of the certificate resolver to use. Cert resolvers have to be configured in the static configuration. More info: https://doc.traefik.io/traefik/v2.10/https/acme/#certificate-resolvers
*/
"certResolver"?: string;
/**
* Domains defines the list of domains that will be used to issue certificates. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#domains
*/
"domains"?: Array<{
/**
* Main defines the main domain name.
*/
"main"?: string;
/**
* SANs defines the subject alternative domain names.
*/
"sans"?: Array<string>;
}>;
/**
* Options defines the reference to a TLSOption, that specifies the parameters of the TLS connection. If not defined, the `default` TLSOption is used. More info: https://doc.traefik.io/traefik/v2.10/https/tls/#tls-options
*/
"options"?: {
/**
* Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption
*/
"name": string;
/**
* Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption
*/
"namespace"?: string;
};
/**
* SecretName is the name of the referenced Kubernetes Secret to specify the certificate details.
*/
"secretName"?: string;
/**
* Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used.
*/
"store"?: {
/**
* Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore
*/
"name": string;
/**
* Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore
*/
"namespace"?: string;
};
};
};
}
/**
* IngressRoute is the CRD implementation of a Traefik HTTP Router.
*/
export declare class IngressRoute extends Model<IIngressRoute> implements IIngressRoute {
"apiVersion": IIngressRoute["apiVersion"];
"kind": IIngressRoute["kind"];
"metadata": IIngressRoute["metadata"];
"spec": IIngressRoute["spec"];
static apiVersion: IIngressRoute["apiVersion"];
static kind: IIngressRoute["kind"];
static is: import("@kubernetes-models/base").TypeMetaGuard<IIngressRoute>;
constructor(data?: ModelData<IIngressRoute>);
}