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 GetClusterDomainName() string
- func GetServiceHostname(name string, namespace string) string
- func IsKubeletProbe(r *http.Request) bool
- func ListenAndServe(addr string, h http.Handler) error
- func NewAutoTransport() http.RoundTripper
- func NewH2CTransport() http.RoundTripper
- func NewServer(addr string, h http.Handler) *http.Server
- func RewriteHostIn(r *http.Request)
- func RewriteHostOut(r *http.Request)
- type Config
- type DomainTemplateValues
- type HTTPProtocol
- type RoundTripperFunc
Constants ¶
const ( // 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" // 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. IstioOutboundIPRangesKey = "istio.sidecar.includeOutboundIPRanges" // DefaultClusterIngressClassKey is the name of the configuration entry // that specifies the default ClusterIngress. DefaultClusterIngressClassKey = "clusteringress.class" // IstioIngressClassName value for specifying knative's Istio // ClusterIngress reconciler. IstioIngressClassName = "istio.ingress.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" // 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" // DefaultConnTimeout specifies a short default connection timeout // to avoid hitting the issue fixed in // https://github.com/kubernetes/kubernetes/pull/72534 but only // avalailable after Kubernetes 1.14. // // Our connections are usually between pods in the same cluster // like activator <-> queue-proxy, or even between containers // within the same pod queue-proxy <-> user-container, so a // smaller connect timeout would be justifiable. // // We should consider exposing this as a configuration. DefaultConnTimeout = 200 * time.Millisecond )
Variables ¶
var ( // DefaultDomainTemplate is the default golang template to use when // constructing the Knative Route's Domain(host) DefaultDomainTemplate = "{{.Name}}.{{.Namespace}}.{{.Domain}}" // 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" )
var AutoTransport = NewAutoTransport()
AutoTransport uses h2c for HTTP2 requests and falls back to `http.DefaultTransport` for all others
var DefaultH2CTransport http.RoundTripper = NewH2CTransport()
DefaultH2CTransport is a singleton instance of H2C transport.
Functions ¶
func GetClusterDomainName ¶ added in v0.6.0
func GetClusterDomainName() string
GetClusterDomainName returns cluster's domain name or an error Closes issue: https://github.com/knative/eventing/issues/714
func GetServiceHostname ¶ added in v0.6.0
GetServiceHostname returns the fully qualified service hostname
func IsKubeletProbe ¶ added in v0.6.0
IsKubeletProbe returns true if the request is a kubernetes probe.
func ListenAndServe ¶ added in v0.6.0
ListenAndServe starts a new server and listens on the `addr`.
func NewAutoTransport ¶ added in v0.6.0
func NewAutoTransport() http.RoundTripper
NewAutoTransport creates a RoundTripper that can use appropriate transport based on the request's HTTP version.
func NewH2CTransport ¶ added in v0.6.0
func NewH2CTransport() http.RoundTripper
NewH2CTransport constructs a new H2C transport. That transport will reroute all HTTPS traffic to HTTP. This is to explicitly allow h2c (http2 without TLS) transport. See https://github.com/golang/go/issues/14141 for more details.
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 { // IstioOutboundIPRange specifies the IP ranges to intercept // by Istio sidecar. IstioOutboundIPRanges string // DefaultClusterIngressClass specifies the default ClusterIngress class. DefaultClusterIngressClass string // DomainTemplate is the golang text template to use to generate the // Route's domain (host) for the Service. DomainTemplate string // AutoTLS specifies if auto-TLS is enabled or not. AutoTLS bool // HTTPProtocol specifics the behavior of HTTP endpoint of Knative // ingress. HTTPProtocol HTTPProtocol }
Config contains the networking configuration defined in the network config map.
func NewConfigFromConfigMap ¶
NewConfigFromConfigMap creates a Config from the supplied ConfigMap
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
type DomainTemplateValues ¶ added in v0.6.0
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 RoundTripperFunc ¶ added in v0.6.0
RoundTripperFunc implementation roundtrips a request.