egressservices

package
v1.76.6 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2024 License: BSD-3-Clause Imports: 2 Imported by: 0

Documentation

Overview

Package egressservices contains shared types for exposing tailnet services to cluster workloads. These are split into a separate package for consumption of non-Kubernetes shared libraries and binaries. Be mindful of not increasing dependency size for those consumers when adding anything new here.

Index

Constants

View Source
const KeyEgressServices = "egress-services"

KeyEgressServices is name of the proxy state Secret field that contains the currently applied egress proxy config.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// TailnetTarget is the target to which cluster traffic for this service
	// should be proxied.
	TailnetTarget TailnetTarget `json:"tailnetTarget"`
	// Ports contains mappings for ports that can be accessed on the tailnet target.
	Ports PortMaps `json:"ports"`
}

Config is an egress service configuration. TODO(irbekrm): version this?

type Configs

type Configs map[string]Config

Configs contains the desired configuration for egress services keyed by service name.

type PortMap

type PortMap struct {
	Protocol   string `json:"protocol"`
	MatchPort  uint16 `json:"matchPort"`
	TargetPort uint16 `json:"targetPort"`
}

PorMap is a mapping between match port on which proxy receives cluster traffic and target port where traffic received on match port should be fowardded to.

type PortMaps

type PortMaps map[PortMap]struct{}

func (PortMaps) MarshalJSON

func (p PortMaps) MarshalJSON() ([]byte, error)

func (*PortMaps) UnmarshalJSON

func (p *PortMaps) UnmarshalJSON(data []byte) error

type ServiceStatus

type ServiceStatus struct {
	Ports PortMaps `json:"ports"`
	// TailnetTargetIPs are the tailnet target IPs that were used to
	// configure these firewall rules. For a TailnetTarget with IP set, this
	// is the same as IP.
	TailnetTargetIPs []netip.Addr  `json:"tailnetTargetIPs"`
	TailnetTarget    TailnetTarget `json:"tailnetTarget"`
}

ServiceStatus is the currently configured firewall rules for an egress service.

type Status

type Status struct {
	PodIPv4 string `json:"podIPv4"`
	// All egress service status keyed by service name.
	Services map[string]*ServiceStatus `json:"services"`
}

Status represents the currently configured firewall rules for all egress services for a proxy identified by the PodIP.

type TailnetTarget

type TailnetTarget struct {
	// IP is the tailnet IP of the target.
	IP string `json:"ip"`
	// FQDN is the full tailnet FQDN of the target.
	FQDN string `json:"fqdn"`
}

TailnetTarget is the tailnet target to which traffic for the egress service should be proxied. Exactly one of IP or FQDN should be set.

Jump to

Keyboard shortcuts

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