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
- func DialerToPod(conf *rest.Config, clientSet kubernetes.Interface, podName string, ...) (httpstream.Dialer, error)
- func GetEventHandlerFuncs(shouldObserve observeFilter, eventTypes EventTypes, ...) cache.ResourceEventHandlerFuncs
- func GetHostnamesForService(svc service.MeshService, localNamespace bool) []string
- func GetKubernetesServerVersionNumber(kubeClient kubernetes.Interface) ([]int, error)
- func GetOSMControllerPods(clientSet kubernetes.Interface, ns string) *corev1.PodList
- func GetOSMInjectorPods(clientSet kubernetes.Interface, ns string) *corev1.PodList
- func GetServiceFromHostname(c Controller, host string) string
- func GetSubdomainFromHostname(c Controller, host string) string
- func GetTargetPortFromEndpoints(endpointName string, endpoints corev1.Endpoints) (endpointPort uint16)
- func IsHeadlessService(svc corev1.Service) bool
- func IsMetricsEnabled(pod *corev1.Pod) bool
- func NamespacedNameFrom(name string) (types.NamespacedName, error)
- func ServiceToMeshServices(c Controller, svc corev1.Service) []service.MeshService
- func WatchAndUpdateLogLevel(msgBroker *messaging.Broker, stop <-chan struct{})
- func WatchAndUpdateProxyBootstrapSecret(kubeClient kubernetes.Interface, msgBroker *messaging.Broker, ...)
- type Controller
- type EventType
- type EventTypes
- type InformerKey
- type MockController
- func (m *MockController) EXPECT() *MockControllerMockRecorder
- func (m *MockController) GetEndpoints(arg0 service.MeshService) (*v1.Endpoints, error)
- func (m *MockController) GetNamespace(arg0 string) *v1.Namespace
- func (m *MockController) GetPodForProxy(arg0 *envoy.Proxy) (*v1.Pod, error)
- func (m *MockController) GetService(arg0 service.MeshService) *v1.Service
- func (m *MockController) GetTargetPortForServicePort(arg0 types.NamespacedName, arg1 uint16) (uint16, error)
- func (m *MockController) IsMonitoredNamespace(arg0 string) bool
- func (m *MockController) ListMonitoredNamespaces() ([]string, error)
- func (m *MockController) ListPods() []*v1.Pod
- func (m *MockController) ListServiceAccounts() []*v1.ServiceAccount
- func (m *MockController) ListServiceIdentitiesForService(arg0 service.MeshService) ([]identity.K8sServiceAccount, error)
- func (m *MockController) ListServices() []*v1.Service
- func (m *MockController) UpdateStatus(arg0 interface{}) (v10.Object, error)
- type MockControllerMockRecorder
- func (mr *MockControllerMockRecorder) GetEndpoints(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) GetNamespace(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) GetPodForProxy(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) GetService(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) GetTargetPortForServicePort(arg0, arg1 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) IsMonitoredNamespace(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) ListMonitoredNamespaces() *gomock.Call
- func (mr *MockControllerMockRecorder) ListPods() *gomock.Call
- func (mr *MockControllerMockRecorder) ListServiceAccounts() *gomock.Call
- func (mr *MockControllerMockRecorder) ListServiceIdentitiesForService(arg0 interface{}) *gomock.Call
- func (mr *MockControllerMockRecorder) ListServices() *gomock.Call
- func (mr *MockControllerMockRecorder) UpdateStatus(arg0 interface{}) *gomock.Call
- type PortForwarder
Constants ¶
const ( // DefaultKubeEventResyncInterval is the default resync interval for k8s events // This is set to 0 because we do not need resyncs from k8s client, and have our // own Ticker to turn on periodic resyncs. DefaultKubeEventResyncInterval = 0 * time.Second )
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 GetEventHandlerFuncs ¶ added in v0.11.1
func GetEventHandlerFuncs(shouldObserve observeFilter, eventTypes EventTypes, msgBroker *messaging.Broker) cache.ResourceEventHandlerFuncs
GetEventHandlerFuncs returns the ResourceEventHandlerFuncs object used to receive events when a k8s object is added/updated/deleted.
func GetHostnamesForService ¶
func GetHostnamesForService(svc service.MeshService, localNamespace bool) []string
GetHostnamesForService returns the hostnames over which the service is accessible
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(c Controller, host string) string
GetServiceFromHostname returns the service name from its hostname This assumes the default k8s trustDomain: cluster.local
func GetSubdomainFromHostname ¶ added in v1.2.0
func GetSubdomainFromHostname(c Controller, host string) string
GetSubdomainFromHostname returns the service subdomain from its hostname This assumes the default k8s trustDomain: cluster.local
func GetTargetPortFromEndpoints ¶ added in v1.2.0
func GetTargetPortFromEndpoints(endpointName string, endpoints corev1.Endpoints) (endpointPort uint16)
GetTargetPortFromEndpoints returns the endpoint port corresponding to the given endpoint name and endpoints
func IsHeadlessService ¶ added in v1.2.0
IsHeadlessService determines whether or not a corev1.Service is a headless service
func IsMetricsEnabled ¶ added in v1.0.0
IsMetricsEnabled returns true if the pod in the mesh is correctly annotated for prometheus scrapping
func NamespacedNameFrom ¶
func NamespacedNameFrom(name string) (types.NamespacedName, error)
NamespacedNameFrom returns the namespaced name for the given name if possible, otherwise an error
func ServiceToMeshServices ¶ added in v1.0.0
func ServiceToMeshServices(c Controller, svc corev1.Service) []service.MeshService
ServiceToMeshServices translates a k8s service with one or more ports to one or more MeshService objects per port.
func WatchAndUpdateLogLevel ¶ added in v0.11.1
WatchAndUpdateLogLevel watches for log level changes and updates the global log level
func WatchAndUpdateProxyBootstrapSecret ¶ added in v0.11.1
func WatchAndUpdateProxyBootstrapSecret(kubeClient kubernetes.Interface, msgBroker *messaging.Broker, stop <-chan struct{})
WatchAndUpdateProxyBootstrapSecret watches for new pods being added to the mesh and updates their corresponding proxy bootstrap config Secret's OwnerReferences to point to the associated pod.
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(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(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) // 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) // GetPodForProxy returns the pod for the given proxy GetPodForProxy(*envoy.Proxy) (*v1.Pod, error) GetTargetPortForServicePort(types.NamespacedName, uint16) (uint16, error) }
Controller is the controller interface for K8s services
func NewKubernetesController ¶
func NewKubernetesController(informerCollection *osminformers.InformerCollection, policyClient policyv1alpha1Client.Interface, msgBroker *messaging.Broker, selectInformers ...InformerKey) Controller
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
type EventTypes ¶
type EventTypes struct { Add announcements.Kind Update announcements.Kind Delete announcements.Kind }
EventTypes is a struct helping pass the correct types to GetEventHandlerFuncs()
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 ¶
func (m *MockController) EXPECT() *MockControllerMockRecorder
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) GetPodForProxy ¶ added in v1.2.0
GetPodForProxy mocks base method.
func (*MockController) GetService ¶
func (m *MockController) GetService(arg0 service.MeshService) *v1.Service
GetService mocks base method.
func (*MockController) GetTargetPortForServicePort ¶ added in v1.2.0
func (m *MockController) GetTargetPortForServicePort(arg0 types.NamespacedName, arg1 uint16) (uint16, error)
GetTargetPortForServicePort mocks base method.
func (*MockController) IsMonitoredNamespace ¶
func (m *MockController) IsMonitoredNamespace(arg0 string) bool
IsMonitoredNamespace 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) GetPodForProxy ¶ added in v1.2.0
func (mr *MockControllerMockRecorder) GetPodForProxy(arg0 interface{}) *gomock.Call
GetPodForProxy indicates an expected call of GetPodForProxy.
func (*MockControllerMockRecorder) GetService ¶
func (mr *MockControllerMockRecorder) GetService(arg0 interface{}) *gomock.Call
GetService indicates an expected call of GetService.
func (*MockControllerMockRecorder) GetTargetPortForServicePort ¶ added in v1.2.0
func (mr *MockControllerMockRecorder) GetTargetPortForServicePort(arg0, arg1 interface{}) *gomock.Call
GetTargetPortForServicePort indicates an expected call of GetTargetPortForServicePort.
func (*MockControllerMockRecorder) IsMonitoredNamespace ¶
func (mr *MockControllerMockRecorder) IsMonitoredNamespace(arg0 interface{}) *gomock.Call
IsMonitoredNamespace indicates an expected call of IsMonitoredNamespace.
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
Source Files ¶
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. |