dns

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2017 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCachedEndpointsAccessorAndStore added in v1.3.0

func NewCachedEndpointsAccessorAndStore() (client.EndpointsNamespacer, cache.Store)

func NewServerDefaults

func NewServerDefaults() (*server.Config, error)

NewServerDefaults returns the default SkyDNS server configuration for a DNS server.

Types

type FallbackFunc

type FallbackFunc func(name string, exact bool) (string, bool)

type Server added in v1.3.0

type Server struct {
	Config      *server.Config
	Services    ServiceAccessor
	Endpoints   client.EndpointsNamespacer
	MetricsName string

	Stop chan struct{}
}

func NewServer added in v1.3.0

func NewServer(config *server.Config, client *client.Client) *Server

NewServer creates a server from the provided config and client.

func (*Server) ListenAndServe added in v1.3.0

func (s *Server) ListenAndServe() error

ListenAndServe starts a DNS server that exposes services and values stored in etcd (if etcdclient is not nil). It will block until the server exits.

type ServiceAccessor

type ServiceAccessor interface {
	client.ServicesNamespacer
	ServiceByClusterIP(ip string) (*api.Service, error)
}

ServiceAccessor is the interface used by the ServiceResolver to access services.

func NewCachedServiceAccessor

func NewCachedServiceAccessor(client cache.Getter, stopCh <-chan struct{}) ServiceAccessor

NewCachedServiceAccessor returns a service accessor that can answer queries about services. It uses a backing cache to make ClusterIP lookups efficient.

func NewCachedServiceAccessorAndStore added in v1.3.0

func NewCachedServiceAccessorAndStore() (ServiceAccessor, cache.Store)

type ServiceResolver

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

ServiceResolver is a SkyDNS backend that will serve lookups for DNS entries based on Kubernetes service entries. The default DNS name for each service will be `<name>.<namespace>.<base>` where base can be an arbitrary depth DNS suffix. Queries not recognized within this base will return an error.

func NewServiceResolver

func NewServiceResolver(config *server.Config, accessor ServiceAccessor, endpoints kclient.EndpointsNamespacer, fn FallbackFunc) *ServiceResolver

NewServiceResolver creates an object that will return DNS record entries for SkyDNS based on service names.

func (*ServiceResolver) Records

func (b *ServiceResolver) Records(dnsName string, exact bool) ([]msg.Service, error)

Records implements the SkyDNS Backend interface and returns standard records for a name.

The standard pattern is <prefix>.<service_name>.<namespace>.(svc|endpoints|pod).<base>

* prefix may be any series of prefix values

  • _endpoints is a special prefix that returns the same as <service_name>.<namespace>.svc.<base>

* service_name and namespace must locate a real service

  • unless a fallback is defined, in which case the fallback name will be looked up

* svc indicates standard service rules apply (clusterIP or endpoints as A records)

  • reverse lookup of IP is only possible for clusterIP
  • SRV records are returned for each host+port combination as: _<port_name>._<port_protocol>.<dns> _<port_name>.<endpoint_id>.<dns>

* endpoints always returns each individual endpoint as A records

  • SRV records for endpoints are similar to SVC, but are prefixed with a single label that is a hash of the endpoint IP

* pods is of the form <IP_with_dashes>.<namespace>.pod.<base> and resolves to <IP>

func (*ServiceResolver) ReverseRecord

func (b *ServiceResolver) ReverseRecord(name string) (*msg.Service, error)

ReverseRecord implements the SkyDNS Backend interface and returns standard records for a name.

Jump to

Keyboard shortcuts

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