Documentation ¶
Overview ¶
Package kube implements the shared and reusable library for Kubernetes
Index ¶
- Constants
- func ConvertProtocol(name string, proto v1.Protocol) model.Protocol
- func CreateInterface(kubeconfig string) (kubernetes.Interface, error)
- func CreateInterfaceFromClusterConfig(clusterConfig *clientcmdapi.Config) (kubernetes.Interface, error)
- func DeRegisterEndpoint(client kubernetes.Interface, namespace string, svcName string, ip string) error
- func FindPort(pod *v1.Pod, svcPort *v1.ServicePort) (int, error)
- func KeyFunc(name, namespace string) string
- func RegisterEndpoint(client kubernetes.Interface, namespace string, svcName string, ip string, ...) error
- type ChainHandler
- type Controller
- func (c *Controller) AppendInstanceHandler(f func(*model.ServiceInstance, model.Event)) error
- func (c *Controller) AppendServiceHandler(f func(*model.Service, model.Event)) error
- func (c *Controller) GetIstioServiceAccounts(hostname model.Hostname, ports []int) []string
- func (c *Controller) GetPodLocality(pod *v1.Pod) string
- func (c *Controller) GetProxyServiceInstances(proxy *model.Proxy) ([]*model.ServiceInstance, error)
- func (c *Controller) GetProxyWorkloadLabels(proxy *model.Proxy) (model.LabelsCollection, error)
- func (c *Controller) GetService(hostname model.Hostname) (*model.Service, error)
- func (c *Controller) HasSynced() bool
- func (c *Controller) InitNetworkLookup(meshNetworks *meshconfig.MeshNetworks)
- func (c *Controller) InstancesByPort(hostname model.Hostname, reqSvcPort int, labelsList model.LabelsCollection) ([]*model.ServiceInstance, error)
- func (c *Controller) ManagementPorts(addr string) model.PortList
- func (c *Controller) Run(stop <-chan struct{})
- func (c *Controller) Services() ([]*model.Service, error)
- func (c *Controller) Stop()
- func (c *Controller) WorkloadHealthCheckInfo(addr string) model.ProbeList
- type ControllerOptions
- type Handler
- type NamedPort
- type PodCache
- type Queue
- type Task
Constants ¶
const ( // NodeRegionLabel is the well-known label for kubernetes node region NodeRegionLabel = "failure-domain.beta.kubernetes.io/region" // NodeZoneLabel is the well-known label for kubernetes node zone NodeZoneLabel = "failure-domain.beta.kubernetes.io/zone" // IstioNamespace used by default for Istio cluster-wide installation IstioNamespace = "istio-system" // IstioConfigMap is used by default IstioConfigMap = "istio" // PrometheusScrape is the annotation used by prometheus to determine if service metrics should be scraped (collected) PrometheusScrape = "prometheus.io/scrape" // PrometheusPort is the annotation used to explicitly specify the port to use for scraping metrics PrometheusPort = "prometheus.io/port" // PrometheusPath is the annotation used to specify a path for scraping metrics. Default is "/metrics" PrometheusPath = "prometheus.io/path" // PrometheusPathDefault is the default value for the PrometheusPath annotation PrometheusPathDefault = "/metrics" )
const ( // IngressClassAnnotation is the annotation on ingress resources for the class of controllers // responsible for it IngressClassAnnotation = "kubernetes.io/ingress.class" // KubeServiceAccountsOnVMAnnotation is to specify the K8s service accounts that are allowed to run // this service on the VMs KubeServiceAccountsOnVMAnnotation = "alpha.istio.io/kubernetes-serviceaccounts" // CanonicalServiceAccountsAnnotation is to specify the non-Kubernetes service accounts that // are allowed to run this service. CanonicalServiceAccountsAnnotation = "alpha.istio.io/canonical-serviceaccounts" // ServiceExportAnnotation specifies the namespaces to which this service should be exported to. // "*" which is the default, indicates it is reachable within the mesh // "." indicates it is reachable within its namespace ServiceExportAnnotation = "networking.istio.io/exportTo" )
Variables ¶
This section is empty.
Functions ¶
func ConvertProtocol ¶
ConvertProtocol from k8s protocol and port name
func CreateInterface ¶
func CreateInterface(kubeconfig string) (kubernetes.Interface, error)
CreateInterface is a helper function to create Kubernetes interface from kubeconfig file
func CreateInterfaceFromClusterConfig ¶
func CreateInterfaceFromClusterConfig(clusterConfig *clientcmdapi.Config) (kubernetes.Interface, error)
CreateInterfaceFromClusterConfig is a helper function to create Kubernetes interface from in memory cluster config struct
func DeRegisterEndpoint ¶
func DeRegisterEndpoint(client kubernetes.Interface, namespace string, svcName string, ip string) error
DeRegisterEndpoint removes the endpoint (and the service if it already exists) from Kubernetes. It creates or updates as needed.
func FindPort ¶
Forked from Kubernetes k8s.io/kubernetes/pkg/api/v1/pod FindPort locates the container port for the given pod and portName. If the targetPort is a number, use that. If the targetPort is a string, look that string up in all named ports in all containers in the target pod. If no match is found, fail.
func KeyFunc ¶
KeyFunc is the internal API key function that returns "namespace"/"name" or "name" if "namespace" is empty
func RegisterEndpoint ¶
func RegisterEndpoint(client kubernetes.Interface, namespace string, svcName string, ip string, portsList []NamedPort, labels []string, annotations []string) error
RegisterEndpoint registers the endpoint (and the service if it doesn't already exists). It creates or updates as needed. When creating it adds the optional labels.
Types ¶
type ChainHandler ¶
type ChainHandler struct {
// contains filtered or unexported fields
}
ChainHandler applies handlers in a sequence
func (*ChainHandler) Append ¶
func (ch *ChainHandler) Append(h Handler)
Append a handler as the last handler in the chain
type Controller ¶
type Controller struct { // Env is set by server to point to the environment, to allow the controller to // use env data and push status. It may be null in tests. Env *model.Environment // ClusterID identifies the remote cluster in a multicluster env. ClusterID string // XDSUpdater will push EDS changes to the ADS model. XDSUpdater model.XDSUpdater sync.RWMutex // contains filtered or unexported fields }
Controller is a collection of synchronized resource watchers Caches are thread-safe
func NewController ¶
func NewController(client kubernetes.Interface, options ControllerOptions) *Controller
NewController creates a new Kubernetes controller Created by bootstrap and multicluster (see secretcontroler).
func (*Controller) AppendInstanceHandler ¶
func (c *Controller) AppendInstanceHandler(f func(*model.ServiceInstance, model.Event)) error
AppendInstanceHandler implements a service catalog operation
func (*Controller) AppendServiceHandler ¶
AppendServiceHandler implements a service catalog operation
func (*Controller) GetIstioServiceAccounts ¶
func (c *Controller) GetIstioServiceAccounts(hostname model.Hostname, ports []int) []string
GetIstioServiceAccounts returns the Istio service accounts running a serivce hostname. Each service account is encoded according to the SPIFFE VSID spec. For example, a service account named "bar" in namespace "foo" is encoded as "spiffe://cluster.local/ns/foo/sa/bar".
func (*Controller) GetPodLocality ¶
func (c *Controller) GetPodLocality(pod *v1.Pod) string
GetPodLocality retrieves the locality for a pod.
func (*Controller) GetProxyServiceInstances ¶
func (c *Controller) GetProxyServiceInstances(proxy *model.Proxy) ([]*model.ServiceInstance, error)
GetProxyServiceInstances returns service instances co-located with a given proxy
func (*Controller) GetProxyWorkloadLabels ¶
func (c *Controller) GetProxyWorkloadLabels(proxy *model.Proxy) (model.LabelsCollection, error)
func (*Controller) GetService ¶
GetService implements a service catalog operation by hostname specified.
func (*Controller) HasSynced ¶
func (c *Controller) HasSynced() bool
HasSynced returns true after the initial state synchronization
func (*Controller) InitNetworkLookup ¶
func (c *Controller) InitNetworkLookup(meshNetworks *meshconfig.MeshNetworks)
InitNetworkLookup will read the mesh networks configuration from the environment and initialize CIDR rangers for an efficient network lookup when needed
func (*Controller) InstancesByPort ¶
func (c *Controller) InstancesByPort(hostname model.Hostname, reqSvcPort int, labelsList model.LabelsCollection) ([]*model.ServiceInstance, error)
InstancesByPort implements a service catalog operation
func (*Controller) ManagementPorts ¶
func (c *Controller) ManagementPorts(addr string) model.PortList
ManagementPorts implements a service catalog operation
func (*Controller) Run ¶
func (c *Controller) Run(stop <-chan struct{})
Run all controllers until a signal is received
func (*Controller) Services ¶
func (c *Controller) Services() ([]*model.Service, error)
Services implements a service catalog operation
func (*Controller) Stop ¶
func (c *Controller) Stop()
Stop the controller. Mostly for tests, to simplify the code (defer c.Stop())
func (*Controller) WorkloadHealthCheckInfo ¶
func (c *Controller) WorkloadHealthCheckInfo(addr string) model.ProbeList
WorkloadHealthCheckInfo implements a service catalog operation
type ControllerOptions ¶
type ControllerOptions struct { // Namespace the controller watches. If set to meta_v1.NamespaceAll (""), controller watches all namespaces WatchedNamespace string ResyncPeriod time.Duration DomainSuffix string // ClusterID identifies the remote cluster in a multicluster env. ClusterID string // XDSUpdater will push changes to the xDS server. XDSUpdater model.XDSUpdater // TrustDomain used in SPIFFE identity TrustDomain string // contains filtered or unexported fields }
ControllerOptions stores the configurable attributes of a Controller.
type NamedPort ¶
NamedPort defines the Port and Name tuple needed for services and endpoints.
func Str2NamedPort ¶
Str2NamedPort parses a proto:port string into a namePort struct.