k8s

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2021 License: Apache-2.0 Imports: 40 Imported by: 2

Documentation

Overview

Package k8s is a generated GoMock package.

Package k8s implements the Kubernetes Controller interface to monitor and retrieve information regarding Kubernetes resources such as Namespaces, Services, Pods, Endpoints, and ServiceAccounts.

Index

Constants

View Source
const (
	// DefaultKubeEventResyncInterval is the default resync interval for k8s events
	DefaultKubeEventResyncInterval = 5 * time.Minute
)

Variables

This section is empty.

Functions

func DialerToPod

func DialerToPod(conf *rest.Config, clientSet kubernetes.Interface, podName string, namespace string) (httpstream.Dialer, error)

DialerToPod constructs a new httpstream.Dialer to connect to a pod for use with a PortForwarder

func GetAppProtocolFromPortName

func GetAppProtocolFromPortName(portName string) string

GetAppProtocolFromPortName returns the port's application protocol from its name, defaults to 'http' if not specified.

func GetHostnamesForService

func GetHostnamesForService(svc service.MeshService, localNamespace bool) []string

GetHostnamesForService returns the hostnames over which the service is accessible

func GetKubernetesEventHandlers

func GetKubernetesEventHandlers(shouldObserve observeFilter, eventTypes EventTypes) cache.ResourceEventHandlerFuncs

GetKubernetesEventHandlers creates Kubernetes events handlers.

func GetKubernetesServerVersionNumber

func GetKubernetesServerVersionNumber(kubeClient kubernetes.Interface) ([]int, error)

GetKubernetesServerVersionNumber returns the Kubernetes server version number in chunks, ex. v1.19.3 => [1, 19, 3]

func GetOSMControllerPods added in v0.11.0

func GetOSMControllerPods(clientSet kubernetes.Interface, ns string) *corev1.PodList

GetOSMControllerPods returns a list of osm-controller pods in the namespace

func GetOSMInjectorPods added in v0.11.0

func GetOSMInjectorPods(clientSet kubernetes.Interface, ns string) *corev1.PodList

GetOSMInjectorPods returns a list of osm-injector pods in the namespace

func GetServiceFromHostname

func GetServiceFromHostname(host string) string

GetServiceFromHostname returns the service name from its hostname

func NamespacedNameFrom

func NamespacedNameFrom(name string) (types.NamespacedName, error)

NamespacedNameFrom returns the namespaced name for the given name if possible, otherwise an error

func PatchSecretHandler

func PatchSecretHandler(kubeClient kubernetes.Interface) chan struct{}

PatchSecretHandler patches the envoy bootstrap config secrets based on the PodAdd events returns a stop channel which can be used to stop the inner handler

Types

type Controller

type Controller interface {
	// ListServices returns a list of all (monitored-namespace filtered) services in the mesh
	ListServices() []*corev1.Service

	// ListServiceAccounts returns a list of all (monitored-namespace filtered) service accounts in the mesh
	ListServiceAccounts() []*corev1.ServiceAccount

	// GetService returns a corev1 Service representation if the MeshService exists in cache, otherwise nil
	GetService(svc service.MeshService) *corev1.Service

	// IsMonitoredNamespace returns whether a namespace with the given name is being monitored
	// by the mesh
	IsMonitoredNamespace(string) bool

	// ListMonitoredNamespaces returns the namespaces monitored by the mesh
	ListMonitoredNamespaces() ([]string, error)

	// GetNamespace returns k8s namespace present in cache
	GetNamespace(ns string) *corev1.Namespace

	// ListPods returns a list of pods part of the mesh
	ListPods() []*corev1.Pod

	// ListServiceIdentitiesForService lists ServiceAccounts associated with the given service
	ListServiceIdentitiesForService(service.MeshService) ([]identity.K8sServiceAccount, error)

	// GetEndpoints returns the endpoints for a given service, if found
	GetEndpoints(service.MeshService) (*corev1.Endpoints, error)

	// IsMetricsEnabled returns true if the pod in the mesh is correctly annotated for prometheus scrapping
	IsMetricsEnabled(*corev1.Pod) bool

	// UpdateStatus updates the status subresource for the given resource and GroupVersionKind
	// The object within the 'interface{}' must be a pointer to the underlying resource
	UpdateStatus(interface{}) (metav1.Object, error)

	// K8sServiceToMeshServices translates a k8s service with one or more ports to one or more
	// MeshService objects per port.
	K8sServiceToMeshServices(corev1.Service) []service.MeshService
}

Controller is the controller interface for K8s services

func NewKubernetesController

func NewKubernetesController(kubeClient kubernetes.Interface, policyClient policyv1alpha1Client.Interface, meshName string, stop chan struct{}, selectInformers ...InformerKey) (Controller, error)

NewKubernetesController returns a new kubernetes.Controller which means to provide access to locally-cached k8s resources

type EventType

type EventType string

EventType is the type of event we have received from Kubernetes

const (
	// AddEvent is a type of a Kubernetes API event.
	AddEvent EventType = "ADD"

	// UpdateEvent is a type of a Kubernetes API event.
	UpdateEvent EventType = "UPDATE"

	// DeleteEvent is a type of a Kubernetes API event.
	DeleteEvent EventType = "DELETE"
)

func (EventType) String

func (et EventType) String() string

type EventTypes

type EventTypes struct {
	Add    announcements.Kind
	Update announcements.Kind
	Delete announcements.Kind
}

EventTypes is a struct helping pass the correct types to GetKubernetesEventHandlers

type FakeDiscoveryClient

type FakeDiscoveryClient struct {
	discovery.ServerResourcesInterface
	Resources map[string]metav1.APIResourceList
	Err       error
}

FakeDiscoveryClient is a fake client for k8s API discovery

func (*FakeDiscoveryClient) ServerResourcesForGroupVersion

func (f *FakeDiscoveryClient) ServerResourcesForGroupVersion(groupVersion string) (*metav1.APIResourceList, error)

ServerResourcesForGroupVersion returns the supported resources for a group and version.

type InformerKey

type InformerKey string

InformerKey stores the different Informers we keep for K8s resources

const (
	// Namespaces lookup identifier
	Namespaces InformerKey = "Namespaces"
	// Services lookup identifier
	Services InformerKey = "Services"
	// Pods lookup identifier
	Pods InformerKey = "Pods"
	// Endpoints lookup identifier
	Endpoints InformerKey = "Endpoints"
	// ServiceAccounts lookup identifier
	ServiceAccounts InformerKey = "ServiceAccounts"
)

type MockController

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

MockController is a mock of Controller interface

func NewMockController

func NewMockController(ctrl *gomock.Controller) *MockController

NewMockController creates a new mock instance

func (*MockController) EXPECT

EXPECT returns an object that allows the caller to indicate expected use

func (*MockController) GetEndpoints

func (m *MockController) GetEndpoints(arg0 service.MeshService) (*v1.Endpoints, error)

GetEndpoints mocks base method

func (*MockController) GetNamespace

func (m *MockController) GetNamespace(arg0 string) *v1.Namespace

GetNamespace mocks base method

func (*MockController) GetService

func (m *MockController) GetService(arg0 service.MeshService) *v1.Service

GetService mocks base method

func (*MockController) IsMetricsEnabled

func (m *MockController) IsMetricsEnabled(arg0 *v1.Pod) bool

IsMetricsEnabled mocks base method

func (*MockController) IsMonitoredNamespace

func (m *MockController) IsMonitoredNamespace(arg0 string) bool

IsMonitoredNamespace mocks base method

func (*MockController) K8sServiceToMeshServices added in v0.11.0

func (m *MockController) K8sServiceToMeshServices(arg0 v1.Service) []service.MeshService

K8sServiceToMeshServices mocks base method

func (*MockController) ListMonitoredNamespaces

func (m *MockController) ListMonitoredNamespaces() ([]string, error)

ListMonitoredNamespaces mocks base method

func (*MockController) ListPods

func (m *MockController) ListPods() []*v1.Pod

ListPods mocks base method

func (*MockController) ListServiceAccounts

func (m *MockController) ListServiceAccounts() []*v1.ServiceAccount

ListServiceAccounts mocks base method

func (*MockController) ListServiceIdentitiesForService

func (m *MockController) ListServiceIdentitiesForService(arg0 service.MeshService) ([]identity.K8sServiceAccount, error)

ListServiceIdentitiesForService mocks base method

func (*MockController) ListServices

func (m *MockController) ListServices() []*v1.Service

ListServices mocks base method

func (*MockController) UpdateStatus

func (m *MockController) UpdateStatus(arg0 interface{}) (v10.Object, error)

UpdateStatus mocks base method

type MockControllerMockRecorder

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

MockControllerMockRecorder is the mock recorder for MockController

func (*MockControllerMockRecorder) GetEndpoints

func (mr *MockControllerMockRecorder) GetEndpoints(arg0 interface{}) *gomock.Call

GetEndpoints indicates an expected call of GetEndpoints

func (*MockControllerMockRecorder) GetNamespace

func (mr *MockControllerMockRecorder) GetNamespace(arg0 interface{}) *gomock.Call

GetNamespace indicates an expected call of GetNamespace

func (*MockControllerMockRecorder) GetService

func (mr *MockControllerMockRecorder) GetService(arg0 interface{}) *gomock.Call

GetService indicates an expected call of GetService

func (*MockControllerMockRecorder) IsMetricsEnabled

func (mr *MockControllerMockRecorder) IsMetricsEnabled(arg0 interface{}) *gomock.Call

IsMetricsEnabled indicates an expected call of IsMetricsEnabled

func (*MockControllerMockRecorder) IsMonitoredNamespace

func (mr *MockControllerMockRecorder) IsMonitoredNamespace(arg0 interface{}) *gomock.Call

IsMonitoredNamespace indicates an expected call of IsMonitoredNamespace

func (*MockControllerMockRecorder) K8sServiceToMeshServices added in v0.11.0

func (mr *MockControllerMockRecorder) K8sServiceToMeshServices(arg0 interface{}) *gomock.Call

K8sServiceToMeshServices indicates an expected call of K8sServiceToMeshServices

func (*MockControllerMockRecorder) ListMonitoredNamespaces

func (mr *MockControllerMockRecorder) ListMonitoredNamespaces() *gomock.Call

ListMonitoredNamespaces indicates an expected call of ListMonitoredNamespaces

func (*MockControllerMockRecorder) ListPods

func (mr *MockControllerMockRecorder) ListPods() *gomock.Call

ListPods indicates an expected call of ListPods

func (*MockControllerMockRecorder) ListServiceAccounts

func (mr *MockControllerMockRecorder) ListServiceAccounts() *gomock.Call

ListServiceAccounts indicates an expected call of ListServiceAccounts

func (*MockControllerMockRecorder) ListServiceIdentitiesForService

func (mr *MockControllerMockRecorder) ListServiceIdentitiesForService(arg0 interface{}) *gomock.Call

ListServiceIdentitiesForService indicates an expected call of ListServiceIdentitiesForService

func (*MockControllerMockRecorder) ListServices

func (mr *MockControllerMockRecorder) ListServices() *gomock.Call

ListServices indicates an expected call of ListServices

func (*MockControllerMockRecorder) UpdateStatus

func (mr *MockControllerMockRecorder) UpdateStatus(arg0 interface{}) *gomock.Call

UpdateStatus indicates an expected call of UpdateStatus

type PortForwarder

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

PortForwarder is a type that implements port forwarding to a pod

func NewPortForwarder

func NewPortForwarder(dialer httpstream.Dialer, portSpec string) (*PortForwarder, error)

NewPortForwarder creates a new port forwarder to a pod

func (*PortForwarder) Done

func (pf *PortForwarder) Done() <-chan struct{}

Done returns a channel that is closed after Stop has been called.

func (*PortForwarder) Start

func (pf *PortForwarder) Start(readyFunc func(pf *PortForwarder) error) error

Start starts the port forwarding and calls the readyFunc callback function when port forwarding is ready

func (*PortForwarder) Stop

func (pf *PortForwarder) Stop()

Stop stops the port forwarding if not stopped already

Directories

Path Synopsis
Package events implements the eventing framework to receive and relay kubernetes events, and a framework to publish events to the Kubernetes API server.
Package events implements the eventing framework to receive and relay kubernetes events, and a framework to publish events to the Kubernetes API server.

Jump to

Keyboard shortcuts

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