2804 lines
165 KiB
YAML
2804 lines
165 KiB
YAML
{{- if .Values.contour.manageCRDs }}
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.13.0
|
|
name: httpproxies.projectcontour.io
|
|
spec:
|
|
preserveUnknownFields: false
|
|
group: projectcontour.io
|
|
names:
|
|
kind: HTTPProxy
|
|
listKind: HTTPProxyList
|
|
plural: httpproxies
|
|
shortNames:
|
|
- proxy
|
|
- proxies
|
|
singular: httpproxy
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- description: Fully qualified domain name
|
|
jsonPath: .spec.virtualhost.fqdn
|
|
name: FQDN
|
|
type: string
|
|
- description: Secret with TLS credentials
|
|
jsonPath: .spec.virtualhost.tls.secretName
|
|
name: TLS Secret
|
|
type: string
|
|
- description: The current status of the HTTPProxy
|
|
jsonPath: .status.currentStatus
|
|
name: Status
|
|
type: string
|
|
- description: Description of the current status
|
|
jsonPath: .status.description
|
|
name: Status Description
|
|
type: string
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: HTTPProxy is an Ingress CRD specification.
|
|
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: HTTPProxySpec defines the spec of the CRD.
|
|
properties:
|
|
includes:
|
|
description: Includes allow for specific routing configuration to
|
|
be included from another HTTPProxy, possibly in another namespace.
|
|
items:
|
|
description: Include describes a set of policies that can be applied
|
|
to an HTTPProxy in a namespace.
|
|
properties:
|
|
conditions:
|
|
description: 'Conditions are a set of rules that are applied
|
|
to included HTTPProxies. In effect, they are added onto the
|
|
Conditions of included HTTPProxy Route structs. When applied,
|
|
they are merged using AND, with one exception: There can be
|
|
only one Prefix MatchCondition per Conditions slice. More
|
|
than one Prefix, or contradictory Conditions, will make the
|
|
include invalid. Exact and Regex match conditions are not
|
|
allowed on includes.'
|
|
items:
|
|
description: MatchCondition are a general holder for matching
|
|
rules for HTTPProxies. One of Prefix, Exact, Regex, Header
|
|
or QueryParameter must be provided.
|
|
properties:
|
|
exact:
|
|
description: Exact defines a exact match for a request.
|
|
This field is not allowed in include match conditions.
|
|
type: string
|
|
header:
|
|
description: Header specifies the header condition to
|
|
match.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies a substring that must
|
|
be present in the header value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a string that the header
|
|
value must be equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies that string matching
|
|
should be case insensitive. Note that this has no
|
|
effect on the Regex parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of the header to match
|
|
against. Name is required. Header names are case
|
|
insensitive.
|
|
type: string
|
|
notcontains:
|
|
description: NotContains specifies a substring that
|
|
must not be present in the header value.
|
|
type: string
|
|
notexact:
|
|
description: NoExact specifies a string that the header
|
|
value must not be equal to. The condition is true
|
|
if the header has any other value.
|
|
type: string
|
|
notpresent:
|
|
description: NotPresent specifies that condition is
|
|
true when the named header is not present. Note
|
|
that setting NotPresent to false does not make the
|
|
condition true if the named header is present.
|
|
type: boolean
|
|
present:
|
|
description: Present specifies that condition is true
|
|
when the named header is present, regardless of
|
|
its value. Note that setting Present to false does
|
|
not make the condition true if the named header
|
|
is absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a regular expression
|
|
pattern that must match the header value.
|
|
type: string
|
|
treatMissingAsEmpty:
|
|
description: TreatMissingAsEmpty specifies if the
|
|
header match rule specified header does not exist,
|
|
this header value will be treated as empty. Defaults
|
|
to false. Unlike the underlying Envoy implementation
|
|
this is **only** supported for negative matches
|
|
(e.g. NotContains, NotExact).
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
prefix:
|
|
description: Prefix defines a prefix match for a request.
|
|
type: string
|
|
queryParameter:
|
|
description: QueryParameter specifies the query parameter
|
|
condition to match.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies a substring that must
|
|
be present in the query parameter value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a string that the query
|
|
parameter value must be equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies that string matching
|
|
should be case insensitive. Note that this has no
|
|
effect on the Regex parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of the query parameter
|
|
to match against. Name is required. Query parameter
|
|
names are case insensitive.
|
|
type: string
|
|
prefix:
|
|
description: Prefix defines a prefix match for the
|
|
query parameter value.
|
|
type: string
|
|
present:
|
|
description: Present specifies that condition is true
|
|
when the named query parameter is present, regardless
|
|
of its value. Note that setting Present to false
|
|
does not make the condition true if the named query
|
|
parameter is absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a regular expression
|
|
pattern that must match the query parameter value.
|
|
type: string
|
|
suffix:
|
|
description: Suffix defines a suffix match for a query
|
|
parameter value.
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
regex:
|
|
description: Regex defines a regex match for a request.
|
|
This field is not allowed in include match conditions.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
name:
|
|
description: Name of the HTTPProxy
|
|
type: string
|
|
namespace:
|
|
description: Namespace of the HTTPProxy to include. Defaults
|
|
to the current namespace if not supplied.
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
ingressClassName:
|
|
description: IngressClassName optionally specifies the ingress class
|
|
to use for this HTTPProxy. This replaces the deprecated `kubernetes.io/ingress.class`
|
|
annotation. For backwards compatibility, when that annotation is
|
|
set, it is given precedence over this field.
|
|
type: string
|
|
routes:
|
|
description: Routes are the ingress routes. If TCPProxy is present,
|
|
Routes is ignored.
|
|
items:
|
|
description: Route contains the set of routes for a virtual host.
|
|
properties:
|
|
authPolicy:
|
|
description: AuthPolicy updates the authorization policy that
|
|
was set on the root HTTPProxy object for client requests that
|
|
match this route.
|
|
properties:
|
|
context:
|
|
additionalProperties:
|
|
type: string
|
|
description: Context is a set of key/value pairs that are
|
|
sent to the authentication server in the check request.
|
|
If a context is provided at an enclosing scope, the entries
|
|
are merged such that the inner scope overrides matching
|
|
keys from the outer scope.
|
|
type: object
|
|
disabled:
|
|
description: When true, this field disables client request
|
|
authentication for the scope of the policy.
|
|
type: boolean
|
|
type: object
|
|
conditions:
|
|
description: 'Conditions are a set of rules that are applied
|
|
to a Route. When applied, they are merged using AND, with
|
|
one exception: There can be only one Prefix, Exact or Regex
|
|
MatchCondition per Conditions slice. More than one of these
|
|
condition types, or contradictory Conditions, will make the
|
|
route invalid.'
|
|
items:
|
|
description: MatchCondition are a general holder for matching
|
|
rules for HTTPProxies. One of Prefix, Exact, Regex, Header
|
|
or QueryParameter must be provided.
|
|
properties:
|
|
exact:
|
|
description: Exact defines a exact match for a request.
|
|
This field is not allowed in include match conditions.
|
|
type: string
|
|
header:
|
|
description: Header specifies the header condition to
|
|
match.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies a substring that must
|
|
be present in the header value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a string that the header
|
|
value must be equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies that string matching
|
|
should be case insensitive. Note that this has no
|
|
effect on the Regex parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of the header to match
|
|
against. Name is required. Header names are case
|
|
insensitive.
|
|
type: string
|
|
notcontains:
|
|
description: NotContains specifies a substring that
|
|
must not be present in the header value.
|
|
type: string
|
|
notexact:
|
|
description: NoExact specifies a string that the header
|
|
value must not be equal to. The condition is true
|
|
if the header has any other value.
|
|
type: string
|
|
notpresent:
|
|
description: NotPresent specifies that condition is
|
|
true when the named header is not present. Note
|
|
that setting NotPresent to false does not make the
|
|
condition true if the named header is present.
|
|
type: boolean
|
|
present:
|
|
description: Present specifies that condition is true
|
|
when the named header is present, regardless of
|
|
its value. Note that setting Present to false does
|
|
not make the condition true if the named header
|
|
is absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a regular expression
|
|
pattern that must match the header value.
|
|
type: string
|
|
treatMissingAsEmpty:
|
|
description: TreatMissingAsEmpty specifies if the
|
|
header match rule specified header does not exist,
|
|
this header value will be treated as empty. Defaults
|
|
to false. Unlike the underlying Envoy implementation
|
|
this is **only** supported for negative matches
|
|
(e.g. NotContains, NotExact).
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
prefix:
|
|
description: Prefix defines a prefix match for a request.
|
|
type: string
|
|
queryParameter:
|
|
description: QueryParameter specifies the query parameter
|
|
condition to match.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies a substring that must
|
|
be present in the query parameter value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a string that the query
|
|
parameter value must be equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies that string matching
|
|
should be case insensitive. Note that this has no
|
|
effect on the Regex parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of the query parameter
|
|
to match against. Name is required. Query parameter
|
|
names are case insensitive.
|
|
type: string
|
|
prefix:
|
|
description: Prefix defines a prefix match for the
|
|
query parameter value.
|
|
type: string
|
|
present:
|
|
description: Present specifies that condition is true
|
|
when the named query parameter is present, regardless
|
|
of its value. Note that setting Present to false
|
|
does not make the condition true if the named query
|
|
parameter is absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a regular expression
|
|
pattern that must match the query parameter value.
|
|
type: string
|
|
suffix:
|
|
description: Suffix defines a suffix match for a query
|
|
parameter value.
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
regex:
|
|
description: Regex defines a regex match for a request.
|
|
This field is not allowed in include match conditions.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
cookieRewritePolicies:
|
|
description: The policies for rewriting Set-Cookie header attributes.
|
|
Note that rewritten cookie names must be unique in this list.
|
|
Order rewrite policies are specified in does not matter.
|
|
items:
|
|
properties:
|
|
domainRewrite:
|
|
description: DomainRewrite enables rewriting the Set-Cookie
|
|
Domain element. If not set, Domain will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the Domain
|
|
attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
name:
|
|
description: Name is the name of the cookie for which
|
|
attributes will be rewritten.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^()<>@,;:\\"\/[\]?={} \t\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
pathRewrite:
|
|
description: PathRewrite enables rewriting the Set-Cookie
|
|
Path element. If not set, Path will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the Path
|
|
attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^;\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
sameSite:
|
|
description: SameSite enables rewriting the Set-Cookie
|
|
SameSite element. If not set, SameSite attribute will
|
|
not be rewritten.
|
|
enum:
|
|
- Strict
|
|
- Lax
|
|
- None
|
|
type: string
|
|
secure:
|
|
description: Secure enables rewriting the Set-Cookie Secure
|
|
element. If not set, Secure attribute will not be rewritten.
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
directResponsePolicy:
|
|
description: DirectResponsePolicy returns an arbitrary HTTP
|
|
response directly.
|
|
properties:
|
|
body:
|
|
description: "Body is the content of the response body.
|
|
If this setting is omitted, no body is included in the
|
|
generated response. \n Note: Body is not recommended to
|
|
set too long otherwise it can have significant resource
|
|
usage impacts."
|
|
type: string
|
|
statusCode:
|
|
description: StatusCode is the HTTP response status to be
|
|
returned.
|
|
maximum: 599
|
|
minimum: 200
|
|
type: integer
|
|
required:
|
|
- statusCode
|
|
type: object
|
|
enableWebsockets:
|
|
description: Enables websocket support for the route.
|
|
type: boolean
|
|
healthCheckPolicy:
|
|
description: The health check policy for this route.
|
|
properties:
|
|
expectedStatuses:
|
|
description: The ranges of HTTP response statuses considered
|
|
healthy. Follow half-open semantics, i.e. for each range
|
|
the start is inclusive and the end is exclusive. Must
|
|
be within the range [100,600). If not specified, only
|
|
a 200 response status is considered healthy.
|
|
items:
|
|
properties:
|
|
end:
|
|
description: The end (exclusive) of a range of HTTP
|
|
status codes.
|
|
format: int64
|
|
maximum: 600
|
|
minimum: 101
|
|
type: integer
|
|
start:
|
|
description: The start (inclusive) of a range of HTTP
|
|
status codes.
|
|
format: int64
|
|
maximum: 599
|
|
minimum: 100
|
|
type: integer
|
|
required:
|
|
- end
|
|
- start
|
|
type: object
|
|
type: array
|
|
healthyThresholdCount:
|
|
description: The number of healthy health checks required
|
|
before a host is marked healthy
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
host:
|
|
description: The value of the host header in the HTTP health
|
|
check request. If left empty (default value), the name
|
|
"contour-envoy-healthcheck" will be used.
|
|
type: string
|
|
intervalSeconds:
|
|
description: The interval (seconds) between health checks
|
|
format: int64
|
|
type: integer
|
|
path:
|
|
description: HTTP endpoint used to perform health checks
|
|
on upstream service
|
|
type: string
|
|
timeoutSeconds:
|
|
description: The time to wait (seconds) for a health check
|
|
response
|
|
format: int64
|
|
type: integer
|
|
unhealthyThresholdCount:
|
|
description: The number of unhealthy health checks required
|
|
before a host is marked unhealthy
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- path
|
|
type: object
|
|
internalRedirectPolicy:
|
|
description: The policy to define when to handle redirects responses
|
|
internally.
|
|
properties:
|
|
allowCrossSchemeRedirect:
|
|
default: Never
|
|
description: AllowCrossSchemeRedirect Allow internal redirect
|
|
to follow a target URI with a different scheme than the
|
|
value of x-forwarded-proto. SafeOnly allows same scheme
|
|
redirect and safe cross scheme redirect, which means if
|
|
the downstream scheme is HTTPS, both HTTPS and HTTP redirect
|
|
targets are allowed, but if the downstream scheme is HTTP,
|
|
only HTTP redirect targets are allowed.
|
|
enum:
|
|
- Always
|
|
- Never
|
|
- SafeOnly
|
|
type: string
|
|
denyRepeatedRouteRedirect:
|
|
description: If DenyRepeatedRouteRedirect is true, rejects
|
|
redirect targets that are pointing to a route that has
|
|
been followed by a previous redirect from the current
|
|
route.
|
|
type: boolean
|
|
maxInternalRedirects:
|
|
description: MaxInternalRedirects An internal redirect is
|
|
not handled, unless the number of previous internal redirects
|
|
that a downstream request has encountered is lower than
|
|
this value.
|
|
format: int32
|
|
type: integer
|
|
redirectResponseCodes:
|
|
description: RedirectResponseCodes If unspecified, only
|
|
302 will be treated as internal redirect. Only 301, 302,
|
|
303, 307 and 308 are valid values.
|
|
items:
|
|
description: RedirectResponseCode is a uint32 type alias
|
|
with validation to ensure that the value is valid.
|
|
enum:
|
|
- 301
|
|
- 302
|
|
- 303
|
|
- 307
|
|
- 308
|
|
format: int32
|
|
type: integer
|
|
type: array
|
|
type: object
|
|
ipAllowPolicy:
|
|
description: IPAllowFilterPolicy is a list of ipv4/6 filter
|
|
rules for which matching requests should be allowed. All other
|
|
requests will be denied. Only one of IPAllowFilterPolicy and
|
|
IPDenyFilterPolicy can be defined. The rules defined here
|
|
override any rules set on the root HTTPProxy.
|
|
items:
|
|
properties:
|
|
cidr:
|
|
description: CIDR is a CIDR block of ipv4 or ipv6 addresses
|
|
to filter on. This can also be a bare IP address (without
|
|
a mask) to filter on exactly one address.
|
|
type: string
|
|
source:
|
|
description: 'Source indicates how to determine the ip
|
|
address to filter on, and can be one of two values:
|
|
- `Remote` filters on the ip address of the client,
|
|
accounting for PROXY and X-Forwarded-For as needed.
|
|
- `Peer` filters on the ip of the network request, ignoring
|
|
PROXY and X-Forwarded-For.'
|
|
enum:
|
|
- Peer
|
|
- Remote
|
|
type: string
|
|
required:
|
|
- cidr
|
|
- source
|
|
type: object
|
|
type: array
|
|
ipDenyPolicy:
|
|
description: IPDenyFilterPolicy is a list of ipv4/6 filter rules
|
|
for which matching requests should be denied. All other requests
|
|
will be allowed. Only one of IPAllowFilterPolicy and IPDenyFilterPolicy
|
|
can be defined. The rules defined here override any rules
|
|
set on the root HTTPProxy.
|
|
items:
|
|
properties:
|
|
cidr:
|
|
description: CIDR is a CIDR block of ipv4 or ipv6 addresses
|
|
to filter on. This can also be a bare IP address (without
|
|
a mask) to filter on exactly one address.
|
|
type: string
|
|
source:
|
|
description: 'Source indicates how to determine the ip
|
|
address to filter on, and can be one of two values:
|
|
- `Remote` filters on the ip address of the client,
|
|
accounting for PROXY and X-Forwarded-For as needed.
|
|
- `Peer` filters on the ip of the network request, ignoring
|
|
PROXY and X-Forwarded-For.'
|
|
enum:
|
|
- Peer
|
|
- Remote
|
|
type: string
|
|
required:
|
|
- cidr
|
|
- source
|
|
type: object
|
|
type: array
|
|
jwtVerificationPolicy:
|
|
description: The policy for verifying JWTs for requests to this
|
|
route.
|
|
properties:
|
|
disabled:
|
|
description: Disabled defines whether to disable all JWT
|
|
verification for this route. This can be used to opt specific
|
|
routes out of the default JWT provider for the HTTPProxy.
|
|
At most one of this field or the "require" field can be
|
|
specified.
|
|
type: boolean
|
|
require:
|
|
description: Require names a specific JWT provider (defined
|
|
in the virtual host) to require for the route. If specified,
|
|
this field overrides the default provider if one exists.
|
|
If this field is not specified, the default provider will
|
|
be required if one exists. At most one of this field or
|
|
the "disabled" field can be specified.
|
|
type: string
|
|
type: object
|
|
loadBalancerPolicy:
|
|
description: The load balancing policy for this route.
|
|
properties:
|
|
requestHashPolicies:
|
|
description: RequestHashPolicies contains a list of hash
|
|
policies to apply when the `RequestHash` load balancing
|
|
strategy is chosen. If an element of the supplied list
|
|
of hash policies is invalid, it will be ignored. If the
|
|
list of hash policies is empty after validation, the load
|
|
balancing strategy will fall back to the default `RoundRobin`.
|
|
items:
|
|
description: RequestHashPolicy contains configuration
|
|
for an individual hash policy on a request attribute.
|
|
properties:
|
|
hashSourceIP:
|
|
description: HashSourceIP should be set to true when
|
|
request source IP hash based load balancing is desired.
|
|
It must be the only hash option field set, otherwise
|
|
this request hash policy object will be ignored.
|
|
type: boolean
|
|
headerHashOptions:
|
|
description: HeaderHashOptions should be set when
|
|
request header hash based load balancing is desired.
|
|
It must be the only hash option field set, otherwise
|
|
this request hash policy object will be ignored.
|
|
properties:
|
|
headerName:
|
|
description: HeaderName is the name of the HTTP
|
|
request header that will be used to calculate
|
|
the hash key. If the header specified is not
|
|
present on a request, no hash will be produced.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
queryParameterHashOptions:
|
|
description: QueryParameterHashOptions should be set
|
|
when request query parameter hash based load balancing
|
|
is desired. It must be the only hash option field
|
|
set, otherwise this request hash policy object will
|
|
be ignored.
|
|
properties:
|
|
parameterName:
|
|
description: ParameterName is the name of the
|
|
HTTP request query parameter that will be used
|
|
to calculate the hash key. If the query parameter
|
|
specified is not present on a request, no hash
|
|
will be produced.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
terminal:
|
|
description: Terminal is a flag that allows for short-circuiting
|
|
computing of a hash for a given request. If set
|
|
to true, and the request attribute specified in
|
|
the attribute hash options is present, no further
|
|
hash policies will be used to calculate a hash for
|
|
the request.
|
|
type: boolean
|
|
type: object
|
|
type: array
|
|
strategy:
|
|
description: Strategy specifies the policy used to balance
|
|
requests across the pool of backend pods. Valid policy
|
|
names are `Random`, `RoundRobin`, `WeightedLeastRequest`,
|
|
`Cookie`, and `RequestHash`. If an unknown strategy name
|
|
is specified or no policy is supplied, the default `RoundRobin`
|
|
policy is used.
|
|
type: string
|
|
type: object
|
|
pathRewritePolicy:
|
|
description: The policy for rewriting the path of the request
|
|
URL after the request has been routed to a Service.
|
|
properties:
|
|
replacePrefix:
|
|
description: ReplacePrefix describes how the path prefix
|
|
should be replaced.
|
|
items:
|
|
description: ReplacePrefix describes a path prefix replacement.
|
|
properties:
|
|
prefix:
|
|
description: "Prefix specifies the URL path prefix
|
|
to be replaced. \n If Prefix is specified, it must
|
|
exactly match the MatchCondition prefix that is
|
|
rendered by the chain of including HTTPProxies and
|
|
only that path prefix will be replaced by Replacement.
|
|
This allows HTTPProxies that are included through
|
|
multiple roots to only replace specific path prefixes,
|
|
leaving others unmodified. \n If Prefix is not specified,
|
|
all routing prefixes rendered by the include chain
|
|
will be replaced."
|
|
minLength: 1
|
|
type: string
|
|
replacement:
|
|
description: Replacement is the string that the routing
|
|
path prefix will be replaced with. This must not
|
|
be empty.
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- replacement
|
|
type: object
|
|
type: array
|
|
type: object
|
|
permitInsecure:
|
|
description: Allow this path to respond to insecure requests
|
|
over HTTP which are normally not permitted when a `virtualhost.tls`
|
|
block is present.
|
|
type: boolean
|
|
rateLimitPolicy:
|
|
description: The policy for rate limiting on the route.
|
|
properties:
|
|
global:
|
|
description: Global defines global rate limiting parameters,
|
|
i.e. parameters defining descriptors that are sent to
|
|
an external rate limit service (RLS) for a rate limit
|
|
decision on each request.
|
|
properties:
|
|
descriptors:
|
|
description: Descriptors defines the list of descriptors
|
|
that will be generated and sent to the rate limit
|
|
service. Each descriptor contains 1+ key-value pair
|
|
entries.
|
|
items:
|
|
description: RateLimitDescriptor defines a list of
|
|
key-value pair generators.
|
|
properties:
|
|
entries:
|
|
description: Entries is the list of key-value
|
|
pair generators.
|
|
items:
|
|
description: RateLimitDescriptorEntry is a key-value
|
|
pair generator. Exactly one field on this
|
|
struct must be non-nil.
|
|
properties:
|
|
genericKey:
|
|
description: GenericKey defines a descriptor
|
|
entry with a static key and value.
|
|
properties:
|
|
key:
|
|
description: Key defines the key of
|
|
the descriptor entry. If not set,
|
|
the key is set to "generic_key".
|
|
type: string
|
|
value:
|
|
description: Value defines the value
|
|
of the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
remoteAddress:
|
|
description: RemoteAddress defines a descriptor
|
|
entry with a key of "remote_address" and
|
|
a value equal to the client's IP address
|
|
(from x-forwarded-for).
|
|
type: object
|
|
requestHeader:
|
|
description: RequestHeader defines a descriptor
|
|
entry that's populated only if a given
|
|
header is present on the request. The
|
|
descriptor key is static, and the descriptor
|
|
value is equal to the value of the header.
|
|
properties:
|
|
descriptorKey:
|
|
description: DescriptorKey defines the
|
|
key to use on the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
headerName:
|
|
description: HeaderName defines the
|
|
name of the header to look for on
|
|
the request.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
requestHeaderValueMatch:
|
|
description: RequestHeaderValueMatch defines
|
|
a descriptor entry that's populated if
|
|
the request's headers match a set of 1+
|
|
match criteria. The descriptor key is
|
|
"header_match", and the descriptor value
|
|
is static.
|
|
properties:
|
|
expectMatch:
|
|
default: true
|
|
description: ExpectMatch defines whether
|
|
the request must positively match
|
|
the match criteria in order to generate
|
|
a descriptor entry (i.e. true), or
|
|
not match the match criteria in order
|
|
to generate a descriptor entry (i.e.
|
|
false). The default is true.
|
|
type: boolean
|
|
headers:
|
|
description: Headers is a list of 1+
|
|
match criteria to apply against the
|
|
request to determine whether to populate
|
|
the descriptor entry or not.
|
|
items:
|
|
description: HeaderMatchCondition
|
|
specifies how to conditionally match
|
|
against HTTP headers. The Name field
|
|
is required, only one of Present,
|
|
NotPresent, Contains, NotContains,
|
|
Exact, NotExact and Regex can be
|
|
set. For negative matching rules
|
|
only (e.g. NotContains or NotExact)
|
|
you can set TreatMissingAsEmpty.
|
|
IgnoreCase has no effect for Regex.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies
|
|
a substring that must be present
|
|
in the header value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a
|
|
string that the header value
|
|
must be equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies
|
|
that string matching should
|
|
be case insensitive. Note that
|
|
this has no effect on the Regex
|
|
parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name
|
|
of the header to match against.
|
|
Name is required. Header names
|
|
are case insensitive.
|
|
type: string
|
|
notcontains:
|
|
description: NotContains specifies
|
|
a substring that must not be
|
|
present in the header value.
|
|
type: string
|
|
notexact:
|
|
description: NoExact specifies
|
|
a string that the header value
|
|
must not be equal to. The condition
|
|
is true if the header has any
|
|
other value.
|
|
type: string
|
|
notpresent:
|
|
description: NotPresent specifies
|
|
that condition is true when
|
|
the named header is not present.
|
|
Note that setting NotPresent
|
|
to false does not make the condition
|
|
true if the named header is
|
|
present.
|
|
type: boolean
|
|
present:
|
|
description: Present specifies
|
|
that condition is true when
|
|
the named header is present,
|
|
regardless of its value. Note
|
|
that setting Present to false
|
|
does not make the condition
|
|
true if the named header is
|
|
absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a
|
|
regular expression pattern that
|
|
must match the header value.
|
|
type: string
|
|
treatMissingAsEmpty:
|
|
description: TreatMissingAsEmpty
|
|
specifies if the header match
|
|
rule specified header does not
|
|
exist, this header value will
|
|
be treated as empty. Defaults
|
|
to false. Unlike the underlying
|
|
Envoy implementation this is
|
|
**only** supported for negative
|
|
matches (e.g. NotContains, NotExact).
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
value:
|
|
description: Value defines the value
|
|
of the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
disabled:
|
|
description: Disabled configures the HTTPProxy to not
|
|
use the default global rate limit policy defined by
|
|
the Contour configuration.
|
|
type: boolean
|
|
type: object
|
|
local:
|
|
description: Local defines local rate limiting parameters,
|
|
i.e. parameters for rate limiting that occurs within each
|
|
Envoy pod as requests are handled.
|
|
properties:
|
|
burst:
|
|
description: Burst defines the number of requests above
|
|
the requests per unit that should be allowed within
|
|
a short period of time.
|
|
format: int32
|
|
type: integer
|
|
requests:
|
|
description: Requests defines how many requests per
|
|
unit of time should be allowed before rate limiting
|
|
occurs.
|
|
format: int32
|
|
minimum: 1
|
|
type: integer
|
|
responseHeadersToAdd:
|
|
description: ResponseHeadersToAdd is an optional list
|
|
of response headers to set when a request is rate-limited.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
responseStatusCode:
|
|
description: ResponseStatusCode is the HTTP status code
|
|
to use for responses to rate-limited requests. Codes
|
|
must be in the 400-599 range (inclusive). If not specified,
|
|
the Envoy default of 429 (Too Many Requests) is used.
|
|
format: int32
|
|
maximum: 599
|
|
minimum: 400
|
|
type: integer
|
|
unit:
|
|
description: Unit defines the period of time within
|
|
which requests over the limit will be rate limited.
|
|
Valid values are "second", "minute" and "hour".
|
|
enum:
|
|
- second
|
|
- minute
|
|
- hour
|
|
type: string
|
|
required:
|
|
- requests
|
|
- unit
|
|
type: object
|
|
type: object
|
|
requestHeadersPolicy:
|
|
description: "The policy for managing request headers during
|
|
proxying. \n You may dynamically rewrite the Host header to
|
|
be forwarded upstream to the content of a request header using
|
|
the below format \"%REQ(X-Header-Name)%\". If the value of
|
|
the header is empty, it is ignored. \n *NOTE: Pay attention
|
|
to the potential security implications of using this option.
|
|
Provided header must come from trusted source. \n **NOTE:
|
|
The header rewrite is only done while forwarding and has no
|
|
bearing on the routing decision."
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header names
|
|
to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header does
|
|
not exist it will be added, otherwise it will be overwritten
|
|
with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
requestRedirectPolicy:
|
|
description: RequestRedirectPolicy defines an HTTP redirection.
|
|
properties:
|
|
hostname:
|
|
description: Hostname is the precise hostname to be used
|
|
in the value of the `Location` header in the response.
|
|
When empty, the hostname of the request is used. No wildcards
|
|
are allowed.
|
|
maxLength: 253
|
|
minLength: 1
|
|
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
type: string
|
|
path:
|
|
description: "Path allows for redirection to a different
|
|
path from the original on the request. The path must start
|
|
with a leading slash. \n Note: Only one of Path or Prefix
|
|
can be defined."
|
|
pattern: ^\/.*$
|
|
type: string
|
|
port:
|
|
description: Port is the port to be used in the value of
|
|
the `Location` header in the response. When empty, port
|
|
(if specified) of the request is used.
|
|
format: int32
|
|
maximum: 65535
|
|
minimum: 1
|
|
type: integer
|
|
prefix:
|
|
description: "Prefix defines the value to swap the matched
|
|
prefix or path with. The prefix must start with a leading
|
|
slash. \n Note: Only one of Path or Prefix can be defined."
|
|
pattern: ^\/.*$
|
|
type: string
|
|
scheme:
|
|
description: Scheme is the scheme to be used in the value
|
|
of the `Location` header in the response. When empty,
|
|
the scheme of the request is used.
|
|
enum:
|
|
- http
|
|
- https
|
|
type: string
|
|
statusCode:
|
|
default: 302
|
|
description: StatusCode is the HTTP status code to be used
|
|
in response.
|
|
enum:
|
|
- 301
|
|
- 302
|
|
type: integer
|
|
type: object
|
|
responseHeadersPolicy:
|
|
description: The policy for managing response headers during
|
|
proxying. Rewriting the 'Host' header is not supported.
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header names
|
|
to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header does
|
|
not exist it will be added, otherwise it will be overwritten
|
|
with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
retryPolicy:
|
|
description: The retry policy for this route.
|
|
properties:
|
|
count:
|
|
default: 1
|
|
description: NumRetries is maximum allowed number of retries.
|
|
If set to -1, then retries are disabled. If set to 0 or
|
|
not supplied, the value is set to the Envoy default of
|
|
1.
|
|
format: int64
|
|
minimum: -1
|
|
type: integer
|
|
perTryTimeout:
|
|
description: PerTryTimeout specifies the timeout per retry
|
|
attempt. Ignored if NumRetries is not supplied.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$
|
|
type: string
|
|
retriableStatusCodes:
|
|
description: "RetriableStatusCodes specifies the HTTP status
|
|
codes that should be retried. \n This field is only respected
|
|
when you include `retriable-status-codes` in the `RetryOn`
|
|
field."
|
|
items:
|
|
format: int32
|
|
type: integer
|
|
type: array
|
|
retryOn:
|
|
description: "RetryOn specifies the conditions on which
|
|
to retry a request. \n Supported [HTTP conditions](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-on):
|
|
\n - `5xx` - `gateway-error` - `reset` - `connect-failure`
|
|
- `retriable-4xx` - `refused-stream` - `retriable-status-codes`
|
|
- `retriable-headers` \n Supported [gRPC conditions](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/router_filter#x-envoy-retry-grpc-on):
|
|
\n - `cancelled` - `deadline-exceeded` - `internal` -
|
|
`resource-exhausted` - `unavailable`"
|
|
items:
|
|
description: RetryOn is a string type alias with validation
|
|
to ensure that the value is valid.
|
|
enum:
|
|
- 5xx
|
|
- gateway-error
|
|
- reset
|
|
- connect-failure
|
|
- retriable-4xx
|
|
- refused-stream
|
|
- retriable-status-codes
|
|
- retriable-headers
|
|
- cancelled
|
|
- deadline-exceeded
|
|
- internal
|
|
- resource-exhausted
|
|
- unavailable
|
|
type: string
|
|
type: array
|
|
type: object
|
|
services:
|
|
description: Services are the services to proxy traffic.
|
|
items:
|
|
description: Service defines an Kubernetes Service to proxy
|
|
traffic.
|
|
properties:
|
|
cookieRewritePolicies:
|
|
description: The policies for rewriting Set-Cookie header
|
|
attributes.
|
|
items:
|
|
properties:
|
|
domainRewrite:
|
|
description: DomainRewrite enables rewriting the
|
|
Set-Cookie Domain element. If not set, Domain
|
|
will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the
|
|
Domain attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
name:
|
|
description: Name is the name of the cookie for
|
|
which attributes will be rewritten.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^()<>@,;:\\"\/[\]?={} \t\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
pathRewrite:
|
|
description: PathRewrite enables rewriting the Set-Cookie
|
|
Path element. If not set, Path will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the
|
|
Path attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^;\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
sameSite:
|
|
description: SameSite enables rewriting the Set-Cookie
|
|
SameSite element. If not set, SameSite attribute
|
|
will not be rewritten.
|
|
enum:
|
|
- Strict
|
|
- Lax
|
|
- None
|
|
type: string
|
|
secure:
|
|
description: Secure enables rewriting the Set-Cookie
|
|
Secure element. If not set, Secure attribute will
|
|
not be rewritten.
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
healthPort:
|
|
description: HealthPort is the port for this service healthcheck.
|
|
If not specified, Port is used for service healthchecks.
|
|
maximum: 65535
|
|
minimum: 1
|
|
type: integer
|
|
mirror:
|
|
description: 'If Mirror is true the Service will receive
|
|
a read only mirror of the traffic for this route. If
|
|
Mirror is true, then fractional mirroring can be enabled
|
|
by optionally setting the Weight field. Legal values
|
|
for Weight are 1-100. Omitting the Weight field will
|
|
result in 100% mirroring. NOTE: Setting Weight explicitly
|
|
to 0 will unexpectedly result in 100% traffic mirroring.
|
|
This occurs since we cannot distinguish omitted fields
|
|
from those explicitly set to their default values'
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of Kubernetes service to
|
|
proxy traffic. Names defined here will be used to look
|
|
up corresponding endpoints which contain the ips to
|
|
route.
|
|
type: string
|
|
port:
|
|
description: Port (defined as Integer) to proxy traffic
|
|
to since a service can have multiple defined.
|
|
exclusiveMaximum: true
|
|
maximum: 65536
|
|
minimum: 1
|
|
type: integer
|
|
protocol:
|
|
description: Protocol may be used to specify (or override)
|
|
the protocol used to reach this Service. Values may
|
|
be tls, h2, h2c. If omitted, protocol-selection falls
|
|
back on Service annotations.
|
|
enum:
|
|
- h2
|
|
- h2c
|
|
- tls
|
|
type: string
|
|
requestHeadersPolicy:
|
|
description: The policy for managing request headers during
|
|
proxying.
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header
|
|
names to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header
|
|
does not exist it will be added, otherwise it will
|
|
be overwritten with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a
|
|
header specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
responseHeadersPolicy:
|
|
description: The policy for managing response headers
|
|
during proxying. Rewriting the 'Host' header is not
|
|
supported.
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header
|
|
names to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header
|
|
does not exist it will be added, otherwise it will
|
|
be overwritten with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a
|
|
header specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
slowStartPolicy:
|
|
description: Slow start will gradually increase amount
|
|
of traffic to a newly added endpoint.
|
|
properties:
|
|
aggression:
|
|
default: "1.0"
|
|
description: "The speed of traffic increase over the
|
|
slow start window. Defaults to 1.0, so that endpoint
|
|
would get linearly increasing amount of traffic.
|
|
When increasing the value for this parameter, the
|
|
speed of traffic ramp-up increases non-linearly.
|
|
The value of aggression parameter should be greater
|
|
than 0.0. \n More info: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/slow_start"
|
|
pattern: ^([0-9]+([.][0-9]+)?|[.][0-9]+)$
|
|
type: string
|
|
minWeightPercent:
|
|
default: 10
|
|
description: The minimum or starting percentage of
|
|
traffic to send to new endpoints. A non-zero value
|
|
helps avoid a too small initial weight, which may
|
|
cause endpoints in slow start mode to receive no
|
|
traffic in the beginning of the slow start window.
|
|
If not specified, the default is 10%.
|
|
format: int32
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
window:
|
|
description: The duration of slow start window. Duration
|
|
is expressed in the Go [Duration format](https://godoc.org/time#ParseDuration).
|
|
Valid time units are "ns", "us" (or "µs"), "ms",
|
|
"s", "m", "h".
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+)$
|
|
type: string
|
|
required:
|
|
- window
|
|
type: object
|
|
validation:
|
|
description: UpstreamValidation defines how to verify
|
|
the backend service's certificate
|
|
properties:
|
|
caSecret:
|
|
description: Name or namespaced name of the Kubernetes
|
|
secret used to validate the certificate presented
|
|
by the backend. The secret must contain key named
|
|
ca.crt. The name can be optionally prefixed with
|
|
namespace "namespace/name". When cross-namespace
|
|
reference is used, TLSCertificateDelegation resource
|
|
must exist in the namespace to grant access to the
|
|
secret.
|
|
type: string
|
|
subjectName:
|
|
description: Key which is expected to be present in
|
|
the 'subjectAltName' of the presented certificate.
|
|
type: string
|
|
required:
|
|
- caSecret
|
|
- subjectName
|
|
type: object
|
|
weight:
|
|
description: Weight defines percentage of traffic to balance
|
|
traffic
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- name
|
|
- port
|
|
type: object
|
|
type: array
|
|
timeoutPolicy:
|
|
description: The timeout policy for this route.
|
|
properties:
|
|
idle:
|
|
description: Timeout for how long the proxy should wait
|
|
while there is no activity during single request/response
|
|
(for HTTP/1.1) or stream (for HTTP/2). Timeout will not
|
|
trigger while HTTP/1.1 connection is idle between two
|
|
consecutive requests. If not specified, there is no per-route
|
|
idle timeout, though a connection manager-wide stream_idle_timeout
|
|
default of 5m still applies.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$
|
|
type: string
|
|
idleConnection:
|
|
description: Timeout for how long connection from the proxy
|
|
to the upstream service is kept when there are no active
|
|
requests. If not supplied, Envoy's default value of 1h
|
|
applies.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$
|
|
type: string
|
|
response:
|
|
description: Timeout for receiving a response from the server
|
|
after processing a request from client. If not supplied,
|
|
Envoy's default value of 15s applies.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$
|
|
type: string
|
|
type: object
|
|
type: object
|
|
type: array
|
|
tcpproxy:
|
|
description: TCPProxy holds TCP proxy information.
|
|
properties:
|
|
healthCheckPolicy:
|
|
description: The health check policy for this tcp proxy
|
|
properties:
|
|
healthyThresholdCount:
|
|
description: The number of healthy health checks required
|
|
before a host is marked healthy
|
|
format: int32
|
|
type: integer
|
|
intervalSeconds:
|
|
description: The interval (seconds) between health checks
|
|
format: int64
|
|
type: integer
|
|
timeoutSeconds:
|
|
description: The time to wait (seconds) for a health check
|
|
response
|
|
format: int64
|
|
type: integer
|
|
unhealthyThresholdCount:
|
|
description: The number of unhealthy health checks required
|
|
before a host is marked unhealthy
|
|
format: int32
|
|
type: integer
|
|
type: object
|
|
include:
|
|
description: Include specifies that this tcpproxy should be delegated
|
|
to another HTTPProxy.
|
|
properties:
|
|
name:
|
|
description: Name of the child HTTPProxy
|
|
type: string
|
|
namespace:
|
|
description: Namespace of the HTTPProxy to include. Defaults
|
|
to the current namespace if not supplied.
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
includes:
|
|
description: "IncludesDeprecated allow for specific routing configuration
|
|
to be appended to another HTTPProxy in another namespace. \n
|
|
Exists due to a mistake when developing HTTPProxy and the field
|
|
was marked plural when it should have been singular. This field
|
|
should stay to not break backwards compatibility to v1 users."
|
|
properties:
|
|
name:
|
|
description: Name of the child HTTPProxy
|
|
type: string
|
|
namespace:
|
|
description: Namespace of the HTTPProxy to include. Defaults
|
|
to the current namespace if not supplied.
|
|
type: string
|
|
required:
|
|
- name
|
|
type: object
|
|
loadBalancerPolicy:
|
|
description: The load balancing policy for the backend services.
|
|
Note that the `Cookie` and `RequestHash` load balancing strategies
|
|
cannot be used here.
|
|
properties:
|
|
requestHashPolicies:
|
|
description: RequestHashPolicies contains a list of hash policies
|
|
to apply when the `RequestHash` load balancing strategy
|
|
is chosen. If an element of the supplied list of hash policies
|
|
is invalid, it will be ignored. If the list of hash policies
|
|
is empty after validation, the load balancing strategy will
|
|
fall back to the default `RoundRobin`.
|
|
items:
|
|
description: RequestHashPolicy contains configuration for
|
|
an individual hash policy on a request attribute.
|
|
properties:
|
|
hashSourceIP:
|
|
description: HashSourceIP should be set to true when
|
|
request source IP hash based load balancing is desired.
|
|
It must be the only hash option field set, otherwise
|
|
this request hash policy object will be ignored.
|
|
type: boolean
|
|
headerHashOptions:
|
|
description: HeaderHashOptions should be set when request
|
|
header hash based load balancing is desired. It must
|
|
be the only hash option field set, otherwise this
|
|
request hash policy object will be ignored.
|
|
properties:
|
|
headerName:
|
|
description: HeaderName is the name of the HTTP
|
|
request header that will be used to calculate
|
|
the hash key. If the header specified is not present
|
|
on a request, no hash will be produced.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
queryParameterHashOptions:
|
|
description: QueryParameterHashOptions should be set
|
|
when request query parameter hash based load balancing
|
|
is desired. It must be the only hash option field
|
|
set, otherwise this request hash policy object will
|
|
be ignored.
|
|
properties:
|
|
parameterName:
|
|
description: ParameterName is the name of the HTTP
|
|
request query parameter that will be used to calculate
|
|
the hash key. If the query parameter specified
|
|
is not present on a request, no hash will be produced.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
terminal:
|
|
description: Terminal is a flag that allows for short-circuiting
|
|
computing of a hash for a given request. If set to
|
|
true, and the request attribute specified in the attribute
|
|
hash options is present, no further hash policies
|
|
will be used to calculate a hash for the request.
|
|
type: boolean
|
|
type: object
|
|
type: array
|
|
strategy:
|
|
description: Strategy specifies the policy used to balance
|
|
requests across the pool of backend pods. Valid policy names
|
|
are `Random`, `RoundRobin`, `WeightedLeastRequest`, `Cookie`,
|
|
and `RequestHash`. If an unknown strategy name is specified
|
|
or no policy is supplied, the default `RoundRobin` policy
|
|
is used.
|
|
type: string
|
|
type: object
|
|
services:
|
|
description: Services are the services to proxy traffic
|
|
items:
|
|
description: Service defines an Kubernetes Service to proxy
|
|
traffic.
|
|
properties:
|
|
cookieRewritePolicies:
|
|
description: The policies for rewriting Set-Cookie header
|
|
attributes.
|
|
items:
|
|
properties:
|
|
domainRewrite:
|
|
description: DomainRewrite enables rewriting the Set-Cookie
|
|
Domain element. If not set, Domain will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the
|
|
Domain attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
name:
|
|
description: Name is the name of the cookie for which
|
|
attributes will be rewritten.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^()<>@,;:\\"\/[\]?={} \t\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
pathRewrite:
|
|
description: PathRewrite enables rewriting the Set-Cookie
|
|
Path element. If not set, Path will not be rewritten.
|
|
properties:
|
|
value:
|
|
description: Value is the value to rewrite the
|
|
Path attribute to. For now this is required.
|
|
maxLength: 4096
|
|
minLength: 1
|
|
pattern: ^[^;\x7f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]+$
|
|
type: string
|
|
required:
|
|
- value
|
|
type: object
|
|
sameSite:
|
|
description: SameSite enables rewriting the Set-Cookie
|
|
SameSite element. If not set, SameSite attribute
|
|
will not be rewritten.
|
|
enum:
|
|
- Strict
|
|
- Lax
|
|
- None
|
|
type: string
|
|
secure:
|
|
description: Secure enables rewriting the Set-Cookie
|
|
Secure element. If not set, Secure attribute will
|
|
not be rewritten.
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
type: array
|
|
healthPort:
|
|
description: HealthPort is the port for this service healthcheck.
|
|
If not specified, Port is used for service healthchecks.
|
|
maximum: 65535
|
|
minimum: 1
|
|
type: integer
|
|
mirror:
|
|
description: 'If Mirror is true the Service will receive
|
|
a read only mirror of the traffic for this route. If Mirror
|
|
is true, then fractional mirroring can be enabled by optionally
|
|
setting the Weight field. Legal values for Weight are
|
|
1-100. Omitting the Weight field will result in 100% mirroring.
|
|
NOTE: Setting Weight explicitly to 0 will unexpectedly
|
|
result in 100% traffic mirroring. This occurs since we
|
|
cannot distinguish omitted fields from those explicitly
|
|
set to their default values'
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of Kubernetes service to proxy
|
|
traffic. Names defined here will be used to look up corresponding
|
|
endpoints which contain the ips to route.
|
|
type: string
|
|
port:
|
|
description: Port (defined as Integer) to proxy traffic
|
|
to since a service can have multiple defined.
|
|
exclusiveMaximum: true
|
|
maximum: 65536
|
|
minimum: 1
|
|
type: integer
|
|
protocol:
|
|
description: Protocol may be used to specify (or override)
|
|
the protocol used to reach this Service. Values may be
|
|
tls, h2, h2c. If omitted, protocol-selection falls back
|
|
on Service annotations.
|
|
enum:
|
|
- h2
|
|
- h2c
|
|
- tls
|
|
type: string
|
|
requestHeadersPolicy:
|
|
description: The policy for managing request headers during
|
|
proxying.
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header
|
|
names to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header
|
|
does not exist it will be added, otherwise it will
|
|
be overwritten with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
responseHeadersPolicy:
|
|
description: The policy for managing response headers during
|
|
proxying. Rewriting the 'Host' header is not supported.
|
|
properties:
|
|
remove:
|
|
description: Remove specifies a list of HTTP header
|
|
names to remove.
|
|
items:
|
|
type: string
|
|
type: array
|
|
set:
|
|
description: Set specifies a list of HTTP header values
|
|
that will be set in the HTTP header. If the header
|
|
does not exist it will be added, otherwise it will
|
|
be overwritten with the new value.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
type: object
|
|
slowStartPolicy:
|
|
description: Slow start will gradually increase amount of
|
|
traffic to a newly added endpoint.
|
|
properties:
|
|
aggression:
|
|
default: "1.0"
|
|
description: "The speed of traffic increase over the
|
|
slow start window. Defaults to 1.0, so that endpoint
|
|
would get linearly increasing amount of traffic. When
|
|
increasing the value for this parameter, the speed
|
|
of traffic ramp-up increases non-linearly. The value
|
|
of aggression parameter should be greater than 0.0.
|
|
\n More info: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/slow_start"
|
|
pattern: ^([0-9]+([.][0-9]+)?|[.][0-9]+)$
|
|
type: string
|
|
minWeightPercent:
|
|
default: 10
|
|
description: The minimum or starting percentage of traffic
|
|
to send to new endpoints. A non-zero value helps avoid
|
|
a too small initial weight, which may cause endpoints
|
|
in slow start mode to receive no traffic in the beginning
|
|
of the slow start window. If not specified, the default
|
|
is 10%.
|
|
format: int32
|
|
maximum: 100
|
|
minimum: 0
|
|
type: integer
|
|
window:
|
|
description: The duration of slow start window. Duration
|
|
is expressed in the Go [Duration format](https://godoc.org/time#ParseDuration).
|
|
Valid time units are "ns", "us" (or "µs"), "ms", "s",
|
|
"m", "h".
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+)$
|
|
type: string
|
|
required:
|
|
- window
|
|
type: object
|
|
validation:
|
|
description: UpstreamValidation defines how to verify the
|
|
backend service's certificate
|
|
properties:
|
|
caSecret:
|
|
description: Name or namespaced name of the Kubernetes
|
|
secret used to validate the certificate presented
|
|
by the backend. The secret must contain key named
|
|
ca.crt. The name can be optionally prefixed with namespace
|
|
"namespace/name". When cross-namespace reference is
|
|
used, TLSCertificateDelegation resource must exist
|
|
in the namespace to grant access to the secret.
|
|
type: string
|
|
subjectName:
|
|
description: Key which is expected to be present in
|
|
the 'subjectAltName' of the presented certificate.
|
|
type: string
|
|
required:
|
|
- caSecret
|
|
- subjectName
|
|
type: object
|
|
weight:
|
|
description: Weight defines percentage of traffic to balance
|
|
traffic
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
required:
|
|
- name
|
|
- port
|
|
type: object
|
|
type: array
|
|
type: object
|
|
virtualhost:
|
|
description: Virtualhost appears at most once. If it is present, the
|
|
object is considered to be a "root" HTTPProxy.
|
|
properties:
|
|
authorization:
|
|
description: This field configures an extension service to perform
|
|
authorization for this virtual host. Authorization can only
|
|
be configured on virtual hosts that have TLS enabled. If the
|
|
TLS configuration requires client certificate validation, the
|
|
client certificate is always included in the authentication
|
|
check request.
|
|
properties:
|
|
authPolicy:
|
|
description: AuthPolicy sets a default authorization policy
|
|
for client requests. This policy will be used unless overridden
|
|
by individual routes.
|
|
properties:
|
|
context:
|
|
additionalProperties:
|
|
type: string
|
|
description: Context is a set of key/value pairs that
|
|
are sent to the authentication server in the check request.
|
|
If a context is provided at an enclosing scope, the
|
|
entries are merged such that the inner scope overrides
|
|
matching keys from the outer scope.
|
|
type: object
|
|
disabled:
|
|
description: When true, this field disables client request
|
|
authentication for the scope of the policy.
|
|
type: boolean
|
|
type: object
|
|
extensionRef:
|
|
description: ExtensionServiceRef specifies the extension resource
|
|
that will authorize client requests.
|
|
properties:
|
|
apiVersion:
|
|
description: API version of the referent. If this field
|
|
is not specified, the default "projectcontour.io/v1alpha1"
|
|
will be used
|
|
minLength: 1
|
|
type: string
|
|
name:
|
|
description: "Name of the referent. \n More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
|
|
minLength: 1
|
|
type: string
|
|
namespace:
|
|
description: "Namespace of the referent. If this field
|
|
is not specifies, the namespace of the resource that
|
|
targets the referent will be used. \n More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/"
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
failOpen:
|
|
description: If FailOpen is true, the client request is forwarded
|
|
to the upstream service even if the authorization server
|
|
fails to respond. This field should not be set in most cases.
|
|
It is intended for use only while migrating applications
|
|
from internal authorization to Contour external authorization.
|
|
type: boolean
|
|
responseTimeout:
|
|
description: ResponseTimeout configures maximum time to wait
|
|
for a check response from the authorization server. Timeout
|
|
durations are expressed in the Go [Duration format](https://godoc.org/time#ParseDuration).
|
|
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m",
|
|
"h". The string "infinity" is also a valid input and specifies
|
|
no timeout.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|infinity|infinite)$
|
|
type: string
|
|
withRequestBody:
|
|
description: WithRequestBody specifies configuration for sending
|
|
the client request's body to authorization server.
|
|
properties:
|
|
allowPartialMessage:
|
|
description: If AllowPartialMessage is true, then Envoy
|
|
will buffer the body until MaxRequestBytes are reached.
|
|
type: boolean
|
|
maxRequestBytes:
|
|
default: 1024
|
|
description: MaxRequestBytes sets the maximum size of
|
|
message body ExtAuthz filter will hold in-memory.
|
|
format: int32
|
|
minimum: 1
|
|
type: integer
|
|
packAsBytes:
|
|
description: If PackAsBytes is true, the body sent to
|
|
Authorization Server is in raw bytes.
|
|
type: boolean
|
|
type: object
|
|
type: object
|
|
corsPolicy:
|
|
description: Specifies the cross-origin policy to apply to the
|
|
VirtualHost.
|
|
properties:
|
|
allowCredentials:
|
|
description: Specifies whether the resource allows credentials.
|
|
type: boolean
|
|
allowHeaders:
|
|
description: AllowHeaders specifies the content for the *access-control-allow-headers*
|
|
header.
|
|
items:
|
|
description: CORSHeaderValue specifies the value of the
|
|
string headers returned by a cross-domain request.
|
|
pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$
|
|
type: string
|
|
minItems: 1
|
|
type: array
|
|
allowMethods:
|
|
description: AllowMethods specifies the content for the *access-control-allow-methods*
|
|
header.
|
|
items:
|
|
description: CORSHeaderValue specifies the value of the
|
|
string headers returned by a cross-domain request.
|
|
pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$
|
|
type: string
|
|
minItems: 1
|
|
type: array
|
|
allowOrigin:
|
|
description: AllowOrigin specifies the origins that will be
|
|
allowed to do CORS requests. Allowed values include "*"
|
|
which signifies any origin is allowed, an exact origin of
|
|
the form "scheme://host[:port]" (where port is optional),
|
|
or a valid regex pattern. Note that regex patterns are validated
|
|
and a simple "glob" pattern (e.g. *.foo.com) will be rejected
|
|
or produce unexpected matches when applied as a regex.
|
|
items:
|
|
type: string
|
|
minItems: 1
|
|
type: array
|
|
allowPrivateNetwork:
|
|
description: AllowPrivateNetwork specifies whether to allow
|
|
private network requests. See https://developer.chrome.com/blog/private-network-access-preflight.
|
|
type: boolean
|
|
exposeHeaders:
|
|
description: ExposeHeaders Specifies the content for the *access-control-expose-headers*
|
|
header.
|
|
items:
|
|
description: CORSHeaderValue specifies the value of the
|
|
string headers returned by a cross-domain request.
|
|
pattern: ^[a-zA-Z0-9!#$%&'*+.^_`|~-]+$
|
|
type: string
|
|
minItems: 1
|
|
type: array
|
|
maxAge:
|
|
description: MaxAge indicates for how long the results of
|
|
a preflight request can be cached. MaxAge durations are
|
|
expressed in the Go [Duration format](https://godoc.org/time#ParseDuration).
|
|
Valid time units are "ns", "us" (or "µs"), "ms", "s", "m",
|
|
"h". Only positive values are allowed while 0 disables the
|
|
cache requiring a preflight OPTIONS check for all cross-origin
|
|
requests.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+|0)$
|
|
type: string
|
|
required:
|
|
- allowMethods
|
|
- allowOrigin
|
|
type: object
|
|
fqdn:
|
|
description: The fully qualified domain name of the root of the
|
|
ingress tree all leaves of the DAG rooted at this object relate
|
|
to the fqdn.
|
|
pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
|
|
type: string
|
|
ipAllowPolicy:
|
|
description: IPAllowFilterPolicy is a list of ipv4/6 filter rules
|
|
for which matching requests should be allowed. All other requests
|
|
will be denied. Only one of IPAllowFilterPolicy and IPDenyFilterPolicy
|
|
can be defined. The rules defined here may be overridden in
|
|
a Route.
|
|
items:
|
|
properties:
|
|
cidr:
|
|
description: CIDR is a CIDR block of ipv4 or ipv6 addresses
|
|
to filter on. This can also be a bare IP address (without
|
|
a mask) to filter on exactly one address.
|
|
type: string
|
|
source:
|
|
description: 'Source indicates how to determine the ip address
|
|
to filter on, and can be one of two values: - `Remote`
|
|
filters on the ip address of the client, accounting for
|
|
PROXY and X-Forwarded-For as needed. - `Peer` filters
|
|
on the ip of the network request, ignoring PROXY and X-Forwarded-For.'
|
|
enum:
|
|
- Peer
|
|
- Remote
|
|
type: string
|
|
required:
|
|
- cidr
|
|
- source
|
|
type: object
|
|
type: array
|
|
ipDenyPolicy:
|
|
description: IPDenyFilterPolicy is a list of ipv4/6 filter rules
|
|
for which matching requests should be denied. All other requests
|
|
will be allowed. Only one of IPAllowFilterPolicy and IPDenyFilterPolicy
|
|
can be defined. The rules defined here may be overridden in
|
|
a Route.
|
|
items:
|
|
properties:
|
|
cidr:
|
|
description: CIDR is a CIDR block of ipv4 or ipv6 addresses
|
|
to filter on. This can also be a bare IP address (without
|
|
a mask) to filter on exactly one address.
|
|
type: string
|
|
source:
|
|
description: 'Source indicates how to determine the ip address
|
|
to filter on, and can be one of two values: - `Remote`
|
|
filters on the ip address of the client, accounting for
|
|
PROXY and X-Forwarded-For as needed. - `Peer` filters
|
|
on the ip of the network request, ignoring PROXY and X-Forwarded-For.'
|
|
enum:
|
|
- Peer
|
|
- Remote
|
|
type: string
|
|
required:
|
|
- cidr
|
|
- source
|
|
type: object
|
|
type: array
|
|
jwtProviders:
|
|
description: Providers to use for verifying JSON Web Tokens (JWTs)
|
|
on the virtual host.
|
|
items:
|
|
description: JWTProvider defines how to verify JWTs on requests.
|
|
properties:
|
|
audiences:
|
|
description: Audiences that JWTs are allowed to have in
|
|
the "aud" field. If not provided, JWT audiences are not
|
|
checked.
|
|
items:
|
|
type: string
|
|
type: array
|
|
default:
|
|
description: Whether the provider should apply to all routes
|
|
in the HTTPProxy/its includes by default. At most one
|
|
provider can be marked as the default. If no provider
|
|
is marked as the default, individual routes must explicitly
|
|
identify the provider they require.
|
|
type: boolean
|
|
forwardJWT:
|
|
description: Whether the JWT should be forwarded to the
|
|
backend service after successful verification. By default,
|
|
the JWT is not forwarded.
|
|
type: boolean
|
|
issuer:
|
|
description: Issuer that JWTs are required to have in the
|
|
"iss" field. If not provided, JWT issuers are not checked.
|
|
type: string
|
|
name:
|
|
description: Unique name for the provider.
|
|
minLength: 1
|
|
type: string
|
|
remoteJWKS:
|
|
description: Remote JWKS to use for verifying JWT signatures.
|
|
properties:
|
|
cacheDuration:
|
|
description: How long to cache the JWKS locally. If
|
|
not specified, Envoy's default of 5m applies.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+)$
|
|
type: string
|
|
dnsLookupFamily:
|
|
description: "The DNS IP address resolution policy for
|
|
the JWKS URI. When configured as \"v4\", the DNS resolver
|
|
will only perform a lookup for addresses in the IPv4
|
|
family. If \"v6\" is configured, the DNS resolver
|
|
will only perform a lookup for addresses in the IPv6
|
|
family. If \"all\" is configured, the DNS resolver
|
|
will perform a lookup for addresses in both the IPv4
|
|
and IPv6 family. If \"auto\" is configured, the DNS
|
|
resolver will first perform a lookup for addresses
|
|
in the IPv6 family and fallback to a lookup for addresses
|
|
in the IPv4 family. If not specified, the Contour-wide
|
|
setting defined in the config file or ContourConfiguration
|
|
applies (defaults to \"auto\"). \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto.html#envoy-v3-api-enum-config-cluster-v3-cluster-dnslookupfamily
|
|
for more information."
|
|
enum:
|
|
- auto
|
|
- v4
|
|
- v6
|
|
type: string
|
|
timeout:
|
|
description: How long to wait for a response from the
|
|
URI. If not specified, a default of 1s applies.
|
|
pattern: ^(((\d*(\.\d*)?h)|(\d*(\.\d*)?m)|(\d*(\.\d*)?s)|(\d*(\.\d*)?ms)|(\d*(\.\d*)?us)|(\d*(\.\d*)?µs)|(\d*(\.\d*)?ns))+)$
|
|
type: string
|
|
uri:
|
|
description: The URI for the JWKS.
|
|
minLength: 1
|
|
type: string
|
|
validation:
|
|
description: UpstreamValidation defines how to verify
|
|
the JWKS's TLS certificate.
|
|
properties:
|
|
caSecret:
|
|
description: Name or namespaced name of the Kubernetes
|
|
secret used to validate the certificate presented
|
|
by the backend. The secret must contain key named
|
|
ca.crt. The name can be optionally prefixed with
|
|
namespace "namespace/name". When cross-namespace
|
|
reference is used, TLSCertificateDelegation resource
|
|
must exist in the namespace to grant access to
|
|
the secret.
|
|
type: string
|
|
subjectName:
|
|
description: Key which is expected to be present
|
|
in the 'subjectAltName' of the presented certificate.
|
|
type: string
|
|
required:
|
|
- caSecret
|
|
- subjectName
|
|
type: object
|
|
required:
|
|
- uri
|
|
type: object
|
|
required:
|
|
- name
|
|
- remoteJWKS
|
|
type: object
|
|
type: array
|
|
rateLimitPolicy:
|
|
description: The policy for rate limiting on the virtual host.
|
|
properties:
|
|
global:
|
|
description: Global defines global rate limiting parameters,
|
|
i.e. parameters defining descriptors that are sent to an
|
|
external rate limit service (RLS) for a rate limit decision
|
|
on each request.
|
|
properties:
|
|
descriptors:
|
|
description: Descriptors defines the list of descriptors
|
|
that will be generated and sent to the rate limit service.
|
|
Each descriptor contains 1+ key-value pair entries.
|
|
items:
|
|
description: RateLimitDescriptor defines a list of key-value
|
|
pair generators.
|
|
properties:
|
|
entries:
|
|
description: Entries is the list of key-value pair
|
|
generators.
|
|
items:
|
|
description: RateLimitDescriptorEntry is a key-value
|
|
pair generator. Exactly one field on this struct
|
|
must be non-nil.
|
|
properties:
|
|
genericKey:
|
|
description: GenericKey defines a descriptor
|
|
entry with a static key and value.
|
|
properties:
|
|
key:
|
|
description: Key defines the key of the
|
|
descriptor entry. If not set, the key
|
|
is set to "generic_key".
|
|
type: string
|
|
value:
|
|
description: Value defines the value of
|
|
the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
remoteAddress:
|
|
description: RemoteAddress defines a descriptor
|
|
entry with a key of "remote_address" and
|
|
a value equal to the client's IP address
|
|
(from x-forwarded-for).
|
|
type: object
|
|
requestHeader:
|
|
description: RequestHeader defines a descriptor
|
|
entry that's populated only if a given header
|
|
is present on the request. The descriptor
|
|
key is static, and the descriptor value
|
|
is equal to the value of the header.
|
|
properties:
|
|
descriptorKey:
|
|
description: DescriptorKey defines the
|
|
key to use on the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
headerName:
|
|
description: HeaderName defines the name
|
|
of the header to look for on the request.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
requestHeaderValueMatch:
|
|
description: RequestHeaderValueMatch defines
|
|
a descriptor entry that's populated if the
|
|
request's headers match a set of 1+ match
|
|
criteria. The descriptor key is "header_match",
|
|
and the descriptor value is static.
|
|
properties:
|
|
expectMatch:
|
|
default: true
|
|
description: ExpectMatch defines whether
|
|
the request must positively match the
|
|
match criteria in order to generate
|
|
a descriptor entry (i.e. true), or not
|
|
match the match criteria in order to
|
|
generate a descriptor entry (i.e. false).
|
|
The default is true.
|
|
type: boolean
|
|
headers:
|
|
description: Headers is a list of 1+ match
|
|
criteria to apply against the request
|
|
to determine whether to populate the
|
|
descriptor entry or not.
|
|
items:
|
|
description: HeaderMatchCondition specifies
|
|
how to conditionally match against
|
|
HTTP headers. The Name field is required,
|
|
only one of Present, NotPresent, Contains,
|
|
NotContains, Exact, NotExact and Regex
|
|
can be set. For negative matching
|
|
rules only (e.g. NotContains or NotExact)
|
|
you can set TreatMissingAsEmpty. IgnoreCase
|
|
has no effect for Regex.
|
|
properties:
|
|
contains:
|
|
description: Contains specifies
|
|
a substring that must be present
|
|
in the header value.
|
|
type: string
|
|
exact:
|
|
description: Exact specifies a string
|
|
that the header value must be
|
|
equal to.
|
|
type: string
|
|
ignoreCase:
|
|
description: IgnoreCase specifies
|
|
that string matching should be
|
|
case insensitive. Note that this
|
|
has no effect on the Regex parameter.
|
|
type: boolean
|
|
name:
|
|
description: Name is the name of
|
|
the header to match against. Name
|
|
is required. Header names are
|
|
case insensitive.
|
|
type: string
|
|
notcontains:
|
|
description: NotContains specifies
|
|
a substring that must not be present
|
|
in the header value.
|
|
type: string
|
|
notexact:
|
|
description: NoExact specifies a
|
|
string that the header value must
|
|
not be equal to. The condition
|
|
is true if the header has any
|
|
other value.
|
|
type: string
|
|
notpresent:
|
|
description: NotPresent specifies
|
|
that condition is true when the
|
|
named header is not present. Note
|
|
that setting NotPresent to false
|
|
does not make the condition true
|
|
if the named header is present.
|
|
type: boolean
|
|
present:
|
|
description: Present specifies that
|
|
condition is true when the named
|
|
header is present, regardless
|
|
of its value. Note that setting
|
|
Present to false does not make
|
|
the condition true if the named
|
|
header is absent.
|
|
type: boolean
|
|
regex:
|
|
description: Regex specifies a regular
|
|
expression pattern that must match
|
|
the header value.
|
|
type: string
|
|
treatMissingAsEmpty:
|
|
description: TreatMissingAsEmpty
|
|
specifies if the header match
|
|
rule specified header does not
|
|
exist, this header value will
|
|
be treated as empty. Defaults
|
|
to false. Unlike the underlying
|
|
Envoy implementation this is **only**
|
|
supported for negative matches
|
|
(e.g. NotContains, NotExact).
|
|
type: boolean
|
|
required:
|
|
- name
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
value:
|
|
description: Value defines the value of
|
|
the descriptor entry.
|
|
minLength: 1
|
|
type: string
|
|
type: object
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
type: object
|
|
minItems: 1
|
|
type: array
|
|
disabled:
|
|
description: Disabled configures the HTTPProxy to not
|
|
use the default global rate limit policy defined by
|
|
the Contour configuration.
|
|
type: boolean
|
|
type: object
|
|
local:
|
|
description: Local defines local rate limiting parameters,
|
|
i.e. parameters for rate limiting that occurs within each
|
|
Envoy pod as requests are handled.
|
|
properties:
|
|
burst:
|
|
description: Burst defines the number of requests above
|
|
the requests per unit that should be allowed within
|
|
a short period of time.
|
|
format: int32
|
|
type: integer
|
|
requests:
|
|
description: Requests defines how many requests per unit
|
|
of time should be allowed before rate limiting occurs.
|
|
format: int32
|
|
minimum: 1
|
|
type: integer
|
|
responseHeadersToAdd:
|
|
description: ResponseHeadersToAdd is an optional list
|
|
of response headers to set when a request is rate-limited.
|
|
items:
|
|
description: HeaderValue represents a header name/value
|
|
pair
|
|
properties:
|
|
name:
|
|
description: Name represents a key of a header
|
|
minLength: 1
|
|
type: string
|
|
value:
|
|
description: Value represents the value of a header
|
|
specified by a key
|
|
minLength: 1
|
|
type: string
|
|
required:
|
|
- name
|
|
- value
|
|
type: object
|
|
type: array
|
|
responseStatusCode:
|
|
description: ResponseStatusCode is the HTTP status code
|
|
to use for responses to rate-limited requests. Codes
|
|
must be in the 400-599 range (inclusive). If not specified,
|
|
the Envoy default of 429 (Too Many Requests) is used.
|
|
format: int32
|
|
maximum: 599
|
|
minimum: 400
|
|
type: integer
|
|
unit:
|
|
description: Unit defines the period of time within which
|
|
requests over the limit will be rate limited. Valid
|
|
values are "second", "minute" and "hour".
|
|
enum:
|
|
- second
|
|
- minute
|
|
- hour
|
|
type: string
|
|
required:
|
|
- requests
|
|
- unit
|
|
type: object
|
|
type: object
|
|
tls:
|
|
description: If present the fields describes TLS properties of
|
|
the virtual host. The SNI names that will be matched on are
|
|
described in fqdn, the tls.secretName secret must contain a
|
|
certificate that itself contains a name that matches the FQDN.
|
|
properties:
|
|
clientValidation:
|
|
description: "ClientValidation defines how to verify the client
|
|
certificate when an external client establishes a TLS connection
|
|
to Envoy. \n This setting: \n 1. Enables TLS client certificate
|
|
validation. 2. Specifies how the client certificate will
|
|
be validated (i.e. validation required or skipped). \n Note:
|
|
Setting client certificate validation to be skipped should
|
|
be only used in conjunction with an external authorization
|
|
server that performs client validation as Contour will ensure
|
|
client certificates are passed along."
|
|
properties:
|
|
caSecret:
|
|
description: Name of a Kubernetes secret that contains
|
|
a CA certificate bundle. The secret must contain key
|
|
named ca.crt. The client certificate must validate against
|
|
the certificates in the bundle. If specified and SkipClientCertValidation
|
|
is true, client certificates will be required on requests.
|
|
The name can be optionally prefixed with namespace "namespace/name".
|
|
When cross-namespace reference is used, TLSCertificateDelegation
|
|
resource must exist in the namespace to grant access
|
|
to the secret.
|
|
minLength: 1
|
|
type: string
|
|
crlOnlyVerifyLeafCert:
|
|
description: If this option is set to true, only the certificate
|
|
at the end of the certificate chain will be subject
|
|
to validation by CRL.
|
|
type: boolean
|
|
crlSecret:
|
|
description: Name of a Kubernetes opaque secret that contains
|
|
a concatenated list of PEM encoded CRLs. The secret
|
|
must contain key named crl.pem. This field will be used
|
|
to verify that a client certificate has not been revoked.
|
|
CRLs must be available from all CAs, unless crlOnlyVerifyLeafCert
|
|
is true. Large CRL lists are not supported since individual
|
|
secrets are limited to 1MiB in size. The name can be
|
|
optionally prefixed with namespace "namespace/name".
|
|
When cross-namespace reference is used, TLSCertificateDelegation
|
|
resource must exist in the namespace to grant access
|
|
to the secret.
|
|
minLength: 1
|
|
type: string
|
|
forwardClientCertificate:
|
|
description: ForwardClientCertificate adds the selected
|
|
data from the passed client TLS certificate to the x-forwarded-client-cert
|
|
header.
|
|
properties:
|
|
cert:
|
|
description: Client cert in URL encoded PEM format.
|
|
type: boolean
|
|
chain:
|
|
description: Client cert chain (including the leaf
|
|
cert) in URL encoded PEM format.
|
|
type: boolean
|
|
dns:
|
|
description: DNS type Subject Alternative Names of
|
|
the client cert.
|
|
type: boolean
|
|
subject:
|
|
description: Subject of the client cert.
|
|
type: boolean
|
|
uri:
|
|
description: URI type Subject Alternative Name of
|
|
the client cert.
|
|
type: boolean
|
|
type: object
|
|
optionalClientCertificate:
|
|
description: OptionalClientCertificate when set to true
|
|
will request a client certificate but allow the connection
|
|
to continue if the client does not provide one. If a
|
|
client certificate is sent, it will be verified according
|
|
to the other properties, which includes disabling validation
|
|
if SkipClientCertValidation is set. Defaults to false.
|
|
type: boolean
|
|
skipClientCertValidation:
|
|
description: SkipClientCertValidation disables downstream
|
|
client certificate validation. Defaults to false. This
|
|
field is intended to be used in conjunction with external
|
|
authorization in order to enable the external authorization
|
|
server to validate client certificates. When this field
|
|
is set to true, client certificates are requested but
|
|
not verified by Envoy. If CACertificate is specified,
|
|
client certificates are required on requests, but not
|
|
verified. If external authorization is in use, they
|
|
are presented to the external authorization server.
|
|
type: boolean
|
|
type: object
|
|
enableFallbackCertificate:
|
|
description: EnableFallbackCertificate defines if the vhost
|
|
should allow a default certificate to be applied which handles
|
|
all requests which don't match the SNI defined in this vhost.
|
|
type: boolean
|
|
maximumProtocolVersion:
|
|
description: MaximumProtocolVersion is the maximum TLS version
|
|
this vhost should negotiate. Valid options are `1.2` and
|
|
`1.3` (default). Any other value defaults to TLS 1.3.
|
|
type: string
|
|
minimumProtocolVersion:
|
|
description: MinimumProtocolVersion is the minimum TLS version
|
|
this vhost should negotiate. Valid options are `1.2` (default)
|
|
and `1.3`. Any other value defaults to TLS 1.2.
|
|
type: string
|
|
passthrough:
|
|
description: Passthrough defines whether the encrypted TLS
|
|
handshake will be passed through to the backing cluster.
|
|
Either Passthrough or SecretName must be specified, but
|
|
not both.
|
|
type: boolean
|
|
secretName:
|
|
description: SecretName is the name of a TLS secret. Either
|
|
SecretName or Passthrough must be specified, but not both.
|
|
If specified, the named secret must contain a matching certificate
|
|
for the virtual host's FQDN. The name can be optionally
|
|
prefixed with namespace "namespace/name". When cross-namespace
|
|
reference is used, TLSCertificateDelegation resource must
|
|
exist in the namespace to grant access to the secret.
|
|
type: string
|
|
type: object
|
|
required:
|
|
- fqdn
|
|
type: object
|
|
type: object
|
|
status:
|
|
default:
|
|
currentStatus: NotReconciled
|
|
description: Waiting for controller
|
|
description: Status is a container for computed information about the
|
|
HTTPProxy.
|
|
properties:
|
|
conditions:
|
|
description: "Conditions contains information about the current status
|
|
of the HTTPProxy, in an upstream-friendly container. \n Contour
|
|
will update a single condition, `Valid`, that is in normal-true
|
|
polarity. That is, when `currentStatus` is `valid`, the `Valid`
|
|
condition will be `status: true`, and vice versa. \n Contour will
|
|
leave untouched any other Conditions set in this block, in case
|
|
some other controller wants to add a Condition. \n If you are another
|
|
controller owner and wish to add a condition, you *should* namespace
|
|
your condition with a label, like `controller.domain.com/ConditionName`."
|
|
items:
|
|
description: "DetailedCondition is an extension of the normal Kubernetes
|
|
conditions, with two extra fields to hold sub-conditions, which
|
|
provide more detailed reasons for the state (True or False) of
|
|
the condition. \n `errors` holds information about sub-conditions
|
|
which are fatal to that condition and render its state False.
|
|
\n `warnings` holds information about sub-conditions which are
|
|
not fatal to that condition and do not force the state to be False.
|
|
\n Remember that Conditions have a type, a status, and a reason.
|
|
\n The type is the type of the condition, the most important one
|
|
in this CRD set is `Valid`. `Valid` is a positive-polarity condition:
|
|
when it is `status: true` there are no problems. \n In more detail,
|
|
`status: true` means that the object is has been ingested into
|
|
Contour with no errors. `warnings` may still be present, and will
|
|
be indicated in the Reason field. There must be zero entries in
|
|
the `errors` slice in this case. \n `Valid`, `status: false` means
|
|
that the object has had one or more fatal errors during processing
|
|
into Contour. The details of the errors will be present under
|
|
the `errors` field. There must be at least one error in the `errors`
|
|
slice if `status` is `false`. \n For DetailedConditions of types
|
|
other than `Valid`, the Condition must be in the negative polarity.
|
|
When they have `status` `true`, there is an error. There must
|
|
be at least one entry in the `errors` Subcondition slice. When
|
|
they have `status` `false`, there are no serious errors, and there
|
|
must be zero entries in the `errors` slice. In either case, there
|
|
may be entries in the `warnings` slice. \n Regardless of the polarity,
|
|
the `reason` and `message` fields must be updated with either
|
|
the detail of the reason (if there is one and only one entry in
|
|
total across both the `errors` and `warnings` slices), or `MultipleReasons`
|
|
if there is more than one entry."
|
|
properties:
|
|
errors:
|
|
description: "Errors contains a slice of relevant error subconditions
|
|
for this object. \n Subconditions are expected to appear when
|
|
relevant (when there is a error), and disappear when not relevant.
|
|
An empty slice here indicates no errors."
|
|
items:
|
|
description: "SubCondition is a Condition-like type intended
|
|
for use as a subcondition inside a DetailedCondition. \n
|
|
It contains a subset of the Condition fields. \n It is intended
|
|
for warnings and errors, so `type` names should use abnormal-true
|
|
polarity, that is, they should be of the form \"ErrorPresent:
|
|
true\". \n The expected lifecycle for these errors is that
|
|
they should only be present when the error or warning is,
|
|
and should be removed when they are not relevant."
|
|
properties:
|
|
message:
|
|
description: "Message is a human readable message indicating
|
|
details about the transition. \n This may be an empty
|
|
string."
|
|
maxLength: 32768
|
|
type: string
|
|
reason:
|
|
description: "Reason contains a programmatic identifier
|
|
indicating the reason for the condition's last transition.
|
|
Producers of specific condition types may define expected
|
|
values and meanings for this field, and whether the
|
|
values are considered a guaranteed API. \n The value
|
|
should be a CamelCase string. \n This field may not
|
|
be empty."
|
|
maxLength: 1024
|
|
minLength: 1
|
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
|
type: string
|
|
status:
|
|
description: Status of the condition, one of True, False,
|
|
Unknown.
|
|
enum:
|
|
- "True"
|
|
- "False"
|
|
- Unknown
|
|
type: string
|
|
type:
|
|
description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
|
|
\n This must be in abnormal-true polarity, that is,
|
|
`ErrorFound` or `controller.io/ErrorFound`. \n The regex
|
|
it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)"
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
required:
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
lastTransitionTime:
|
|
description: lastTransitionTime is the last time the condition
|
|
transitioned from one status to another. This should be when
|
|
the underlying condition changed. If that is not known, then
|
|
using the time when the API field changed is acceptable.
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
description: message is a human readable message indicating
|
|
details about the transition. This may be an empty string.
|
|
maxLength: 32768
|
|
type: string
|
|
observedGeneration:
|
|
description: observedGeneration represents the .metadata.generation
|
|
that the condition was set based upon. For instance, if .metadata.generation
|
|
is currently 12, but the .status.conditions[x].observedGeneration
|
|
is 9, the condition is out of date with respect to the current
|
|
state of the instance.
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
reason:
|
|
description: reason contains a programmatic identifier indicating
|
|
the reason for the condition's last transition. Producers
|
|
of specific condition types may define expected values and
|
|
meanings for this field, and whether the values are considered
|
|
a guaranteed API. The value should be a CamelCase string.
|
|
This field may not be empty.
|
|
maxLength: 1024
|
|
minLength: 1
|
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
|
type: string
|
|
status:
|
|
description: status of the condition, one of True, False, Unknown.
|
|
enum:
|
|
- "True"
|
|
- "False"
|
|
- Unknown
|
|
type: string
|
|
type:
|
|
description: type of condition in CamelCase or in foo.example.com/CamelCase.
|
|
--- Many .condition.type values are consistent across resources
|
|
like Available, but because arbitrary conditions can be useful
|
|
(see .node.status.conditions), the ability to deconflict is
|
|
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
warnings:
|
|
description: "Warnings contains a slice of relevant warning
|
|
subconditions for this object. \n Subconditions are expected
|
|
to appear when relevant (when there is a warning), and disappear
|
|
when not relevant. An empty slice here indicates no warnings."
|
|
items:
|
|
description: "SubCondition is a Condition-like type intended
|
|
for use as a subcondition inside a DetailedCondition. \n
|
|
It contains a subset of the Condition fields. \n It is intended
|
|
for warnings and errors, so `type` names should use abnormal-true
|
|
polarity, that is, they should be of the form \"ErrorPresent:
|
|
true\". \n The expected lifecycle for these errors is that
|
|
they should only be present when the error or warning is,
|
|
and should be removed when they are not relevant."
|
|
properties:
|
|
message:
|
|
description: "Message is a human readable message indicating
|
|
details about the transition. \n This may be an empty
|
|
string."
|
|
maxLength: 32768
|
|
type: string
|
|
reason:
|
|
description: "Reason contains a programmatic identifier
|
|
indicating the reason for the condition's last transition.
|
|
Producers of specific condition types may define expected
|
|
values and meanings for this field, and whether the
|
|
values are considered a guaranteed API. \n The value
|
|
should be a CamelCase string. \n This field may not
|
|
be empty."
|
|
maxLength: 1024
|
|
minLength: 1
|
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
|
type: string
|
|
status:
|
|
description: Status of the condition, one of True, False,
|
|
Unknown.
|
|
enum:
|
|
- "True"
|
|
- "False"
|
|
- Unknown
|
|
type: string
|
|
type:
|
|
description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
|
|
\n This must be in abnormal-true polarity, that is,
|
|
`ErrorFound` or `controller.io/ErrorFound`. \n The regex
|
|
it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)"
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
required:
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
required:
|
|
- lastTransitionTime
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-map-keys:
|
|
- type
|
|
x-kubernetes-list-type: map
|
|
currentStatus:
|
|
type: string
|
|
description:
|
|
type: string
|
|
loadBalancer:
|
|
description: LoadBalancer contains the current status of the load
|
|
balancer.
|
|
properties:
|
|
ingress:
|
|
description: Ingress is a list containing ingress points for the
|
|
load-balancer. Traffic intended for the service should be sent
|
|
to these ingress points.
|
|
items:
|
|
description: 'LoadBalancerIngress represents the status of a
|
|
load-balancer ingress point: traffic intended for the service
|
|
should be sent to an ingress point.'
|
|
properties:
|
|
hostname:
|
|
description: Hostname is set for load-balancer ingress points
|
|
that are DNS based (typically AWS load-balancers)
|
|
type: string
|
|
ip:
|
|
description: IP is set for load-balancer ingress points
|
|
that are IP based (typically GCE or OpenStack load-balancers)
|
|
type: string
|
|
ports:
|
|
description: Ports is a list of records of service ports
|
|
If used, every port defined in the service should have
|
|
an entry in it
|
|
items:
|
|
properties:
|
|
error:
|
|
description: 'Error is to record the problem with
|
|
the service port The format of the error shall comply
|
|
with the following rules: - built-in error values
|
|
shall be specified in this file and those shall
|
|
use CamelCase names - cloud provider specific error
|
|
values must have names that comply with the format
|
|
foo.example.com/CamelCase. --- The regex it matches
|
|
is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
port:
|
|
description: Port is the port number of the service
|
|
port of which status is recorded here
|
|
format: int32
|
|
type: integer
|
|
protocol:
|
|
default: TCP
|
|
description: 'Protocol is the protocol of the service
|
|
port of which status is recorded here The supported
|
|
values are: "TCP", "UDP", "SCTP"'
|
|
type: string
|
|
required:
|
|
- port
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-type: atomic
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
required:
|
|
- metadata
|
|
- spec
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
{{- end }}
|