Documentation ¶
Overview ¶
+k8s:deepcopy-gen=package Package network holds the typed objects that define the schemas for configuring the knative/serving networking layer.
Index ¶
- Constants
- Variables
- func IsKubeletProbe(r *http.Request) bool
- func IsProbe(r *http.Request) bool
- func KnativeProbeHeader(r *http.Request) string
- func KnativeProxyHeader(r *http.Request) string
- func NameForPortNumber(svc *corev1.Service, portNumber int32) (string, error)
- func NewBufferPool() httputil.BufferPool
- func NewProbeHandler(next http.Handler) http.Handler
- func PortNumberForName(sub corev1.EndpointSubset, portName string) (int32, error)
- func RewriteHostIn(r *http.Request)
- func RewriteHostOut(r *http.Request)
- type Config
- type DomainTemplateValues
- type HTTPProtocol
- type ReqEvent
- type ReqEventType
- type RequestStats
- type RequestStatsReport
- type TagTemplateValues
Constants ¶
const ( // ProbePath is the name of a path that activator, autoscaler and // prober(used by KIngress generally) use for health check. ProbePath = "/healthz" // ProbeHeaderName is the name of a header that can be added to // requests to probe the knative networking layer. Requests // with this header will not be passed to the user container or // included in request metrics. ProbeHeaderName = "K-Network-Probe" // ProxyHeaderName is the name of an internal header that activator // uses to mark requests going through it. ProxyHeaderName = "K-Proxy-Request" // HashHeaderName is the name of an internal header that Ingress controller // uses to find out which version of the networking config is deployed. HashHeaderName = "K-Network-Hash" // OriginalHostHeader is used to avoid Istio host based routing rules // in Activator. // The header contains the original Host value that can be rewritten // at the Queue proxy level back to be a host header. OriginalHostHeader = "K-Original-Host" // ConfigName is the name of the configmap containing all // customizations for networking features. ConfigName = "config-network" // IstioOutboundIPRangesKey is the name of the configuration entry // that specifies Istio outbound ip ranges. // // DEPRECATED: This will be completely removed in the future release. IstioOutboundIPRangesKey = "istio.sidecar.includeOutboundIPRanges" // DeprecatedDefaultIngressClassKey Please use DefaultIngressClassKey instead. DeprecatedDefaultIngressClassKey = "clusteringress.class" // DefaultIngressClassKey is the name of the configuration entry // that specifies the default Ingress. DefaultIngressClassKey = "ingress.class" // DefaultCertificateClassKey is the name of the configuration entry // that specifies the default Certificate. DefaultCertificateClassKey = "certificate.class" // IstioIngressClassName value for specifying knative's Istio // Ingress reconciler. IstioIngressClassName = "istio.ingress.networking.knative.dev" // CertManagerCertificateClassName value for specifying Knative's Cert-Manager // Certificate reconciler. CertManagerCertificateClassName = "cert-manager.certificate.networking.knative.dev" // DomainTemplateKey is the name of the configuration entry that // specifies the golang template string to use to construct the // Knative service's DNS name. DomainTemplateKey = "domainTemplate" // TagTemplateKey is the name of the configuration entry that // specifies the golang template string to use to construct the // hostname for a Route's tag. TagTemplateKey = "tagTemplate" // KubeProbeUAPrefix is the user agent prefix of the probe. // Since K8s 1.8, prober requests have // User-Agent = "kube-probe/{major-version}.{minor-version}". KubeProbeUAPrefix = "kube-probe/" // KubeletProbeHeaderName is the name of the header supplied by kubelet // probes. Istio with mTLS rewrites probes, but their probes pass a // different user-agent. So we augment the probes with this header. KubeletProbeHeaderName = "K-Kubelet-Probe" // DefaultDomainTemplate is the default golang template to use when // constructing the Knative Route's Domain(host) DefaultDomainTemplate = "{{.Name}}.{{.Namespace}}.{{.Domain}}" // DefaultTagTemplate is the default golang template to use when // constructing the Knative Route's tag names. DefaultTagTemplate = "{{.Tag}}-{{.Name}}" // AutoTLSKey is the name of the configuration entry // that specifies enabling auto-TLS or not. AutoTLSKey = "autoTLS" // HTTPProtocolKey is the name of the configuration entry that // specifies the HTTP endpoint behavior of Knative ingress. HTTPProtocolKey = "httpProtocol" // UserAgentKey is the constant for header "User-Agent". UserAgentKey = "User-Agent" // ActivatorUserAgent is the user-agent header value set in probe requests sent // from activator. ActivatorUserAgent = "Knative-Activator-Probe" // QueueProxyUserAgent is the user-agent header value set in probe requests sent // from queue-proxy. QueueProxyUserAgent = "Knative-Queue-Proxy-Probe" // IngressReadinessUserAgent is the user-agent header value // set in probe requests for Ingress status. IngressReadinessUserAgent = "Knative-Ingress-Probe" // AutoscalingUserAgent is the user-agent header value set in probe // requests sent by autoscaling implementations. AutoscalingUserAgent = "Knative-Autoscaling-Probe" // TagHeaderName is the name of the header entry which has a tag name as value. // The tag name specifies which route was expected to be chosen by Ingress. TagHeaderName = "Knative-Serving-Tag" // DefaultRouteHeaderName is the name of the header entry // identifying whether a request is routed via the default route or not. // It has one of the string value "true" or "false". DefaultRouteHeaderName = "Knative-Serving-Default-Route" // TagHeaderBasedRoutingKey is the name of the configuration entry // that specifies enabling tag header based routing or not. TagHeaderBasedRoutingKey = "tagHeaderBasedRouting" )
Variables ¶
var ProbeHeaderValue = "probe"
ProbeHeaderValue is the value used in 'K-Network-Probe'
Functions ¶
func IsKubeletProbe ¶ added in v0.6.0
IsKubeletProbe returns true if the request is a Kubernetes probe.
func IsProbe ¶ added in v0.8.0
IsProbe returns true if the request is a Kubernetes probe or a Knative probe, i.e. non-empty ProbeHeaderName header.
func KnativeProbeHeader ¶ added in v0.8.0
KnativeProbeHeader returns the value for key ProbeHeaderName in request headers.
func KnativeProxyHeader ¶ added in v0.8.0
KnativeProxyHeader returns the value for key ProxyHeaderName in request headers.
func NameForPortNumber ¶ added in v0.12.0
NameForPortNumber finds the name for a given port as defined by a Service.
func NewBufferPool ¶ added in v0.12.0
func NewBufferPool() httputil.BufferPool
NewBufferPool creates a new BytePool. This is only safe to use in the context of a httputil.ReverseProxy, as the buffers returned via Put are not cleaned explicitly.
func NewProbeHandler ¶ added in v0.9.0
NewProbeHandler wraps a HTTP handler handling probing requests around the provided HTTP handler
func PortNumberForName ¶ added in v0.12.0
func PortNumberForName(sub corev1.EndpointSubset, portName string) (int32, error)
PortNumberForName resolves a given name to a portNumber as defined by an EndpointSubset.
func RewriteHostIn ¶ added in v0.6.0
RewriteHostIn removes the `Host` header from the inbound (server) request and replaces it with our custom header. This is done to avoid Istio Host based routing, see #3870. Queue-Proxy will execute the reverse process.
func RewriteHostOut ¶ added in v0.6.0
RewriteHostOut undoes the `RewriteHostIn` action. RewriteHostOut checks if network.OriginalHostHeader was set and if it was, then uses that as the r.Host (which takes priority over Request.Header["Host"]). If the request did not have the OriginalHostHeader header set, the request is untouched.
Types ¶
type Config ¶
type Config struct { // DefaultIngressClass specifies the default Ingress class. DefaultIngressClass string // DomainTemplate is the golang text template to use to generate the // Route's domain (host) for the Service. DomainTemplate string // TagTemplate is the golang text template to use to generate the // Route's tag hostnames. TagTemplate string // AutoTLS specifies if auto-TLS is enabled or not. AutoTLS bool // HTTPProtocol specifics the behavior of HTTP endpoint of Knative // ingress. HTTPProtocol HTTPProtocol // DefaultCertificateClass specifies the default Certificate class. DefaultCertificateClass string // TagHeaderBasedRouting specifies if TagHeaderBasedRouting is enabled or not. TagHeaderBasedRouting bool }
Config contains the networking configuration defined in the network config map.
func NewConfigFromConfigMap ¶
NewConfigFromConfigMap creates a Config from the supplied ConfigMap
func NewConfigFromMap ¶ added in v0.14.0
NewConfigFromMap creates a Config from the supplied data.
func (*Config) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config.
func (*Config) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Config) GetDomainTemplate ¶ added in v0.6.0
GetDomainTemplate returns the golang Template from the config map or panics (the value is validated during CM validation and at this point guaranteed to be parseable).
func (*Config) GetTagTemplate ¶ added in v0.7.0
GetTagTemplate returns the go template for the route tag.
type DomainTemplateValues ¶ added in v0.6.0
type DomainTemplateValues struct { Name string Namespace string Domain string Annotations map[string]string Labels map[string]string }
DomainTemplateValues are the available properties people can choose from in their Route's "DomainTemplate" golang template sting. We could add more over time - e.g. RevisionName if we thought that might be of interest to people.
func (*DomainTemplateValues) DeepCopy ¶ added in v0.6.0
func (in *DomainTemplateValues) DeepCopy() *DomainTemplateValues
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainTemplateValues.
func (*DomainTemplateValues) DeepCopyInto ¶ added in v0.6.0
func (in *DomainTemplateValues) DeepCopyInto(out *DomainTemplateValues)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HTTPProtocol ¶ added in v0.6.0
type HTTPProtocol string
HTTPProtocol indicates a type of HTTP endpoint behavior that Knative ingress could take.
const ( // HTTPEnabled represents HTTP proocol is enabled in Knative ingress. HTTPEnabled HTTPProtocol = "enabled" // HTTPDisabled represents HTTP protocol is disabled in Knative ingress. HTTPDisabled HTTPProtocol = "disabled" // HTTPRedirected represents HTTP connection is redirected to HTTPS in Knative ingress. HTTPRedirected HTTPProtocol = "redirected" )
type ReqEvent ¶ added in v0.15.0
type ReqEvent struct { // Time is the time the request event happened. Time time.Time // Type is the type of the request event. Type ReqEventType // Key is the revision the event is associated with. // +optional Key types.NamespacedName }
ReqEvent represents either an incoming or closed request. +k8s:deepcopy-gen=false
type ReqEventType ¶ added in v0.15.0
type ReqEventType int
ReqEventType denotes the type (incoming/closed) of a ReqEvent.
const ( // ReqIn represents an incoming request ReqIn ReqEventType = iota // ReqOut represents a finished request ReqOut // ProxiedIn represents an incoming request through a proxy. ProxiedIn // ProxiedOut represents a finished proxied request. ProxiedOut )
type RequestStats ¶ added in v0.15.0
type RequestStats struct {
// contains filtered or unexported fields
}
RequestStats collects statistics about requests as they flow in and out of the system. +k8s:deepcopy-gen=false
func NewRequestStats ¶ added in v0.15.0
func NewRequestStats(startedAt time.Time) *RequestStats
NewRequestStats builds a RequestStats instance, started at the given time.
func (*RequestStats) HandleEvent ¶ added in v0.15.0
func (s *RequestStats) HandleEvent(event ReqEvent)
HandleEvent handles an incoming or outgoing request event and updates the state accordingly.
func (*RequestStats) Report ¶ added in v0.15.0
func (s *RequestStats) Report(now time.Time) RequestStatsReport
Report returns a RequestStatsReport relative to the given time. The state will be reset for another reporting cycle afterwards.
type RequestStatsReport ¶ added in v0.15.0
type RequestStatsReport struct { // AverageConcurrency is the average concurrency over the reporting timeframe. // This is calculated via the utilization at a given concurrency. For example: // 2 requests each taking 500ms over a 1s reporting window generate an average // concurrency of 1. AverageConcurrency float64 // AverageProxiedConcurrency is the average concurrency of all proxied requests. // The same calculation as above applies. AverageProxiedConcurrency float64 // RequestCount is the number of requests that arrived in the current reporting // timeframe. RequestCount float64 // ProxiedRequestCount is the number of proxied requests that arrived in the current // reporting timeframe. ProxiedRequestCount float64 }
RequestStatsReport are the metrics reported from the the request stats collector at a given time. +k8s:deepcopy-gen=false
type TagTemplateValues ¶ added in v0.7.0
TagTemplateValues are the available properties people can choose from in their Route's "TagTemplate" golang template sting.
func (*TagTemplateValues) DeepCopy ¶ added in v0.7.0
func (in *TagTemplateValues) DeepCopy() *TagTemplateValues
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagTemplateValues.
func (*TagTemplateValues) DeepCopyInto ¶ added in v0.7.0
func (in *TagTemplateValues) DeepCopyInto(out *TagTemplateValues)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.