k8s

package
v0.0.0-...-1d39891 Latest Latest
Warning

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

Go to latest
Published: May 12, 2020 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Manager is the manager value for Kubernetes
	Manager = "k8s"
	// KubeKey is the metadata area for k8s specific fields
	KubeKey = "K8s"
	// ExtraKey is the metadata area for k8s extra fields
	ExtraKey = "K8s.Extra"
)

Variables

This section is empty.

Functions

func GetSubprobesMap

func GetSubprobesMap(manager string) map[string]Subprobe

GetSubprobesMap returns a map of all the subprobes that belong to manager probe

func InitLinkers

func InitLinkers(linkerHandlers []LinkHandler, g *graph.Graph) (linkers []probe.Handler)

InitLinkers initializes the listed linkers

func InitSubprobes

func InitSubprobes(enabled []string, subprobeHandlers map[string]SubprobeHandler, client interface{}, g *graph.Graph, manager string)

InitSubprobes initializes only the subprobes which are enabled

func ListSubprobes

func ListSubprobes(manager string, types ...string) (handlers []graph.ListenerHandler)

ListSubprobes returns the list of Subprobe as ListernerHandler

func MatchNamespace

func MatchNamespace(obj1, obj2 metav1.Object) bool

MatchNamespace true if namespaces are identical

func MetadataField

func MetadataField(field string) string

MetadataField is generates full path of a k8s specific field

func MetadataFields

func MetadataFields(fields ...string) []string

MetadataFields generates full path of a list of k8s specific fields

func NewABLinker

func NewABLinker(g *graph.Graph, aManager, aType, bManager, bType string, areLinked AreLinked, getMetadata ...GetMetadata) probe.Handler

NewABLinker create and initialize an ABLinker based linker

func NewConfig

func NewConfig(kubeconfigPath string) (*rest.Config, *clientcmd.ClientConfig, error)

NewConfig returns a new Kubernetes configuration object

func NewEdgeMetadata

func NewEdgeMetadata(manager, name string) graph.Metadata

NewEdgeMetadata creates a new edge metadata

func NewMetadata

func NewMetadata(manager, ty string, kubeMeta graph.Metadata, extra interface{}, name string) graph.Metadata

NewMetadata creates a k8s node base metadata struct

func NewMetadataFields

func NewMetadataFields(o metav1.Object) graph.Metadata

NewMetadataFields creates internal k8s node metadata struct

func PutSubprobe

func PutSubprobe(manager, name string, subprobe Subprobe)

PutSubprobe puts a new subprobe in the subprobes map

func SetState

func SetState(m *graph.Metadata, isUp bool)

SetState field of node metadata

Types

type ABLinker

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

ABLinker basis for a simple A to B linker

func (l *ABLinker) GetABLinks(aNode *graph.Node) (edges []*graph.Edge)

GetABLinks implementing graph.Linker

func (l *ABLinker) GetBALinks(bNode *graph.Node) (edges []*graph.Edge)

GetBALinks implementing graph.Linker

type AreLinked

type AreLinked func(a, b interface{}) bool

AreLinked return true if (a, b) should be linked

type GetMetadata

type GetMetadata func(a, b interface{}, typeA, typeB, manager string) graph.Metadata

GetMetadata returns the metadata of the edge

type KubeCache

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

KubeCache describes a generic cache for Kubernetes resources.

func NewKubeCache

func NewKubeCache(restClient rest.Interface, objType runtime.Object, resources string) *KubeCache

NewKubeCache returns a new cache using the associed Kubernetes client.

func RegisterKubeCache

func RegisterKubeCache(restClient rest.Interface, objType runtime.Object, resources string, handler k8sHandler) *KubeCache

RegisterKubeCache registers resource handler to kubernetes events.

func (*KubeCache) GetByNode

func (c *KubeCache) GetByNode(node *graph.Node) interface{}

GetByNode returns graph node according to name and namespace

func (*KubeCache) List

func (c *KubeCache) List() []interface{}

List returns a list of resources

func (*KubeCache) Start

func (c *KubeCache) Start()

Start begin waiting on Kubernetes events

func (*KubeCache) Stop

func (c *KubeCache) Stop()

Stop end waiting on Kubernetes events

type LinkHandler

type LinkHandler func(g *graph.Graph) probe.Handler

LinkHandler creates a linker

type Linker

type Linker struct {
	*graph.ResourceLinker
}

Linker defines a k8s linker

func (*Linker) OnError

func (l *Linker) OnError(err error)

OnError implements the LinkerEventListener interface

type PolicyPoint

type PolicyPoint string

PolicyPoint defines whether a policy applies to a of pods or if it restricts access from a set of pods

const (
	PolicyPointBegin PolicyPoint = "begin"
	PolicyPointEnd   PolicyPoint = "end"
)

PolicyPoint values

func (PolicyPoint) String

func (val PolicyPoint) String() string

String returns the string representation of a PolicyPoint

type PolicyTarget

type PolicyTarget string

PolicyTarget defines whether traffic is allowed or denied

const (
	PolicyTargetDeny  PolicyTarget = "deny"
	PolicyTargetAllow PolicyTarget = "allow"
)

Policy targets

func (PolicyTarget) String

func (val PolicyTarget) String() string

String returns the string representation of a policy target

type PolicyType

type PolicyType string

PolicyType defines the policy type (ingress or egress)

const (
	PolicyTypeIngress PolicyType = "ingress"
	PolicyTypeEgress  PolicyType = "egress"
)

Policy types

func (PolicyType) String

func (val PolicyType) String() string

String returns the string representation of a policy type

type Probe

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

Probe for tracking k8s events

func NewK8sProbe

func NewK8sProbe(g *graph.Graph) (*Probe, error)

NewK8sProbe returns a new Kubernetes probe

func NewProbe

func NewProbe(g *graph.Graph, manager string, subprobes map[string]Subprobe, linkers []probe.Handler, verifiers []probe.Handler) *Probe

NewProbe creates the probe for tracking k8s events

func (*Probe) AppendClusterLinkers

func (p *Probe) AppendClusterLinkers(types ...string)

AppendClusterLinkers appends newly created cluster linker per type

func (*Probe) AppendNamespaceLinkers

func (p *Probe) AppendNamespaceLinkers(types ...string)

AppendNamespaceLinkers appends newly created namespace linker per type

func (*Probe) Start

func (p *Probe) Start()

Start k8s probe

func (*Probe) Stop

func (p *Probe) Stop()

Stop k8s probe

type ResourceCache

type ResourceCache struct {
	*graph.EventHandler
	*KubeCache
	// contains filtered or unexported fields
}

ResourceCache describes a cache for a specific kind of Kubernetes resource. It is in charge of listening to Kubernetes events and creating the according resource in the graph with the informations returned by the associated resource handler

func NewResourceCache

func NewResourceCache(restClient rest.Interface, objType runtime.Object, resources string, g *graph.Graph, handler ResourceHandler) *ResourceCache

NewResourceCache returns a new cache using the associed Kubernetes client and with the handler for the resource that this cache manages.

func (*ResourceCache) OnAdd

func (c *ResourceCache) OnAdd(obj interface{})

OnAdd is called when a new Kubernetes resource has been created

func (*ResourceCache) OnDelete

func (c *ResourceCache) OnDelete(obj interface{})

OnDelete is called when a Kubernetes resource has been deleted

func (*ResourceCache) OnUpdate

func (c *ResourceCache) OnUpdate(oldObj, newObj interface{})

OnUpdate is called when a Kubernetes resource has been updated

type ResourceHandler

type ResourceHandler interface {
	Map(obj interface{}) (graph.Identifier, graph.Metadata)
	Dump(obj interface{}) string
}

ResourceHandler is used to map Kubernetes resources to objets in the graph

type Subprobe

type Subprobe interface {
	probe.Handler
	graph.ListenerHandler
}

Subprobe describes a probe for a specific Kubernetes resource It must implement the ListenerHandler interface so that you listen for creation/update/removal of a resource

func GetSubprobe

func GetSubprobe(manager, name string) Subprobe

GetSubprobe returns a specific subprobe

type SubprobeHandler

type SubprobeHandler func(client interface{}, g *graph.Graph) Subprobe

SubprobeHandler the signature of ctor of a subprobe

Jump to

Keyboard shortcuts

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