Documentation
¶
Index ¶
- Constants
- Variables
- func ConvertIngressRules(ingressRules []extensions.IngressRule) map[string]*IngressRule
- func ConvertIngressTLS(ingressTLS []extensions.IngressTLS) map[string]*IngressTLS
- func SetDefaultAnnotation(annotation, value string)
- type ConfigMap
- type Configuration
- func (c *Configuration) Clean()
- func (c *Configuration) GetNamespace(name string) *Namespace
- func (c *Configuration) Init(osArgs utils.OSArgs, api *clientnative.HAProxyClient)
- func (c *Configuration) IsRelevantNamespace(namespace string) bool
- func (c *Configuration) NewNamespace(name string) *Namespace
- type EndpointIP
- type EndpointIPs
- type EndpointPort
- type EndpointPorts
- type Endpoints
- type HAProxyController
- func (c *HAProxyController) ActiveConfiguration() (*parser.Parser, error)
- func (c *HAProxyController) HAProxyInitialize()
- func (c *HAProxyController) HAProxyReload() error
- func (c *HAProxyController) RequestsHTTPRefresh() (needsReload bool, err error)
- func (c *HAProxyController) Start(ctx context.Context, osArgs utils.OSArgs)
- func (c *HAProxyController) SyncData(jobChan <-chan SyncDataEvent, chConfigMapReceivedAndProcessed chan bool)
- type Ingress
- type IngressPath
- type IngressRule
- type IngressTLS
- type K8s
- func (k *K8s) EventsConfigfMaps(channel chan *ConfigMap, stop chan struct{})
- func (k *K8s) EventsEndpoints(channel chan *Endpoints, stop chan struct{})
- func (k *K8s) EventsIngresses(channel chan *Ingress, stop chan struct{})
- func (k *K8s) EventsNamespaces(channel chan *Namespace, stop chan struct{})
- func (k *K8s) EventsSecrets(channel chan *Secret, stop chan struct{})
- func (k *K8s) EventsServices(channel chan *Service, stop chan struct{}, publishSvc *Service)
- func (k *K8s) GetPublishServiceAddresses(service *corev1.Service, publishSvc *Service)
- func (k *K8s) UpdateIngressStatus(ingress *Ingress, publishSvc *Service) (err error)
- type MapStringW
- func (a *MapStringW) Clean()
- func (a *MapStringW) Clone() MapStringW
- func (a *MapStringW) Equal(b MapStringW) bool
- func (a *MapStringW) Get(name string) (data *StringW, err error)
- func (a *MapStringW) SetStatus(old MapStringW) (different bool)
- func (a *MapStringW) SetStatusState(state Status)
- func (a *MapStringW) String() string
- type Mode
- type Namespace
- type NamespacesWatch
- type Secret
- type Service
- type ServicePort
- type Status
- type StringW
- type SyncDataEvent
- type SyncType
- type UseBackendRule
- type UseBackendRules
Constants ¶
const ( //nolint RATE_LIMIT = "rate-limit" //nolint HTTP_REDIRECT = "http-redirect" //nolint REQUEST_CAPTURE = "request-capture" )
const ( FrontendHTTP = "http" FrontendHTTPS = "https" FrontendSSL = "ssl" )
const DEBUG_API = false //nolint golint
Variables ¶
var ( HAProxyCFG string HAProxyCertDir string HAProxyStateDir string HAProxyCaptureDir string )
var ErrIgnored = errors.New("Ignored resource") //nolint golint
Functions ¶
func ConvertIngressRules ¶
func ConvertIngressRules(ingressRules []extensions.IngressRule) map[string]*IngressRule
ConvertIngressRules converts data from kubernetes format
func ConvertIngressTLS ¶
func ConvertIngressTLS(ingressTLS []extensions.IngressTLS) map[string]*IngressTLS
ConvertIngressRules converts data from kubernetes format
func SetDefaultAnnotation ¶
func SetDefaultAnnotation(annotation, value string)
Types ¶
type ConfigMap ¶
type ConfigMap struct {
Namespace string
Name string
Annotations MapStringW
Status Status
}
ConfigMap is usefull data from k8s structures about configmap
type Configuration ¶
type Configuration struct {
Namespace map[string]*Namespace
NamespacesAccess NamespacesWatch
ConfigMap *ConfigMap
ConfigMapTCPServices *ConfigMap
PublishService *Service
HTTPRequests map[string][]models.HTTPRequestRule
HTTPRequestsStatus Status
TCPRequests map[string][]models.TCPRequestRule
TCPRequestsStatus Status
BackendSwitchingRules map[string]UseBackendRules
BackendSwitchingStatus map[string]struct{}
RateLimitingEnabled bool
HTTPS bool
SSLRedirect bool
SSLPassthrough bool
}
func (*Configuration) Clean ¶
func (c *Configuration) Clean()
Clean cleans all the statuses of various data that was changed deletes them completely or just resets them if needed
func (*Configuration) GetNamespace ¶
func (c *Configuration) GetNamespace(name string) *Namespace
GetNamespace returns Namespace. Creates one if not existing
func (*Configuration) Init ¶
func (c *Configuration) Init(osArgs utils.OSArgs, api *clientnative.HAProxyClient)
Init itialize configuration
func (*Configuration) IsRelevantNamespace ¶
func (c *Configuration) IsRelevantNamespace(namespace string) bool
func (*Configuration) NewNamespace ¶
func (c *Configuration) NewNamespace(name string) *Namespace
NewNamespace returns new initialized Namespace
type EndpointIP ¶
func (*EndpointIP) Equal ¶
func (a *EndpointIP) Equal(b *EndpointIP) bool
type EndpointIPs ¶
type EndpointIPs map[string]*EndpointIP
func (*EndpointIPs) Equal ¶
func (a *EndpointIPs) Equal(b *EndpointIPs) bool
type EndpointPort ¶
func (*EndpointPort) Equal ¶
func (a *EndpointPort) Equal(b *EndpointPort) bool
type EndpointPorts ¶
type EndpointPorts []*EndpointPort
func (*EndpointPorts) Equal ¶
func (a *EndpointPorts) Equal(b *EndpointPorts) bool
type Endpoints ¶
type Endpoints struct {
Namespace string
Service StringW
BackendName string
Ports *EndpointPorts
Addresses *EndpointIPs
Status Status
}
Endpoints is usefull data from k8s structures about Endpoints
type HAProxyController ¶
type HAProxyController struct {
NativeAPI *clientnative.HAProxyClient
ActiveTransaction string
ActiveTransactionHasChanges bool
// contains filtered or unexported fields
}
HAProxyController is ingress controller
func (*HAProxyController) ActiveConfiguration ¶
func (c *HAProxyController) ActiveConfiguration() (*parser.Parser, error)
func (*HAProxyController) HAProxyInitialize ¶
func (c *HAProxyController) HAProxyInitialize()
HAProxyInitialize runs HAProxy for the first time so native client can have access to it
func (*HAProxyController) HAProxyReload ¶
func (c *HAProxyController) HAProxyReload() error
func (*HAProxyController) RequestsHTTPRefresh ¶
func (c *HAProxyController) RequestsHTTPRefresh() (needsReload bool, err error)
func (*HAProxyController) Start ¶
func (c *HAProxyController) Start(ctx context.Context, osArgs utils.OSArgs)
Start initialize and run HAProxyController
func (*HAProxyController) SyncData ¶
func (c *HAProxyController) SyncData(jobChan <-chan SyncDataEvent, chConfigMapReceivedAndProcessed chan bool)
SyncData gets all kubernetes changes, aggregates them and apply to HAProxy. All the changes must come through this function
type Ingress ¶
type Ingress struct {
Namespace string
Name string
Annotations MapStringW
Rules map[string]*IngressRule
DefaultBackend *IngressPath
TLS map[string]*IngressTLS
Status Status
}
Ingress is usefull data from k8s structures about ingress
type IngressPath ¶
type IngressPath struct {
ServiceName string
ServicePortInt int64
ServicePortString string
TargetPort int64
Path string
IsTCPService bool
IsSSLPassthrough bool
IsDefaultBackend bool
Status Status
}
IngressPath is usefull data from k8s structures about ingress path
func ConvertIngressBackend ¶
func ConvertIngressBackend(ingressBackend *extensions.IngressBackend) *IngressPath
func (*IngressPath) Equal ¶
func (a *IngressPath) Equal(b *IngressPath) bool
Equal checks if Ingress Paths are equal
type IngressRule ¶
type IngressRule struct {
Host string
Paths map[string]*IngressPath
Status Status
}
IngressRule is usefull data from k8s structures about ingress rule
func (*IngressRule) Equal ¶
func (a *IngressRule) Equal(b *IngressRule) bool
Equal checks if Ingress Rules are equal
type IngressTLS ¶
IngressTLS describes the transport layer security associated with an Ingress.
type K8s ¶
type K8s struct {
API *kubernetes.Clientset
}
K8s is structure with all data required to synchronize with k8s
func GetKubernetesClient ¶
GetKubernetesClient returns new client that communicates with k8s
func GetRemoteKubernetesClient ¶
GetRemoteKubernetesClient returns new client that communicates with k8s
func (*K8s) EventsConfigfMaps ¶
func (*K8s) EventsEndpoints ¶
func (*K8s) EventsIngresses ¶
func (*K8s) EventsNamespaces ¶
func (*K8s) EventsSecrets ¶
func (*K8s) EventsServices ¶
func (*K8s) GetPublishServiceAddresses ¶
type MapStringW ¶
MapStringW stores values and enables
func ConvertToMapStringW ¶
func ConvertToMapStringW(annotations map[string]string) MapStringW
ConvertToMapStringW removes prefixes in annotation
func (*MapStringW) Equal ¶
func (a *MapStringW) Equal(b MapStringW) bool
Equal comapres if two maps are equal
func (*MapStringW) Get ¶
func (a *MapStringW) Get(name string) (data *StringW, err error)
Get checks if name exists and if not, returns default value if defined
func (*MapStringW) SetStatus ¶
func (a *MapStringW) SetStatus(old MapStringW) (different bool)
SetStatus sets Status state for all items in map
func (*MapStringW) SetStatusState ¶
func (a *MapStringW) SetStatusState(state Status)
SetStatusState sets all watches to desired state
func (*MapStringW) String ¶
func (a *MapStringW) String() string
Get checks if name exists and if not, returns default value if defined
type Namespace ¶
type Namespace struct {
Name string
Relevant bool
Ingresses map[string]*Ingress
Endpoints map[string]*Endpoints
Services map[string]*Service
Secret map[string]*Secret
Status Status
// contains filtered or unexported fields
}
Namespace is usefull data from k8s structures about namespace
type NamespacesWatch ¶
type Service ¶
type Service struct {
Namespace string
Name string
Ports []ServicePort
Addresses []string //Used only for publish-service
Annotations MapStringW
Selector MapStringW
Status Status
}
Service is usefull data from k8s structures about service
type ServicePort ¶
ServicePort describes port of a service
func (*ServicePort) Equal ¶
func (a *ServicePort) Equal(b *ServicePort) bool
type StringW ¶
StringW string value that has modified flag
func GetValueFromAnnotations ¶
func GetValueFromAnnotations(annotationName string, annotations ...MapStringW) (data *StringW, err error)
GetValueFromAnnotations returns value by checking in multiple annotatins. moves through list until it finds value if value is new or deleted, we check for next state to correctly set watch & value
type SyncDataEvent ¶
type SyncDataEvent struct {
SyncType
Namespace string
Data interface{}
// contains filtered or unexported fields
}
SyncDataEvent represents converted k8s received message
type UseBackendRule ¶
type UseBackendRules ¶
type UseBackendRules map[string]UseBackendRule