UNPKG

@kubernetes-models/traefik

Version:
314 lines (313 loc) 17.1 kB
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>); }