Skip to content

Commit

Permalink
add traefik CRDs under new group name (#166)
Browse files Browse the repository at this point in the history
  • Loading branch information
markormesher authored May 29, 2023
1 parent 09ef4b8 commit 6c233ad
Show file tree
Hide file tree
Showing 9 changed files with 2,269 additions and 0 deletions.
270 changes: 270 additions & 0 deletions traefik.io/ingressroute_v1alpha1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,270 @@
{
"description": "IngressRoute is the CRD implementation of a Traefik HTTP Router.",
"properties": {
"apiVersion": {
"description": "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",
"type": "string"
},
"kind": {
"description": "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",
"type": "string"
},
"metadata": {
"type": "object"
},
"spec": {
"description": "IngressRouteSpec defines the desired state of IngressRoute.",
"properties": {
"entryPoints": {
"description": "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.",
"items": {
"type": "string"
},
"type": "array"
},
"routes": {
"description": "Routes defines the list of routes.",
"items": {
"description": "Route holds the HTTP route configuration.",
"properties": {
"kind": {
"description": "Kind defines the kind of the route. Rule is the only supported kind.",
"enum": [
"Rule"
],
"type": "string"
},
"match": {
"description": "Match defines the router's rule. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#rule",
"type": "string"
},
"middlewares": {
"description": "Middlewares defines the list of references to Middleware resources. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-middleware",
"items": {
"description": "MiddlewareRef is a reference to a Middleware resource.",
"properties": {
"name": {
"description": "Name defines the name of the referenced Middleware resource.",
"type": "string"
},
"namespace": {
"description": "Namespace defines the namespace of the referenced Middleware resource.",
"type": "string"
}
},
"required": [
"name"
],
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"priority": {
"description": "Priority defines the router's priority. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#priority",
"type": "integer"
},
"services": {
"description": "Services defines the list of Service. It can contain any combination of TraefikService and/or reference to a Kubernetes Service.",
"items": {
"description": "Service defines an upstream HTTP service to proxy traffic to.",
"properties": {
"kind": {
"description": "Kind defines the kind of the Service.",
"enum": [
"Service",
"TraefikService"
],
"type": "string"
},
"name": {
"description": "Name defines the name of the referenced Kubernetes Service or TraefikService. The differentiation between the two is specified in the Kind field.",
"type": "string"
},
"namespace": {
"description": "Namespace defines the namespace of the referenced Kubernetes Service or TraefikService.",
"type": "string"
},
"nativeLB": {
"description": "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.",
"type": "boolean"
},
"passHostHeader": {
"description": "PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service. By default, passHostHeader is true.",
"type": "boolean"
},
"port": {
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
],
"description": "Port defines the port of a Kubernetes Service. This can be a reference to a named port.",
"x-kubernetes-int-or-string": true
},
"responseForwarding": {
"description": "ResponseForwarding defines how Traefik forwards the response from the upstream Kubernetes Service to the client.",
"properties": {
"flushInterval": {
"description": "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",
"type": "string"
}
},
"type": "object",
"additionalProperties": false
},
"scheme": {
"description": "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.",
"type": "string"
},
"serversTransport": {
"description": "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.",
"type": "string"
},
"sticky": {
"description": "Sticky defines the sticky sessions configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/services/#sticky-sessions",
"properties": {
"cookie": {
"description": "Cookie defines the sticky cookie configuration.",
"properties": {
"httpOnly": {
"description": "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript.",
"type": "boolean"
},
"name": {
"description": "Name defines the Cookie name.",
"type": "string"
},
"sameSite": {
"description": "SameSite defines the same site policy. More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite",
"type": "string"
},
"secure": {
"description": "Secure defines whether the cookie can only be transmitted over an encrypted connection (i.e. HTTPS).",
"type": "boolean"
}
},
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
},
"strategy": {
"description": "Strategy defines the load balancing strategy between the servers. RoundRobin is the only supported value at the moment.",
"type": "string"
},
"weight": {
"description": "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).",
"type": "integer"
}
},
"required": [
"name"
],
"type": "object",
"additionalProperties": false
},
"type": "array"
}
},
"required": [
"kind",
"match"
],
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"tls": {
"description": "TLS defines the TLS configuration. More info: https://doc.traefik.io/traefik/v2.10/routing/routers/#tls",
"properties": {
"certResolver": {
"description": "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",
"type": "string"
},
"domains": {
"description": "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",
"items": {
"description": "Domain holds a domain name with SANs.",
"properties": {
"main": {
"description": "Main defines the main domain name.",
"type": "string"
},
"sans": {
"description": "SANs defines the subject alternative domain names.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object",
"additionalProperties": false
},
"type": "array"
},
"options": {
"description": "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",
"properties": {
"name": {
"description": "Name defines the name of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption",
"type": "string"
},
"namespace": {
"description": "Namespace defines the namespace of the referenced TLSOption. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsoption",
"type": "string"
}
},
"required": [
"name"
],
"type": "object",
"additionalProperties": false
},
"secretName": {
"description": "SecretName is the name of the referenced Kubernetes Secret to specify the certificate details.",
"type": "string"
},
"store": {
"description": "Store defines the reference to the TLSStore, that will be used to store certificates. Please note that only `default` TLSStore can be used.",
"properties": {
"name": {
"description": "Name defines the name of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore",
"type": "string"
},
"namespace": {
"description": "Namespace defines the namespace of the referenced TLSStore. More info: https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/#kind-tlsstore",
"type": "string"
}
},
"required": [
"name"
],
"type": "object",
"additionalProperties": false
}
},
"type": "object",
"additionalProperties": false
}
},
"required": [
"routes"
],
"type": "object",
"additionalProperties": false
}
},
"required": [
"metadata",
"spec"
],
"type": "object"
}
Loading

0 comments on commit 6c233ad

Please sign in to comment.