@kubernetes-models/traefik
Version:
314 lines (313 loc) • 17.1 kB
TypeScript
import { IObjectMeta } from "@kubernetes-models/apimachinery/apis/meta/v1/ObjectMeta";
import { Model, ModelData } from "@kubernetes-models/base";
/**
* TraefikService is the CRD implementation of a Traefik Service. TraefikService object allows to: - Apply weight to Services on load-balancing - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice
*/
export interface ITraefikService {
/**
* 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": "TraefikService";
"metadata": IObjectMeta;
/**
* TraefikServiceSpec defines the desired state of a TraefikService.
*/
"spec": {
/**
* Mirroring defines the Mirroring service configuration.
*/
"mirroring"?: {
/**
* Kind defines the kind of the Service.
*/
"kind"?: "Service" | "TraefikService";
/**
* MaxBodySize defines the maximum size allowed for the body of the request. If the body is larger, the request is not mirrored. Default value is -1, which means unlimited size.
*/
"maxBodySize"?: number;
/**
* Mirrors defines the list of mirrors where Traefik will duplicate the traffic.
*/
"mirrors"?: 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;
/**
* Percent defines the part of the traffic to mirror. Supported values: 0 to 100.
*/
"percent"?: number;
/**
* 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;
}>;
/**
* 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;
};
/**
* Weighted defines the Weighted Round Robin configuration.
*/
"weighted"?: {
/**
* Services defines the list of Kubernetes Service and/or TraefikService to load-balance, with weight.
*/
"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;
}>;
/**
* Sticky defines whether sticky sessions are enabled. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#stickiness-and-load-balancing
*/
"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;
};
};
};
};
}
/**
* TraefikService is the CRD implementation of a Traefik Service. TraefikService object allows to: - Apply weight to Services on load-balancing - Mirror traffic on services More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-traefikservice
*/
export declare class TraefikService extends Model<ITraefikService> implements ITraefikService {
"apiVersion": ITraefikService["apiVersion"];
"kind": ITraefikService["kind"];
"metadata": ITraefikService["metadata"];
"spec": ITraefikService["spec"];
static apiVersion: ITraefikService["apiVersion"];
static kind: ITraefikService["kind"];
static is: import("@kubernetes-models/base").TypeMetaGuard<ITraefikService>;
constructor(data?: ModelData<ITraefikService>);
}