source

package
v0.0.0-...-8007e43 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2024 License: Apache-2.0 Imports: 72 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ALBDualstackAnnotationKey is the annotation used for determining if an ALB ingress is dualstack
	ALBDualstackAnnotationKey = "alb.ingress.kubernetes.io/ip-address-type"
	// ALBDualstackAnnotationValue is the value of the ALB dualstack annotation that indicates it is dualstack
	ALBDualstackAnnotationValue = "dualstack"

	// Possible values for the ingress-hostname-source annotation
	IngressHostnameSourceAnnotationOnlyValue   = "annotation-only"
	IngressHostnameSourceDefinedHostsOnlyValue = "defined-hosts-only"

	IngressClassAnnotationKey = "kubernetes.io/ingress.class"
)
View Source
const (
	EndpointsTypeNodeExternalIP = "NodeExternalIP"
	EndpointsTypeHostIP         = "HostIP"
)
View Source
const (
	// The annotation used for determining if traffic will go through Cloudflare
	CloudflareProxiedKey = "external-dns.alpha.kubernetes.io/cloudflare-proxied"

	SetIdentifierKey = "external-dns.alpha.kubernetes.io/set-identifier"
)

Provider-specific annotations

View Source
const (

	// DefaultRoutegroupVersion is the default version for route groups.
	DefaultRoutegroupVersion = "zalando.org/v1"
)
View Source
const IstioGatewayIngressSource = "external-dns.alpha.kubernetes.io/ingress"

IstioGatewayIngressSource is the annotation used to determine if the gateway is implemented by an Ingress object instead of a standard LoadBalancer service type

View Source
const IstioMeshGateway = "mesh"

IstioMeshGateway is the built in gateway for all sidecars

Variables

View Source
var ErrSourceNotFound = errors.New("source not found")

ErrSourceNotFound is returned when a requested source doesn't exist.

Functions

func GetRestConfig

func GetRestConfig(kubeConfig, apiServerURL string) (*rest.Config, error)

GetRestConfig returns the rest clients config to get automatically data if you run inside a cluster or by passing flags.

func NewCFClient

func NewCFClient(cfAPIEndpoint string, cfUsername string, cfPassword string) (*cfclient.Client, error)

NewCFClient return a new CF client object.

func NewCRDClientForAPIVersionKind

func NewCRDClientForAPIVersionKind(client kubernetes.Interface, kubeConfig, apiServerURL, apiVersion, kind string) (*rest.RESTClient, *runtime.Scheme, error)

NewCRDClientForAPIVersionKind return rest client for the given apiVersion and kind of the CRD

func NewDynamicKubernetesClient

func NewDynamicKubernetesClient(kubeConfig, apiServerURL string, requestTimeout time.Duration) (dynamic.Interface, error)

NewDynamicKubernetesClient returns a new Dynamic Kubernetes client object. It takes a Config and uses APIServerURL and KubeConfig attributes to connect to the cluster. If KubeConfig isn't provided it defaults to using the recommended default.

func NewIstioClient

func NewIstioClient(kubeConfig string, apiServerURL string) (*istioclient.Clientset, error)

NewIstioClient returns a new Istio client object. It uses the configured KubeConfig attribute to connect to the cluster. If KubeConfig isn't provided it defaults to using the recommended default. NB: Istio controls the creation of the underlying Kubernetes client, so we have no ability to tack on transport wrappers (e.g., Prometheus request wrappers) to the client's config at this level. Furthermore, the Istio client constructor does not expose the ability to override the Kubernetes API server endpoint, so the apiServerURL config attribute has no effect.

func NewKubeClient

func NewKubeClient(kubeConfig, apiServerURL string, requestTimeout time.Duration) (*kubernetes.Clientset, error)

NewKubeClient returns a new Kubernetes client object. It takes a Config and uses APIServerURL and KubeConfig attributes to connect to the cluster. If KubeConfig isn't provided it defaults to using the recommended default.

func NewOpenShiftClient

func NewOpenShiftClient(kubeConfig, apiServerURL string, requestTimeout time.Duration) (*openshift.Clientset, error)

NewOpenShiftClient returns a new Openshift client object. It takes a Config and uses APIServerURL and KubeConfig attributes to connect to the cluster. If KubeConfig isn't provided it defaults to using the recommended default.

Types

type ClientGenerator

type ClientGenerator interface {
	KubeClient() (kubernetes.Interface, error)
	GatewayClient() (gateway.Interface, error)
	IstioClient() (istioclient.Interface, error)
	CloudFoundryClient(cfAPPEndpoint string, cfUsername string, cfPassword string) (*cfclient.Client, error)
	DynamicKubernetesClient() (dynamic.Interface, error)
	OpenShiftClient() (openshift.Interface, error)
}

ClientGenerator provides clients

type Config

type Config struct {
	Namespace                      string
	AnnotationFilter               string
	LabelFilter                    labels.Selector
	IngressClassNames              []string
	FQDNTemplate                   string
	CombineFQDNAndAnnotation       bool
	IgnoreHostnameAnnotation       bool
	IgnoreIngressTLSSpec           bool
	IgnoreIngressRulesSpec         bool
	GatewayNamespace               string
	GatewayLabelFilter             string
	Compatibility                  string
	PublishInternal                bool
	PublishHostIP                  bool
	AlwaysPublishNotReadyAddresses bool
	ConnectorServer                string
	CRDSourceAPIVersion            string
	CRDSourceKind                  string
	KubeConfig                     string
	APIServerURL                   string
	ServiceTypeFilter              []string
	CFAPIEndpoint                  string
	CFUsername                     string
	CFPassword                     string
	GlooNamespaces                 []string
	SkipperRouteGroupVersion       string
	RequestTimeout                 time.Duration
	DefaultTargets                 []string
	OCPRouterName                  string
	UpdateEvents                   bool
	ResolveLoadBalancerHostname    bool
	TraefikDisableLegacy           bool
	TraefikDisableNew              bool
}

Config holds shared configuration options for all Sources.

type IngressRoute

type IngressRoute struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ObjectMeta `json:"metadata"`

	Spec traefikIngressRouteSpec `json:"spec"`
}

IngressRoute is the CRD implementation of a Traefik HTTP Router.

func (*IngressRoute) DeepCopy

func (in *IngressRoute) DeepCopy() *IngressRoute

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRoute.

func (*IngressRoute) DeepCopyInto

func (in *IngressRoute) DeepCopyInto(out *IngressRoute)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRoute) DeepCopyObject

func (in *IngressRoute) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngressRouteList

type IngressRouteList struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ListMeta `json:"metadata"`

	// Items is the list of IngressRoute.
	Items []IngressRoute `json:"items"`
}

IngressRouteList is a collection of IngressRoute.

func (*IngressRouteList) DeepCopy

func (in *IngressRouteList) DeepCopy() *IngressRouteList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteList.

func (*IngressRouteList) DeepCopyInto

func (in *IngressRouteList) DeepCopyInto(out *IngressRouteList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRouteList) DeepCopyObject

func (in *IngressRouteList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngressRouteTCP

type IngressRouteTCP struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ObjectMeta `json:"metadata"`

	Spec traefikIngressRouteTCPSpec `json:"spec"`
}

IngressRouteTCP is the CRD implementation of a Traefik TCP Router.

func (*IngressRouteTCP) DeepCopy

func (in *IngressRouteTCP) DeepCopy() *IngressRouteTCP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteTCP.

func (*IngressRouteTCP) DeepCopyInto

func (in *IngressRouteTCP) DeepCopyInto(out *IngressRouteTCP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRouteTCP) DeepCopyObject

func (in *IngressRouteTCP) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngressRouteTCPList

type IngressRouteTCPList struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ListMeta `json:"metadata"`

	// Items is the list of IngressRouteTCP.
	Items []IngressRouteTCP `json:"items"`
}

IngressRouteTCPList is a collection of IngressRouteTCP.

func (*IngressRouteTCPList) DeepCopy

func (in *IngressRouteTCPList) DeepCopy() *IngressRouteTCPList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteTCPList.

func (*IngressRouteTCPList) DeepCopyInto

func (in *IngressRouteTCPList) DeepCopyInto(out *IngressRouteTCPList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRouteTCPList) DeepCopyObject

func (in *IngressRouteTCPList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngressRouteUDP

type IngressRouteUDP struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ObjectMeta `json:"metadata"`
}

IngressRouteUDP is a CRD implementation of a Traefik UDP Router.

func (*IngressRouteUDP) DeepCopy

func (in *IngressRouteUDP) DeepCopy() *IngressRouteUDP

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteUDP.

func (*IngressRouteUDP) DeepCopyInto

func (in *IngressRouteUDP) DeepCopyInto(out *IngressRouteUDP)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRouteUDP) DeepCopyObject

func (in *IngressRouteUDP) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type IngressRouteUDPList

type IngressRouteUDPList struct {
	metav1.TypeMeta `json:",inline"`
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ListMeta `json:"metadata"`

	// Items is the list of IngressRouteUDP.
	Items []IngressRouteUDP `json:"items"`
}

IngressRouteUDPList is a collection of IngressRouteUDP.

func (*IngressRouteUDPList) DeepCopy

func (in *IngressRouteUDPList) DeepCopy() *IngressRouteUDPList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressRouteUDPList.

func (*IngressRouteUDPList) DeepCopyInto

func (in *IngressRouteUDPList) DeepCopyInto(out *IngressRouteUDPList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*IngressRouteUDPList) DeepCopyObject

func (in *IngressRouteUDPList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SingletonClientGenerator

type SingletonClientGenerator struct {
	KubeConfig     string
	APIServerURL   string
	RequestTimeout time.Duration
	// contains filtered or unexported fields
}

SingletonClientGenerator stores provider clients and guarantees that only one instance of client will be generated

func (*SingletonClientGenerator) CloudFoundryClient

func (p *SingletonClientGenerator) CloudFoundryClient(cfAPIEndpoint string, cfUsername string, cfPassword string) (*cfclient.Client, error)

CloudFoundryClient generates a cf client if it was not created before

func (*SingletonClientGenerator) DynamicKubernetesClient

func (p *SingletonClientGenerator) DynamicKubernetesClient() (dynamic.Interface, error)

DynamicKubernetesClient generates a dynamic client if it was not created before

func (*SingletonClientGenerator) GatewayClient

func (p *SingletonClientGenerator) GatewayClient() (gateway.Interface, error)

GatewayClient generates a gateway client if it was not created before

func (*SingletonClientGenerator) IstioClient

IstioClient generates an istio go client if it was not created before

func (*SingletonClientGenerator) KubeClient

KubeClient generates a kube client if it was not created before

func (*SingletonClientGenerator) OpenShiftClient

func (p *SingletonClientGenerator) OpenShiftClient() (openshift.Interface, error)

OpenShiftClient generates an openshift client if it was not created before

type Source

type Source interface {
	Endpoints(ctx context.Context) ([]*endpoint.Endpoint, error)
	// AddEventHandler adds an event handler that should be triggered if something in source changes
	AddEventHandler(context.Context, func())
}

Source defines the interface Endpoint sources should implement.

func BuildWithConfig

func BuildWithConfig(ctx context.Context, source string, p ClientGenerator, cfg *Config) (Source, error)

BuildWithConfig allows to generate a Source implementation from the shared config

func ByNames

func ByNames(ctx context.Context, p ClientGenerator, names []string, cfg *Config) ([]Source, error)

ByNames returns multiple Sources given multiple names.

func NewAmbassadorHostSource

func NewAmbassadorHostSource(
	ctx context.Context,
	dynamicKubeClient dynamic.Interface,
	kubeClient kubernetes.Interface,
	namespace string,
	annotationFilter string,
	labelSelector labels.Selector,
) (Source, error)

NewAmbassadorHostSource creates a new ambassadorHostSource with the given config.

func NewCRDSource

func NewCRDSource(crdClient rest.Interface, namespace, kind string, annotationFilter string, labelSelector labels.Selector, scheme *runtime.Scheme, startInformer bool) (Source, error)

NewCRDSource creates a new crdSource with the given config.

func NewCloudFoundrySource

func NewCloudFoundrySource(cfClient *cfclient.Client) (Source, error)

NewCloudFoundrySource creates a new cloudfoundrySource with the given config

func NewConnectorSource

func NewConnectorSource(remoteServer string) (Source, error)

NewConnectorSource creates a new connectorSource with the given config.

func NewContourHTTPProxySource

func NewContourHTTPProxySource(
	ctx context.Context,
	dynamicKubeClient dynamic.Interface,
	namespace string,
	annotationFilter string,
	fqdnTemplate string,
	combineFqdnAnnotation bool,
	ignoreHostnameAnnotation bool,
) (Source, error)

NewContourHTTPProxySource creates a new contourHTTPProxySource with the given config.

func NewDedupSource

func NewDedupSource(source Source) Source

NewDedupSource creates a new dedupSource wrapping the provided Source.

func NewEmptySource

func NewEmptySource() Source

NewEmptySource creates a new emptySource.

func NewF5VirtualServerSource

func NewF5VirtualServerSource(
	ctx context.Context,
	dynamicKubeClient dynamic.Interface,
	kubeClient kubernetes.Interface,
	namespace string,
	annotationFilter string,
) (Source, error)

func NewFakeSource

func NewFakeSource(fqdnTemplate string) (Source, error)

NewFakeSource creates a new fakeSource with the given config.

func NewGatewayGRPCRouteSource

func NewGatewayGRPCRouteSource(clients ClientGenerator, config *Config) (Source, error)

NewGatewayGRPCRouteSource creates a new Gateway GRPCRoute source with the given config.

func NewGatewayHTTPRouteSource

func NewGatewayHTTPRouteSource(clients ClientGenerator, config *Config) (Source, error)

NewGatewayHTTPRouteSource creates a new Gateway HTTPRoute source with the given config.

func NewGatewayTCPRouteSource

func NewGatewayTCPRouteSource(clients ClientGenerator, config *Config) (Source, error)

NewGatewayTCPRouteSource creates a new Gateway TCPRoute source with the given config.

func NewGatewayTLSRouteSource

func NewGatewayTLSRouteSource(clients ClientGenerator, config *Config) (Source, error)

NewGatewayTLSRouteSource creates a new Gateway TLSRoute source with the given config.

func NewGatewayUDPRouteSource

func NewGatewayUDPRouteSource(clients ClientGenerator, config *Config) (Source, error)

NewGatewayUDPRouteSource creates a new Gateway UDPRoute source with the given config.

func NewGlooSource

func NewGlooSource(dynamicKubeClient dynamic.Interface, kubeClient kubernetes.Interface,
	glooNamespaces []string) (Source, error)

NewGlooSource creates a new glooSource with the given config

func NewIngressSource

func NewIngressSource(ctx context.Context, kubeClient kubernetes.Interface, namespace, annotationFilter string, fqdnTemplate string, combineFqdnAnnotation bool, ignoreHostnameAnnotation bool, ignoreIngressTLSSpec bool, ignoreIngressRulesSpec bool, labelSelector labels.Selector, ingressClassNames []string) (Source, error)

NewIngressSource creates a new ingressSource with the given config.

func NewIstioGatewaySource

func NewIstioGatewaySource(
	ctx context.Context,
	kubeClient kubernetes.Interface,
	istioClient istioclient.Interface,
	namespace string,
	annotationFilter string,
	fqdnTemplate string,
	combineFQDNAnnotation bool,
	ignoreHostnameAnnotation bool,
) (Source, error)

NewIstioGatewaySource creates a new gatewaySource with the given config.

func NewIstioVirtualServiceSource

func NewIstioVirtualServiceSource(
	ctx context.Context,
	kubeClient kubernetes.Interface,
	istioClient istioclient.Interface,
	namespace string,
	annotationFilter string,
	fqdnTemplate string,
	combineFQDNAnnotation bool,
	ignoreHostnameAnnotation bool,
) (Source, error)

NewIstioVirtualServiceSource creates a new virtualServiceSource with the given config.

func NewKongTCPIngressSource

func NewKongTCPIngressSource(ctx context.Context, dynamicKubeClient dynamic.Interface, kubeClient kubernetes.Interface, namespace string, annotationFilter string, ignoreHostnameAnnotation bool) (Source, error)

NewKongTCPIngressSource creates a new kongTCPIngressSource with the given config.

func NewMultiSource

func NewMultiSource(children []Source, defaultTargets []string) Source

NewMultiSource creates a new multiSource.

func NewNAT64Source

func NewNAT64Source(source Source, nat64Prefixes []string) Source

NewNAT64Source creates a new nat64Source wrapping the provided Source.

func NewNodeSource

func NewNodeSource(ctx context.Context, kubeClient kubernetes.Interface, annotationFilter, fqdnTemplate string, labelSelector labels.Selector) (Source, error)

NewNodeSource creates a new nodeSource with the given config.

func NewOcpRouteSource

func NewOcpRouteSource(
	ctx context.Context,
	ocpClient versioned.Interface,
	namespace string,
	annotationFilter string,
	fqdnTemplate string,
	combineFQDNAnnotation bool,
	ignoreHostnameAnnotation bool,
	labelSelector labels.Selector,
	ocpRouterName string,
) (Source, error)

NewOcpRouteSource creates a new ocpRouteSource with the given config.

func NewPodSource

func NewPodSource(ctx context.Context, kubeClient kubernetes.Interface, namespace string, compatibility string) (Source, error)

NewPodSource creates a new podSource with the given config.

func NewRouteGroupSource

func NewRouteGroupSource(timeout time.Duration, token, tokenPath, apiServerURL, namespace, annotationFilter, fqdnTemplate, routegroupVersion string, combineFqdnAnnotation, ignoreHostnameAnnotation bool) (Source, error)

NewRouteGroupSource creates a new routeGroupSource with the given config.

func NewServiceSource

func NewServiceSource(ctx context.Context, kubeClient kubernetes.Interface, namespace, annotationFilter string, fqdnTemplate string, combineFqdnAnnotation bool, compatibility string, publishInternal bool, publishHostIP bool, alwaysPublishNotReadyAddresses bool, serviceTypeFilter []string, ignoreHostnameAnnotation bool, labelSelector labels.Selector, resolveLoadBalancerHostname bool) (Source, error)

NewServiceSource creates a new serviceSource with the given config.

func NewTargetFilterSource

func NewTargetFilterSource(source Source, targetFilter endpoint.TargetFilterInterface) Source

NewTargetFilterSource creates a new targetFilterSource wrapping the provided Source.

func NewTraefikSource

func NewTraefikSource(ctx context.Context, dynamicKubeClient dynamic.Interface, kubeClient kubernetes.Interface, namespace string, annotationFilter string, ignoreHostnameAnnotation bool, disableLegacy bool, disableNew bool) (Source, error)

type TCPIngress

type TCPIngress struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   tcpIngressSpec   `json:"spec,omitempty"`
	Status tcpIngressStatus `json:"status,omitempty"`
}

Kong types based on https://github.com/Kong/kubernetes-ingress-controller/blob/v1.2.0/pkg/apis/configuration/v1beta1/types.go to facilitate testing When trying to import them from the Kong repo as a dependency it required upgrading the k8s.io/client-go and k8s.io/apimachinery which seemed cause several changes in how the mock clients were working that resulted in a bunch of failures in other tests If that is dealt with at some point the below can be removed and replaced with an actual import

func (*TCPIngress) DeepCopy

func (in *TCPIngress) DeepCopy() *TCPIngress

func (*TCPIngress) DeepCopyInto

func (in *TCPIngress) DeepCopyInto(out *TCPIngress)

func (*TCPIngress) DeepCopyObject

func (in *TCPIngress) DeepCopyObject() runtime.Object

type TCPIngressList

type TCPIngressList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []TCPIngress `json:"items"`
}

func (*TCPIngressList) DeepCopy

func (in *TCPIngressList) DeepCopy() *TCPIngressList

func (*TCPIngressList) DeepCopyInto

func (in *TCPIngressList) DeepCopyInto(out *TCPIngressList)

func (*TCPIngressList) DeepCopyObject

func (in *TCPIngressList) DeepCopyObject() runtime.Object

type UnstructuredConverter

type UnstructuredConverter struct {
	// contains filtered or unexported fields
}

UnstructuredConverter handles conversions between unstructured.Unstructured and Contour types

func NewUnstructuredConverter

func NewUnstructuredConverter() (*UnstructuredConverter, error)

NewUnstructuredConverter returns a new UnstructuredConverter initialized

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL