package
0.60.0
Repository: https://github.com/epic-gateway/resource-model.git
Documentation: pkg.go.dev

# README

Data Model

Server

classDiagram
   direction LR

   class EnvoyConfig{
      <<Marin3r>>
   }
   class Deployment{
      <<k8s>>
   }
   class Pod{
      <<k8s>>
   }
   class EnvoyDeployment{
      <<Marin3r>>
   }
   class ServicePrefix{
      <<EPIC>>
   }
   class LBServiceGroup{
      <<EPIC>>
   }
   class GWProxy{
      <<EPIC>>
   }
   class GWRoute{
      <<EPIC>>
   }
   class GWEndpointSlice{
      <<EPIC>>
   }

   GWRoute --> GWProxy
   GWProxy --> EnvoyDeployment
   GWProxy --> LBServiceGroup
   LBServiceGroup --> ServicePrefix
   GWProxy --> EnvoyConfig
   Deployment <-- EnvoyDeployment
   Pod "1..*" --> Deployment

   class GatewayClassConfig{
      <<client PureGW>>
   }
   class GatewayClass{
      <<client gatewayAPI>>
   }
   class Gateway{
      <<client gatewayAPI>>
   }
   class HTTPRoute{
      <<client gatewayAPI>>
   }
   class Service{
      <<client k8s>>
   }
   class EndpointSlice{
      <<client k8s>>
   }

   GatewayClass --> GatewayClassConfig
   Gateway --> GatewayClass
   Gateway ..> GWProxy
   HTTPRoute "0..*" --> Gateway
   HTTPRoute --> "0..*" Service
   HTTPRoute ..> GWRoute
   EndpointSlice "1..*" --> Service
   EndpointSlice ..> GWEndpointSlice

# Functions

AccountNamespace returns the namespace for the provided account name.
AllocateTunnelID allocates a tunnel ID from the EPIC singleton.
GWProxyName returns the name that we use in the GWProxy custom resource.
HasEnvoyLabels indicates whether a Pod has the LabelsForEnvoy, i.e., whether the Pod is an Envoy proxy pod.
LabelsForEnvoy returns the labels that we apply to a new Envoy proxy deployment.
LabelsForProxy returns the labels that we apply to a new Envoy proxy deployment.
LoadBalancerName returns the name that we use in the LoadBalancer custom resource.
NewEndpoint initialization method to be used to create an endpoint.
NewEndpointWithTTL initialization method to be used to create an endpoint with a TTL struct.
NewLabels returns empty Labels.
NewLabelsFromString constructs endpoints labels from a provided format string if heritage set to another value is found then error is returned no heritage automatically assumes is not owned by external-dns and returns invalidHeritage error.
NewTargets is a convenience method to create a new Targets object from a vararg of strings.
RemoteEndpointName makes a name for this rep that will be unique within this customer's namespace.
RemovePodInfo removes podName's info from name's ProxyInterfaces map.
RemoveProxyInfo removes podName's info from lbName's ProxyInterfaces map.

# Constants

No description provided by the author
AWSSDDescriptionLabel label responsible for storing raw owner/resource combination information in the Labels supposed to be inserted by AWS SD Provider, and parsed into OwnerLabelKey and ResourceLabelKey key by AWS SD Registry.
ConfigName is the name of the EPIC configuration singleton.
ConfigNamespace is the namespace where we store the system configuration objects like the EPIC singleton and the service prefixes.
DiscoveryServiceName is the name of the Marin3r DiscoveryService CR that we create in each customer namespace to tell Marin3r to launch its discoveryservice in that namespace.
DualstackLabelKey is the name of the label that identifies dualstack endpoints.
EDSServerName is the name of our dynamic endpoint discovery service.
No description provided by the author
GroupName is used in our API and as a prefix for annotation and label keys.
IfIndexAnnotation is the key for the Pod annotation that contains that Pod's proxy network interface index.
IfNameAnnotation is the key for the Pod annotation that contains that Pod's proxy network interface name.
MetricsNamespace is the namespace used with Prometheus.
OwnerLabelKey is the name of the label that defines the owner of an Endpoint.
OwningAccountLabel is the name of the label that we apply to service groups and load balancers to indicate in a query-friendly way to which Account they belong.
OwningClusterLabel is the name of the label that we apply to endpoints to indicate in a query-friendly way to which Cluster they belong.
OwningLBServiceGroupLabel is the name of the label that we apply to endpoints to indicate in a query-friendly way to which LBServiceGroup they belong.
OwningLoadBalancerLabel is the name of the label that we apply to endpoints to indicate in a query-friendly way to which LoadBalancer they belong.
OwningProxyLabel is the name of the label that we apply to endpoints to indicate in a query-friendly way to which Proxy they belong.
OwningServicePrefixLabel is the name of the label that we apply to endpoints to indicate in a query-friendly way to which ServicePrefix they belong.
ProductName is the name of our product.
RecordTypeA is a RecordType enum value.
RecordTypeCNAME is a RecordType enum value.
RecordTypeNS is a RecordType enum value.
RecordTypeSRV is a RecordType enum value.
RecordTypeTXT is a RecordType enum value.
ResourceLabelKey is the name of the label that identifies k8s resource which wants to acquire the DNS name.
UserNamespacePrefix is the prefix used by all namespaces that are EPIC User Namespaces.

# Variables

AddToScheme adds the types in this group-version to the given scheme.
ErrInvalidHeritage is returned when heritage was not found, or different heritage is found.
GroupVersion is group version used to register these objects.
SchemeBuilder is used to add go types to the GroupVersionKind scheme.
UserNSLabels is the set of labels that indicate that a k8s namespace is an EPIC User Namespace.

# Structs

Account represents a business relationship between Acnodal and a third party.
AccountList contains a list of Account.
AccountSpec defines the desired state of Account.
AccountStatus defines the observed state of Account.
AddressPool specifies a pool of IP addresses.
ClientRef provides the info needed to refer to a specific object in a specific cluster.
Endpoint is a high-level way of a connection between a service and an IP.
EPIC is the Schema for the epics API.
EPICEndpointMap contains a map of the EPIC endpoints that connect to one PureLB endpoint, keyed by Node IP address.
EPICList contains a list of EPIC.
EPICSpec defines the desired state of EPIC.
EPICStatus defines the observed state of EPIC.
GUETunnelEndpoint is an Endpoint on the EPIC.
GWEndpointSlice corresponds to an EndpointSlice object in a client cluster.
GWEndpointSliceList contains a list of GWEndpointSlice.
GWEndpointSliceSpec is a container for the EndpointSlice object in the client cluster.
GWEndpointSliceStatus defines the observed state of GWEndpointSlice.
GWProxy is the Schema for the gwproxies API.
GWProxyList contains a list of GWProxy.
GWProxySpec defines the desired state of GWProxy.
GWProxyStatus defines the observed state of GWProxy.
GWRoute is the Schema for the gwroutes API.
GWRouteList contains a list of GWRoute.
GWRouteSpec is our wrapper for the various types of Gateway RouteSpecs.
GWRouteStatus defines the observed state of GWRoute.
LBServiceGroup is the Schema for the lbservicegroups API.
LBServiceGroupList contains a list of LBServiceGroup.
LBServiceGroupSpec defines the desired state of LBServiceGroup.
LBServiceGroupStatus defines the observed state of LBServiceGroup.
LoadBalancer is the Schema for the loadbalancers API.
LoadBalancerList contains a list of LoadBalancer.
LoadBalancerSpec defines the desired state of LoadBalancer.
LoadBalancerStatus defines the observed state of LoadBalancer.
Node is the config for one node.
ProviderSpecificProperty holds the name and value of a configuration which is specific to individual DNS providers.
ProxyInterfaceInfo contains information about the Envoy proxy pod's network interfaces.
RemoteEndpoint represents a service endpoint on a remote customer cluster.
RemoteEndpointList contains a list of RemoteEndpoint.
RemoteEndpointSpec defines the desired state of RemoteEndpoint.
RemoteEndpointStatus defines the observed state of RemoteEndpoint.
ServicePrefix represents a pool of IP addresses.
ServicePrefixList contains a list of ServicePrefix.
ServicePrefixSpec defines the desired state of ServicePrefix.
ServicePrefixStatus defines the observed state of ServicePrefix.

# Interfaces

PoolAllocator allocates addresses.

# Type aliases

Labels store metadata related to the endpoint it is then stored in a persistent storage via serialization.
ProviderSpecific holds configuration which is specific to individual DNS providers.
Targets is a representation of a list of targets for an endpoint.
TTL is a structure defining the TTL of a DNS record.