Documentation
¶
Overview ¶
+k8s:deepcopy-gen=package +groupName=networking.internal.knative.dev
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func Resource(resource string) schema.GroupResource
- type ClusterIngress
- func (in *ClusterIngress) DeepCopy() *ClusterIngress
- func (in *ClusterIngress) DeepCopyInto(out *ClusterIngress)
- func (in *ClusterIngress) DeepCopyObject() runtime.Object
- func (ci *ClusterIngress) GetGroupVersionKind() schema.GroupVersionKind
- func (c *ClusterIngress) SetDefaults()
- func (ci *ClusterIngress) Validate() *apis.FieldError
- type ClusterIngressBackend
- type ClusterIngressBackendSplit
- type ClusterIngressList
- type ClusterIngressRule
- type ClusterIngressTLS
- type HTTPClusterIngressPath
- type HTTPClusterIngressRuleValue
- type HTTPRetry
- type IngressSpec
- type IngressStatus
- func (in *IngressStatus) DeepCopy() *IngressStatus
- func (in *IngressStatus) DeepCopyInto(out *IngressStatus)
- func (cis *IngressStatus) GetCondition(t duckv1alpha1.ConditionType) *duckv1alpha1.Condition
- func (cis *IngressStatus) GetConditions() duckv1alpha1.Conditions
- func (cis *IngressStatus) InitializeConditions()
- func (cis *IngressStatus) IsReady() bool
- func (cis *IngressStatus) MarkLoadBalancerReady(lbs []LoadBalancerIngressStatus)
- func (cis *IngressStatus) MarkNetworkConfigured()
- func (cis *IngressStatus) SetConditions(conditions duckv1alpha1.Conditions)
- type LoadBalancerIngressStatus
- type LoadBalancerStatus
Constants ¶
const ( // DefaultTimeout will be set if timeout not specified. DefaultTimeout = 60 * time.Second // DefaultRetryCount will be set if Attempts not specified. DefaultRetryCount = 3 )
const ( // ClusterIngressConditionReady is set when the clusterIngress networking setting is // configured and it has a load balancer address. ClusterIngressConditionReady = duckv1alpha1.ConditionReady // ClusterIngressConditionNetworkConfigured is set when the ClusterIngress's underlying // network programming has been configured. This doesn't include conditions of the // backends, so even if this should remain true when network is configured and backends // are not ready. ClusterIngressConditionNetworkConfigured duckv1alpha1.ConditionType = "NetworkConfigured" // ClusterIngressConditionLoadBalancerReady is set when the ClusterIngress has // a ready LoadBalancer. ClusterIngressConditionLoadBalancerReady duckv1alpha1.ConditionType = "LoadBalancerReady" )
ConditionType represents a ClusterIngress condition value
Variables ¶
var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) AddToScheme = SchemeBuilder.AddToScheme )
var SchemeGroupVersion = schema.GroupVersion{Group: networking.GroupName, Version: "v1alpha1"}
SchemeGroupVersion is group version used to register these objects
Functions ¶
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type ClusterIngress ¶
type ClusterIngress struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec is the desired state of the ClusterIngress.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
// +optional
Spec IngressSpec `json:"spec,omitempty"`
// Status is the current state of the ClusterIngress.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
// +optional
Status IngressStatus `json:"status,omitempty"`
}
ClusterIngress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An ClusterIngress can be configured to give services externally-reachable urls, load balance traffic offer name based virtual hosting etc.
This is heavily based on K8s Ingress https://godoc.org/k8s.io/api/extensions/v1beta1#Ingress which some highlighted modifications.
func (*ClusterIngress) DeepCopy ¶
func (in *ClusterIngress) DeepCopy() *ClusterIngress
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngress.
func (*ClusterIngress) DeepCopyInto ¶
func (in *ClusterIngress) DeepCopyInto(out *ClusterIngress)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterIngress) DeepCopyObject ¶
func (in *ClusterIngress) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ClusterIngress) GetGroupVersionKind ¶
func (ci *ClusterIngress) GetGroupVersionKind() schema.GroupVersionKind
func (*ClusterIngress) SetDefaults ¶
func (c *ClusterIngress) SetDefaults()
func (*ClusterIngress) Validate ¶
func (ci *ClusterIngress) Validate() *apis.FieldError
type ClusterIngressBackend ¶
type ClusterIngressBackend struct {
// Specifies the namespace of the referenced service.
//
// NOTE: This differs from K8s Ingress to allow routing to different namespaces.
ServiceNamespace string `json:"serviceNamespace"`
// Specifies the name of the referenced service.
ServiceName string `json:"serviceName"`
// Specifies the port of the referenced service.
ServicePort intstr.IntOrString `json:"servicePort"`
}
ClusterIngressBackend describes all endpoints for a given service and port.
func (*ClusterIngressBackend) DeepCopy ¶
func (in *ClusterIngressBackend) DeepCopy() *ClusterIngressBackend
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressBackend.
func (*ClusterIngressBackend) DeepCopyInto ¶
func (in *ClusterIngressBackend) DeepCopyInto(out *ClusterIngressBackend)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ClusterIngressBackend) Validate ¶
func (b ClusterIngressBackend) Validate() *apis.FieldError
Validate inspects the fields of the type ClusterIngressBackend to determine if they are valid.
type ClusterIngressBackendSplit ¶
type ClusterIngressBackendSplit struct {
// Specifies the backend receiving the traffic split.
ClusterIngressBackend `json:",inline"`
// Specifies the split percentage, a number between 0 and 100. If
// only one split is specified, we default to 100.
//
// NOTE: This differs from K8s Ingress to allow percentage split.
Percent int `json:"percent,omitempty"`
}
ClusterIngressBackend describes all endpoints for a given service and port.
func (*ClusterIngressBackendSplit) DeepCopy ¶
func (in *ClusterIngressBackendSplit) DeepCopy() *ClusterIngressBackendSplit
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressBackendSplit.
func (*ClusterIngressBackendSplit) DeepCopyInto ¶
func (in *ClusterIngressBackendSplit) DeepCopyInto(out *ClusterIngressBackendSplit)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ClusterIngressBackendSplit) Validate ¶
func (s ClusterIngressBackendSplit) Validate() *apis.FieldError
type ClusterIngressList ¶
type ClusterIngressList struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// Items is the list of ClusterIngress.
Items []ClusterIngress `json:"items"`
}
ClusterIngressList is a collection of ClusterIngress.
func (*ClusterIngressList) DeepCopy ¶
func (in *ClusterIngressList) DeepCopy() *ClusterIngressList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressList.
func (*ClusterIngressList) DeepCopyInto ¶
func (in *ClusterIngressList) DeepCopyInto(out *ClusterIngressList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterIngressList) DeepCopyObject ¶
func (in *ClusterIngressList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ClusterIngressRule ¶
type ClusterIngressRule struct {
// Host is the fully qualified domain name of a network host, as defined
// by RFC 3986. Note the following deviations from the "host" part of the
// URI as defined in the RFC:
// 1. IPs are not allowed. Currently a rule value can only apply to the
// IP in the Spec of the parent ClusterIngress.
// 2. The `:` delimiter is not respected because ports are not allowed.
// Currently the port of an ClusterIngress is implicitly :80 for http and
// :443 for https.
// Both these may change in the future.
// If the host is unspecified, the ClusterIngress routes all traffic based on the
// specified ClusterIngressRuleValue.
// If multiple matching Hosts were provided, the first rule will take precedent.
// +optional
Hosts []string `json:"hosts,omitempty"`
// HTTP represents a rule to apply against incoming requests. If the
// rule is satisfied, the request is routed to the specified backend.
HTTP *HTTPClusterIngressRuleValue `json:"http,omitempty"`
}
ClusterIngressRule represents the rules mapping the paths under a specified host to the related backend services. Incoming requests are first evaluated for a host match, then routed to the backend associated with the matching ClusterIngressRuleValue.
func (*ClusterIngressRule) DeepCopy ¶
func (in *ClusterIngressRule) DeepCopy() *ClusterIngressRule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressRule.
func (*ClusterIngressRule) DeepCopyInto ¶
func (in *ClusterIngressRule) DeepCopyInto(out *ClusterIngressRule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterIngressRule) SetDefaults ¶
func (r *ClusterIngressRule) SetDefaults()
func (*ClusterIngressRule) Validate ¶
func (r *ClusterIngressRule) Validate() *apis.FieldError
type ClusterIngressTLS ¶
type ClusterIngressTLS struct {
// Hosts are a list of hosts included in the TLS certificate. The values in
// this list must match the name/s used in the tlsSecret. Defaults to the
// wildcard host setting for the loadbalancer controller fulfilling this
// ClusterIngress, if left unspecified.
// +optional
Hosts []string `json:"hosts,omitempty"`
// SecretName is the name of the secret used to terminate SSL traffic.
SecretName string `json:"secretName,omitempty"`
// SecretNamespace is the namespace of the secret used to terminate SSL traffic.
SecretNamespace string `json:"secretNamespace,omitempty"`
// ServerCertificate identifies the certificate filename in the secret.
// Defaults to `tls.cert`.
// +optional
ServerCertificate string `json:"serverCertificate,omitempty"`
// PrivateKey identifies the private key filename in the secret.
// Defaults to `tls.key`.
// +optional
PrivateKey string `json:"privateKey,omitempty"`
}
ClusterIngressTLS describes the transport layer security associated with an ClusterIngress.
func (*ClusterIngressTLS) DeepCopy ¶
func (in *ClusterIngressTLS) DeepCopy() *ClusterIngressTLS
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterIngressTLS.
func (*ClusterIngressTLS) DeepCopyInto ¶
func (in *ClusterIngressTLS) DeepCopyInto(out *ClusterIngressTLS)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ClusterIngressTLS) SetDefaults ¶
func (t *ClusterIngressTLS) SetDefaults()
func (*ClusterIngressTLS) Validate ¶
func (t *ClusterIngressTLS) Validate() *apis.FieldError
type HTTPClusterIngressPath ¶
type HTTPClusterIngressPath struct {
// Path is an extended POSIX regex as defined by IEEE Std 1003.1,
// (i.e this follows the egrep/unix syntax, not the perl syntax)
// matched against the path of an incoming request. Currently it can
// contain characters disallowed from the conventional "path"
// part of a URL as defined by RFC 3986. Paths must begin with
// a '/'. If unspecified, the path defaults to a catch all sending
// traffic to the backend.
// +optional
Path string `json:"path,omitempty"`
// Splits defines the referenced service endpoints to which the traffic
// will be forwarded to.
Splits []ClusterIngressBackendSplit `json:"splits"`
// AppendHeaders allow specifying additional HTTP headers to add
// before forwarding a request to the destination service.
//
// NOTE: This differs from K8s Ingress which doesn't allow header appending.
// +optional
AppendHeaders map[string]string `json:"appendHeaders,omitempty"`
// Timeout for HTTP requests.
//
// NOTE: This differs from K8s Ingress which doesn't allow setting timeouts.
// +optional
Timeout *metav1.Duration `json:"timeout,omitempty"`
// Retry policy for HTTP requests.
//
// NOTE: This differs from K8s Ingress which doesn't allow retry settings.
// +optional
Retries *HTTPRetry `json:"retries,omitempty"`
}
HTTPClusterIngressPath associates a path regex with a backend. Incoming urls matching the path are forwarded to the backend.
func (*HTTPClusterIngressPath) DeepCopy ¶
func (in *HTTPClusterIngressPath) DeepCopy() *HTTPClusterIngressPath
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPClusterIngressPath.
func (*HTTPClusterIngressPath) DeepCopyInto ¶
func (in *HTTPClusterIngressPath) DeepCopyInto(out *HTTPClusterIngressPath)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HTTPClusterIngressPath) SetDefaults ¶
func (p *HTTPClusterIngressPath) SetDefaults()
func (HTTPClusterIngressPath) Validate ¶
func (h HTTPClusterIngressPath) Validate() *apis.FieldError
type HTTPClusterIngressRuleValue ¶
type HTTPClusterIngressRuleValue struct {
// A collection of paths that map requests to backends.
//
// If they are multiple matching paths, the first match takes precendent.
Paths []HTTPClusterIngressPath `json:"paths"`
}
HTTPClusterIngressRuleValue is a list of http selectors pointing to backends. In the example: http://<host>/<path>?<searchpart> -> backend where where parts of the url correspond to RFC 3986, this resource will be used to match against everything after the last '/' and before the first '?' or '#'.
func (*HTTPClusterIngressRuleValue) DeepCopy ¶
func (in *HTTPClusterIngressRuleValue) DeepCopy() *HTTPClusterIngressRuleValue
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPClusterIngressRuleValue.
func (*HTTPClusterIngressRuleValue) DeepCopyInto ¶
func (in *HTTPClusterIngressRuleValue) DeepCopyInto(out *HTTPClusterIngressRuleValue)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HTTPClusterIngressRuleValue) SetDefaults ¶
func (r *HTTPClusterIngressRuleValue) SetDefaults()
func (*HTTPClusterIngressRuleValue) Validate ¶
func (h *HTTPClusterIngressRuleValue) Validate() *apis.FieldError
type HTTPRetry ¶
type HTTPRetry struct {
// Number of retries for a given request.
Attempts int `json:"attempts"`
// Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE >=1ms.
PerTryTimeout *metav1.Duration `json:"perTryTimeout"`
}
HTTPRetry describes the retry policy to use when a HTTP request fails.
func (*HTTPRetry) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPRetry.
func (*HTTPRetry) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*HTTPRetry) Validate ¶
func (r *HTTPRetry) Validate() *apis.FieldError
type IngressSpec ¶
type IngressSpec struct {
// TODO: Generation does not work correctly with CRD. They are scrubbed
// by the APIserver (https://github.com/kubernetes/kubernetes/issues/58778)
// So, we add Generation here. Once that gets fixed, remove this and use
// ObjectMeta.Generation instead.
// +optional
Generation int64 `json:"generation,omitempty"`
// TLS configuration. Currently the ClusterIngress only supports a single TLS
// port, 443. If multiple members of this list specify different hosts, they
// will be multiplexed on the same port according to the hostname specified
// through the SNI TLS extension, if the ingress controller fulfilling the
// ingress supports SNI.
// +optional
TLS []ClusterIngressTLS `json:"tls,omitempty"`
// A list of host rules used to configure the ClusterIngress.
// +optional
Rules []ClusterIngressRule `json:"rules,omitempty"`
}
IngressSpec describes the ClusterIngress the user wishes to exist.
In general this follow the same shape as K8s Ingress. Some notable differences: - Backends now can have namespace: - Traffic can be split across multiple backends. - Timeout & Retry can be configured. - Headers can be appended.
func (*IngressSpec) DeepCopy ¶
func (in *IngressSpec) DeepCopy() *IngressSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressSpec.
func (*IngressSpec) DeepCopyInto ¶
func (in *IngressSpec) DeepCopyInto(out *IngressSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*IngressSpec) SetDefaults ¶
func (c *IngressSpec) SetDefaults()
func (*IngressSpec) Validate ¶
func (spec *IngressSpec) Validate() *apis.FieldError
type IngressStatus ¶
type IngressStatus struct {
// +optional
Conditions duckv1alpha1.Conditions `json:"conditions,omitempty"`
// LoadBalancer contains the current status of the load-balancer.
// +optional
LoadBalancer *LoadBalancerStatus `json:"loadBalancer,omitempty"`
}
IngressStatus describe the current state of the ClusterIngress.
func (*IngressStatus) DeepCopy ¶
func (in *IngressStatus) DeepCopy() *IngressStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressStatus.
func (*IngressStatus) DeepCopyInto ¶
func (in *IngressStatus) DeepCopyInto(out *IngressStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*IngressStatus) GetCondition ¶
func (cis *IngressStatus) GetCondition(t duckv1alpha1.ConditionType) *duckv1alpha1.Condition
func (*IngressStatus) GetConditions ¶
func (cis *IngressStatus) GetConditions() duckv1alpha1.Conditions
GetConditions returns the Conditions array. This enables generic handling of conditions by implementing the duckv1alpha1.Conditions interface.
func (*IngressStatus) InitializeConditions ¶
func (cis *IngressStatus) InitializeConditions()
func (*IngressStatus) IsReady ¶
func (cis *IngressStatus) IsReady() bool
IsReady looks at the conditions and if the Status has a condition ClusterIngressConditionReady returns true if ConditionStatus is True
func (*IngressStatus) MarkLoadBalancerReady ¶
func (cis *IngressStatus) MarkLoadBalancerReady(lbs []LoadBalancerIngressStatus)
MarkLoadBalancerReady marks the Ingress with ClusterIngressConditionLoadBalancerReady, and also populate the address of the load balancer.
func (*IngressStatus) MarkNetworkConfigured ¶
func (cis *IngressStatus) MarkNetworkConfigured()
func (*IngressStatus) SetConditions ¶
func (cis *IngressStatus) SetConditions(conditions duckv1alpha1.Conditions)
SetConditions sets the Conditions array. This enables generic handling of conditions by implementing the duckv1alpha1.Conditions interface.
type LoadBalancerIngressStatus ¶
type LoadBalancerIngressStatus struct {
// IP is set for load-balancer ingress points that are IP based
// (typically GCE or OpenStack load-balancers)
// +optional
IP string `json:"ip,omitempty"`
// Domain is set for load-balancer ingress points that are DNS based
// (typically AWS load-balancers)
// +optional
Domain string `json:"domain,omitempty"`
// DomainInternal is set if there is a cluster-local DNS name to access the Ingress.
//
// NOTE: This differs from K8s Ingress, since we also desire to have a cluster-local
// DNS name to allow routing in case of not having a mesh.
//
// +optional
DomainInternal string `json:"domainInternal,omitempty"`
}
LoadBalancerIngress represents the status of a load-balancer ingress point: traffic intended for the service should be sent to an ingress point.
func (*LoadBalancerIngressStatus) DeepCopy ¶
func (in *LoadBalancerIngressStatus) DeepCopy() *LoadBalancerIngressStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerIngressStatus.
func (*LoadBalancerIngressStatus) DeepCopyInto ¶
func (in *LoadBalancerIngressStatus) DeepCopyInto(out *LoadBalancerIngressStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LoadBalancerStatus ¶
type LoadBalancerStatus struct {
// Ingress is a list containing ingress points for the load-balancer.
// Traffic intended for the service should be sent to these ingress points.
// +optional
Ingress []LoadBalancerIngressStatus `json:"ingress,omitempty"`
}
LoadBalancerStatus represents the status of a load-balancer.
func (*LoadBalancerStatus) DeepCopy ¶
func (in *LoadBalancerStatus) DeepCopy() *LoadBalancerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerStatus.
func (*LoadBalancerStatus) DeepCopyInto ¶
func (in *LoadBalancerStatus) DeepCopyInto(out *LoadBalancerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.