Documentation ¶
Index ¶
- Constants
- type API
- type APIAccess
- type APICollection
- type APIGateway
- type APIPortal
- type APIService
- type APIServiceBackendPort
- type AccessControlPolicy
- type AccessControlPolicyAPIKey
- type AccessControlPolicyAPIKeyKey
- type AccessControlPolicyBasicAuth
- type AccessControlPolicyJWT
- type AccessControlPolicyOAuthIntro
- type AccessControlPolicyOIDC
- type AccessControlPolicyOIDCGoogle
- type AuthSession
- type AuthStateCookie
- type ClientConfig
- type ClientConfigAuth
- type Cluster
- type EdgeIngress
- type EdgeIngressACP
- type EdgeIngressService
- type EdgeIngressStatus
- type Fetcher
- type Ingress
- type IngressMeta
- type IngressRoute
- type IngressRouteTLS
- type OpenAPISpec
- type OpenAPISpecLocation
- type ResourceMeta
- type Route
- type RouteService
- type SecretReference
- type Service
- type TLSOptionRef
- type TokenSource
Constants ¶
const ( ResourceKindIngressRoute = "IngressRoute" ResourceKindTraefikService = "TraefikService" ResourceKindTLSOption = "TLSOption" )
Supported Traefik CRD kinds.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type API ¶ added in v1.2.0
type API struct { Name string `json:"name"` Namespace string `json:"namespace"` Labels map[string]string `json:"labels,omitempty"` PathPrefix string `json:"pathPrefix"` Service APIService `json:"service"` }
API holds the definition of an API configuration.
type APIAccess ¶ added in v1.2.0
type APIAccess struct { Name string `json:"name"` Labels map[string]string `json:"labels,omitempty"` Groups []string `json:"groups"` APISelector *metav1.LabelSelector `json:"apiSelector"` APICollectionSelector *metav1.LabelSelector `json:"apiCollectionSelector"` }
APIAccess holds the definition of an APIAccess configuration.
type APICollection ¶ added in v1.2.0
type APICollection struct { Name string `json:"name"` Labels map[string]string `json:"labels,omitempty"` PathPrefix string `json:"pathPrefix,omitempty"` APISelector metav1.LabelSelector `json:"apiSelector"` }
APICollection holds the definition of an APICollection resource.
type APIGateway ¶ added in v1.2.0
type APIGateway struct { Name string `json:"name"` Labels map[string]string `json:"labels,omitempty"` APIAccesses []string `json:"apiAccesses,omitempty"` CustomDomains []string `json:"customDomains,omitempty"` HubDomain string `json:"hubDomain"` }
APIGateway holds the definition of an APIGateway resource.
type APIPortal ¶ added in v1.2.0
type APIPortal struct { Name string `json:"name"` Description string `json:"description,omitempty"` APIGateway string `json:"apiGateway"` CustomDomains []string `json:"customDomains,omitempty"` HubDomain string `json:"hubDomain"` }
APIPortal holds the definition of an APIPortal configuration.
type APIService ¶ added in v1.2.0
type APIService struct { Name string `json:"name"` Port APIServiceBackendPort `json:"port"` OpenAPISpec OpenAPISpec `json:"openApiSpec,omitempty"` }
APIService configures the service to exposed on the edge.
type APIServiceBackendPort ¶ added in v1.2.0
APIServiceBackendPort is the service port being referenced.
type AccessControlPolicy ¶
type AccessControlPolicy struct { Name string `json:"name"` Method string `json:"method"` JWT *AccessControlPolicyJWT `json:"jwt,omitempty"` APIKey *AccessControlPolicyAPIKey `json:"apiKey,omitempty"` BasicAuth *AccessControlPolicyBasicAuth `json:"basicAuth,omitempty"` OIDC *AccessControlPolicyOIDC `json:"oidc,omitempty"` OIDCGoogle *AccessControlPolicyOIDCGoogle `json:"oidcGoogle,omitempty"` OAuthIntro *AccessControlPolicyOAuthIntro `json:"oAuthIntro,omitempty"` }
AccessControlPolicy describes an Access Control Policy configured within a cluster.
type AccessControlPolicyAPIKey ¶ added in v1.2.0
type AccessControlPolicyAPIKey struct { KeySource TokenSource `json:"keySource,omitempty"` Keys []AccessControlPolicyAPIKeyKey `json:"keys,omitempty"` ForwardHeaders map[string]string `json:"forwardHeaders,omitempty"` }
AccessControlPolicyAPIKey describes the settings for APIKey authentication within an access control policy.
type AccessControlPolicyAPIKeyKey ¶ added in v1.2.0
type AccessControlPolicyAPIKeyKey struct { ID string `json:"id"` Metadata map[string]string `json:"metadata"` Value string `json:"value"` // Redacted. }
AccessControlPolicyAPIKeyKey defines an API key.
type AccessControlPolicyBasicAuth ¶
type AccessControlPolicyBasicAuth struct { Users string `json:"users,omitempty"` // Redacted. Realm string `json:"realm,omitempty"` StripAuthorizationHeader bool `json:"stripAuthorizationHeader,omitempty"` ForwardUsernameHeader string `json:"forwardUsernameHeader,omitempty"` }
AccessControlPolicyBasicAuth holds the HTTP basic authentication configuration.
type AccessControlPolicyJWT ¶
type AccessControlPolicyJWT struct { SigningSecret string `json:"signingSecret,omitempty"` SigningSecretBase64Encoded bool `json:"signingSecretBase64Encoded"` PublicKey string `json:"publicKey,omitempty"` JWKsFile string `json:"jwksFile,omitempty"` JWKsURL string `json:"jwksUrl,omitempty"` StripAuthorizationHeader bool `json:"stripAuthorizationHeader,omitempty"` ForwardHeaders map[string]string `json:"forwardHeaders,omitempty"` TokenQueryKey string `json:"tokenQueryKey,omitempty"` Claims string `json:"claims,omitempty"` }
AccessControlPolicyJWT describes the settings for JWT authentication within an access control policy.
type AccessControlPolicyOAuthIntro ¶ added in v1.2.0
type AccessControlPolicyOAuthIntro struct { ClientConfig ClientConfig `json:"clientConfig,omitempty"` TokenSource TokenSource `json:"tokenSource,omitempty"` Claims string `json:"claims,omitempty"` ForwardHeaders map[string]string `json:"forwardHeaders,omitempty"` }
AccessControlPolicyOAuthIntro holds the OAuth 2.0 token introspection configuration.
type AccessControlPolicyOIDC ¶ added in v0.6.0
type AccessControlPolicyOIDC struct { Issuer string `json:"issuer,omitempty"` ClientID string `json:"clientId,omitempty"` Secret *SecretReference `json:"secret,omitempty"` RedirectURL string `json:"redirectUrl,omitempty"` LogoutURL string `json:"logoutUrl,omitempty"` Scopes []string `json:"scopes,omitempty"` AuthParams map[string]string `json:"authParams,omitempty"` StateCookie *AuthStateCookie `json:"stateCookie,omitempty"` Session *AuthSession `json:"session,omitempty"` ForwardHeaders map[string]string `json:"forwardHeaders,omitempty"` Claims string `json:"claims,omitempty"` }
AccessControlPolicyOIDC holds the OIDC configuration.
type AccessControlPolicyOIDCGoogle ¶ added in v0.6.0
type AccessControlPolicyOIDCGoogle struct { ClientID string `json:"clientId,omitempty"` Secret *SecretReference `json:"secret,omitempty"` RedirectURL string `json:"redirectUrl,omitempty"` LogoutURL string `json:"logoutUrl,omitempty"` AuthParams map[string]string `json:"authParams,omitempty"` StateCookie *AuthStateCookie `json:"stateCookie,omitempty"` Session *AuthSession `json:"session,omitempty"` ForwardHeaders map[string]string `json:"forwardHeaders,omitempty"` Emails []string `json:"emails,omitempty"` }
AccessControlPolicyOIDCGoogle holds the Google OIDC configuration.
type AuthSession ¶ added in v0.6.0
type AuthSession struct { Path string `json:"path,omitempty"` Domain string `json:"domain,omitempty"` SameSite string `json:"sameSite,omitempty"` Secure bool `json:"secure,omitempty"` Refresh *bool `json:"refresh,omitempty"` }
AuthSession carries session and session cookie configuration.
type AuthStateCookie ¶ added in v0.6.0
type AuthStateCookie struct { Path string `json:"path,omitempty"` Domain string `json:"domain,omitempty"` SameSite string `json:"sameSite,omitempty"` Secure bool `json:"secure,omitempty"` }
AuthStateCookie carries the state cookie configuration.
type ClientConfig ¶ added in v1.2.0
type ClientConfig struct { httpclient.Config URL string `json:"url,omitempty"` Auth ClientConfigAuth `json:"auth,omitempty"` Headers map[string]string `json:"headers,omitempty"` TokenTypeHint string `json:"tokenTypeHint,omitempty"` }
ClientConfig configures the HTTP client of the OAuth 2.0 Token Introspection ACP handler.
type ClientConfigAuth ¶ added in v1.2.0
type ClientConfigAuth struct { Kind string `json:"kind"` Secret SecretReference `json:"secret"` }
ClientConfigAuth configures authentication to the Authorization Server.
type Cluster ¶
type Cluster struct { Ingresses map[string]*Ingress `json:"ingresses"` IngressRoutes map[string]*IngressRoute `json:"ingressRoutes"` Services map[string]*Service `json:"services"` AccessControlPolicies map[string]*AccessControlPolicy `json:"accessControlPolicies"` EdgeIngresses map[string]*EdgeIngress `json:"edgeIngresses"` APIs map[string]*API `json:"apis"` APIAccesses map[string]*APIAccess `json:"apiAccesses"` APICollections map[string]*APICollection `json:"apiCollections"` APIPortals map[string]*APIPortal `json:"apiPortals"` APIGateways map[string]*APIGateway `json:"apiGateways"` }
Cluster describes a Cluster.
type EdgeIngress ¶ added in v0.6.0
type EdgeIngress struct { Name string `json:"name"` Namespace string `json:"namespace"` Status EdgeIngressStatus `json:"status"` Service EdgeIngressService `json:"service"` ACP *EdgeIngressACP `json:"acp,omitempty"` }
EdgeIngress holds the definition of an EdgeIngress configuration.
type EdgeIngressACP ¶ added in v0.6.0
type EdgeIngressACP struct {
Name string `json:"name"`
}
EdgeIngressACP configures the ACP to use on the Ingress.
type EdgeIngressService ¶ added in v0.6.0
EdgeIngressService configures the service to exposed on the edge.
type EdgeIngressStatus ¶ added in v0.6.0
type EdgeIngressStatus string
EdgeIngressStatus is the exposition status of an edge ingress.
const ( EdgeIngressStatusUp EdgeIngressStatus = "up" EdgeIngressStatusDown EdgeIngressStatus = "down" )
Possible value of the EdgeIngressStatus.
type Fetcher ¶
type Fetcher struct {
// contains filtered or unexported fields
}
Fetcher fetches Kubernetes resources and converts them into a filtered and simplified state.
func NewFetcher ¶
func NewFetcher(ctx context.Context, clientSet clientset.Interface, traefikClientSet traefikclientset.Interface, hubClientSet hubclientset.Interface) (*Fetcher, error)
NewFetcher creates a new Fetcher.
func (*Fetcher) FetchState ¶
FetchState assembles a cluster state from Kubernetes resources.
type Ingress ¶
type Ingress struct { ResourceMeta IngressMeta IngressClassName *string `json:"ingressClassName,omitempty"` TLS []netv1.IngressTLS `json:"tls,omitempty"` Rules []netv1.IngressRule `json:"rules,omitempty"` DefaultBackend *netv1.IngressBackend `json:"defaultBackend,omitempty"` Services []string `json:"services,omitempty"` }
Ingress describes an Kubernetes Ingress.
type IngressMeta ¶
type IngressMeta struct { Annotations map[string]string `json:"annotations,omitempty"` Labels map[string]string `json:"labels,omitempty"` }
IngressMeta represents the common Ingress metadata properties.
type IngressRoute ¶
type IngressRoute struct { ResourceMeta IngressMeta TLS *IngressRouteTLS `json:"tls,omitempty"` Routes []Route `json:"routes,omitempty"` Services []string `json:"services,omitempty"` }
IngressRoute describes a Traefik IngressRoute.
type IngressRouteTLS ¶
type IngressRouteTLS struct { Domains []traefikv1alpha1.Domain `json:"domains,omitempty"` SecretName string `json:"secretName,omitempty"` Options *TLSOptionRef `json:"options,omitempty"` }
IngressRouteTLS represents a simplified Traefik IngressRoute TLS configuration.
type OpenAPISpec ¶ added in v1.2.0
type OpenAPISpec struct { URL string `json:"url,omitempty"` Path string `json:"path,omitempty"` Port *APIServiceBackendPort `json:"port,omitempty"` Protocol string `json:"protocol,omitempty"` }
OpenAPISpec defines the OpenAPI spec of an API.
type OpenAPISpecLocation ¶ added in v1.2.0
OpenAPISpecLocation describes the location of an OpenAPI specification.
type ResourceMeta ¶
type ResourceMeta struct { Kind string `json:"kind"` Group string `json:"group"` Name string `json:"name"` Namespace string `json:"namespace"` }
ResourceMeta represents the metadata which identify a Kubernetes resource.
type Route ¶
type Route struct { Match string `json:"match"` Services []RouteService `json:"services,omitempty"` }
Route represents a Traefik IngressRoute route.
type RouteService ¶
type RouteService struct { Namespace string `json:"namespace"` Name string `json:"name"` PortName string `json:"portName,omitempty"` PortNumber int32 `json:"portNumber,omitempty"` }
RouteService represents a Kubernetes service targeted by a Traefik IngressRoute route.
type SecretReference ¶ added in v0.6.0
type SecretReference struct { Name string `json:"name"` Namespace string `json:"namespace,omitempty"` }
SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace.
type Service ¶
type Service struct { Name string `json:"name"` Namespace string `json:"namespace"` Type corev1.ServiceType `json:"type"` Annotations map[string]string `json:"annotations,omitempty"` ExternalIPs []string `json:"externalIPs,omitempty"` ExternalPorts []int `json:"externalPorts,omitempty"` }
Service describes a Service.
type TLSOptionRef ¶
type TLSOptionRef struct { Name string `json:"name"` Namespace string `json:"namespace,omitempty"` }
TLSOptionRef references TLSOptions.
type TokenSource ¶ added in v1.2.0
type TokenSource struct { Header string `json:"header,omitempty"` HeaderAuthScheme string `json:"headerAuthScheme,omitempty"` Query string `json:"query,omitempty"` Cookie string `json:"cookie,omitempty"` }
TokenSource describes where to find a token in an HTTP request.