ExtensionService
projectcontour.io / v1alpha1
apiVersion: projectcontour.io/v1alpha1
kind: ExtensionService
metadata:
name: example
apiVersion
string
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
kind
string
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
metadata
object
spec object
ExtensionServiceSpec defines the desired state of an ExtensionService resource.
circuitBreakerPolicy object
CircuitBreakerPolicy specifies the circuit breaker budget across the extension service.
If defined this overrides the global circuit breaker budget.
maxConnections
integer
The maximum number of connections that a single Envoy instance allows to the Kubernetes Service; defaults to 1024.
format:
int32
maxPendingRequests
integer
The maximum number of pending requests that a single Envoy instance allows to the Kubernetes Service; defaults to 1024.
format:
int32
maxRequests
integer
The maximum parallel requests a single Envoy instance allows to the Kubernetes Service; defaults to 1024
format:
int32
maxRetries
integer
The maximum number of parallel retries a single Envoy instance allows to the Kubernetes Service; defaults to 3.
format:
int32
perHostMaxConnections
integer
PerHostMaxConnections is the maximum number of connections
that Envoy will allow to each individual host in a cluster.
format:
int32loadBalancerPolicy object
The policy for load balancing GRPC service requests. Note that the
`Cookie` and `RequestHash` load balancing strategies cannot be used
here.
requestHashPolicies []object
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`.
hashSourceIP
boolean
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.
headerHashOptions object
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.
headerName
string
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:
1queryParameterHashOptions object
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.
parameterName
string
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
terminal
boolean
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.
strategy
string
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.
protocol
string
Protocol may be used to specify (or override) the protocol used to reach this Service.
Values may be h2 or h2c. If omitted, protocol-selection falls back on Service annotations.
enum:
h2, h2c
protocolVersion
string
This field sets the version of the GRPC protocol that Envoy uses to
send requests to the extension service. Since Contour always uses the
v3 Envoy API, this is currently fixed at "v3". However, other
protocol options will be available in future.
enum:
v3services []object required
Services specifies the set of Kubernetes Service resources that
receive GRPC extension API requests.
If no weights are specified for any of the entries in
this array, traffic will be spread evenly across all the
services.
Otherwise, traffic is balanced proportionally to the
Weight field in each entry.
minItems:
1
name
string required
Name is the name of Kubernetes service that will accept service
traffic.
port
integer required
Port (defined as Integer) to proxy traffic to since a service can have multiple defined.
minimum:
1maximum:
65536
weight
integer
Weight defines proportion of traffic to balance to the Kubernetes Service.
format:
int32timeoutPolicy object
The timeout policy for requests to the services.
idle
string
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)$
idleConnection
string
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)$
response
string
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)$validation object
UpstreamValidation defines how to verify the backend service's certificate
caSecret
string required
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.
Max length should be the actual max possible length of a namespaced name (63 + 253 + 1 = 317)
minLength:
1maxLength:
317
subjectName
string required
Key which is expected to be present in the 'subjectAltName' of the presented certificate.
Deprecated: migrate to using the plural field subjectNames.
minLength:
1maxLength:
250
subjectNames
[]string
List of keys, of which at least one is expected to be present in the 'subjectAltName of the
presented certificate.
minItems:
1maxItems:
8status object
ExtensionServiceStatus defines the observed state of an
ExtensionService resource.
conditions []object
Conditions contains the current status of the ExtensionService resource.
Contour will update a single condition, `Valid`, that is in normal-true polarity.
Contour will not modify any other Conditions set in this block,
in case some other controller wants to add a Condition.
errors []object
Errors contains a slice of relevant error subconditions for this object.
Subconditions are expected to appear when relevant (when there is a error), and disappear when not relevant.
An empty slice here indicates no errors.
message
string required
Message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength:
32768
reason
string required
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.
pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$minLength:
1maxLength:
1024
status
string required
Status of the condition, one of True, False, Unknown.
enum:
True, False, Unknown
type
string required
Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
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])$maxLength:
316
lastTransitionTime
string required
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
message
string required
message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength:
32768
observedGeneration
integer
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:
int64minimum:
0
reason
string required
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.
pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$minLength:
1maxLength:
1024
status
string required
status of the condition, one of True, False, Unknown.
enum:
True, False, Unknown
type
string required
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)
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])$maxLength:
316warnings []object
Warnings contains a slice of relevant warning subconditions for this object.
Subconditions are expected to appear when relevant (when there is a warning), and disappear when not relevant.
An empty slice here indicates no warnings.
message
string required
Message is a human readable message indicating details about the transition.
This may be an empty string.
maxLength:
32768
reason
string required
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.
pattern:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$minLength:
1maxLength:
1024
status
string required
Status of the condition, one of True, False, Unknown.
enum:
True, False, Unknown
type
string required
Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
This must be in abnormal-true polarity, that is, `ErrorFound` or `controller.io/ErrorFound`.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
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])$maxLength:
316No matches. Try .spec.circuitBreakerPolicy for an exact path