Documentation
¶
Index ¶
- Constants
- Variables
- func Can(verbs []string, v string) bool
- func CleanseNamespace(ns string) string
- func CoFQN(m *metav1.ObjectMeta, co string) string
- func FQN(ns, n string) string
- func IsAllNamespace(ns string) bool
- func IsAllNamespaces(ns string) bool
- func IsClusterScoped(ns string) bool
- func IsClusterWide(ns string) bool
- func IsNamespaced(ns string) bool
- func MetaFQN(m *metav1.ObjectMeta) string
- func Namespaced(p string) (ns, name string)
- func NewGVRFromCRD(crd *apiext.CustomResourceDefinition) map[*GVR]*apiext.CustomResourceDefinitionVersion
- func PrintNamespace(ns string) string
- func ResetMetrics()
- func ToMB(v int64) int64
- func ToPercentage(v, dv int64) int
- func ToPercentageStr(v, dv int64) string
- type APIClient
- func (a *APIClient) ActiveContext() string
- func (a *APIClient) ActiveNamespace() string
- func (a *APIClient) CachedDiscovery() (*disk.CachedDiscoveryClient, error)
- func (a *APIClient) CanI(ns string, gvr *GVR, name string, verbs []string) (auth bool, err error)
- func (a *APIClient) CheckConnectivity() bool
- func (a *APIClient) Config() *Config
- func (a *APIClient) ConnectionOK() bool
- func (a *APIClient) CurrentNamespaceName() (string, error)
- func (a *APIClient) Dial() (kubernetes.Interface, error)
- func (a *APIClient) DialLogs() (kubernetes.Interface, error)
- func (a *APIClient) DynDial() (dynamic.Interface, error)
- func (a *APIClient) HasMetrics() bool
- func (a *APIClient) IsActiveNamespace(ns string) bool
- func (a *APIClient) IsValidNamespace(ns string) bool
- func (a *APIClient) MXDial() (*versioned.Clientset, error)
- func (a *APIClient) RestConfig() (*restclient.Config, error)
- func (a *APIClient) ServerVersion() (*version.Info, error)
- func (a *APIClient) SwitchContext(name string) error
- func (a *APIClient) ValidNamespaceNames() (NamespaceNames, error)
- type Authorizer
- type ClusterMetrics
- type Config
- func (c *Config) CallTimeout() time.Duration
- func (c *Config) Clone(ns string) (*genericclioptions.ConfigFlags, error)
- func (c *Config) ConfigAccess() (clientcmd.ConfigAccess, error)
- func (c *Config) ContextNames() (map[string]struct{}, error)
- func (c *Config) Contexts() (map[string]*api.Context, error)
- func (c *Config) CurrentClusterName() (string, error)
- func (c *Config) CurrentContext() (*api.Context, error)
- func (c *Config) CurrentContextName() (string, error)
- func (c *Config) CurrentContextNamespace() (string, error)
- func (c *Config) CurrentGroupNames() ([]string, error)
- func (c *Config) CurrentNamespaceName() (string, error)
- func (c *Config) CurrentUserName() (string, error)
- func (c *Config) DelContext(n string) error
- func (c *Config) Flags() *genericclioptions.ConfigFlags
- func (c *Config) GetContext(n string) (*api.Context, error)
- func (c *Config) ImpersonateGroups() (string, error)
- func (c *Config) ImpersonateUser() (string, error)
- func (c *Config) RESTConfig() (*restclient.Config, error)
- func (c *Config) RawConfig() (api.Config, error)
- func (c *Config) RenameContext(oldCtx, newCtx string) error
- func (c *Config) SetProxy(proxy func(*http.Request) (*url.URL, error))
- func (c *Config) SwitchContext(name string) error
- type Connection
- type ContainersMetrics
- type CurrentMetrics
- type Error
- type GVR
- func (g *GVR) AsResourceName() string
- func (g *GVR) FQN(n string) string
- func (g *GVR) G() string
- func (g *GVR) GR() *schema.GroupResource
- func (g *GVR) GV() schema.GroupVersion
- func (g *GVR) GVK() schema.GroupVersionKind
- func (g *GVR) GVR() schema.GroupVersionResource
- func (g *GVR) GVSub() string
- func (g *GVR) IsAlias() bool
- func (g *GVR) IsDecodable() bool
- func (g *GVR) IsK8sRes() bool
- func (g *GVR) MarshalYAML() (any, error)
- func (g *GVR) R() string
- func (g *GVR) RG() (resource, group string)
- func (g *GVR) String() string
- func (g *GVR) SubResource() string
- func (g *GVR) UnmarshalYAML(n *yaml.Node) error
- func (g *GVR) V() string
- func (g *GVR) WithSubResource(sub string) *GVR
- type GVRs
- type MetricsServer
- func (*MetricsServer) ClusterLoad(nos *v1.NodeList, nmx *mv1beta1.NodeMetricsList, mx *ClusterMetrics) error
- func (m *MetricsServer) FetchContainersMetrics(ctx context.Context, fqn string) (ContainersMetrics, error)
- func (m *MetricsServer) FetchNodeMetrics(ctx context.Context, n string) (*mv1beta1.NodeMetrics, error)
- func (m *MetricsServer) FetchNodesMetrics(ctx context.Context) (*mv1beta1.NodeMetricsList, error)
- func (m *MetricsServer) FetchNodesMetricsMap(ctx context.Context) (NodesMetricsMap, error)
- func (m *MetricsServer) FetchPodMetrics(ctx context.Context, fqn string) (*mv1beta1.PodMetrics, error)
- func (m *MetricsServer) FetchPodsMetrics(ctx context.Context, ns string) (*mv1beta1.PodMetricsList, error)
- func (m *MetricsServer) FetchPodsMetricsMap(ctx context.Context, ns string) (PodsMetricsMap, error)
- func (*MetricsServer) NodesMetrics(nodes *v1.NodeList, metrics *mv1beta1.NodeMetricsList, mmx NodesMetrics)
- func (*MetricsServer) PodsMetrics(pods *mv1beta1.PodMetricsList, mmx PodsMetrics)
- type NamespaceNames
- type NodeMetrics
- type NodesMetrics
- type NodesMetricsMap
- type PodMetrics
- type PodsMetrics
- type PodsMetricsMap
Constants ¶
const ( // DefaultCallTimeoutDuration is the default api server call timeout duration. DefaultCallTimeoutDuration time.Duration = 120 * time.Second // UsePersistentConfig caches client config to avoid reloads. UsePersistentConfig = true )
const ( // NA Not available. NA = "n/a" // NamespaceAll designates the fictional all namespace. NamespaceAll = "all" // BlankNamespace designates no namespace. BlankNamespace = "" // DefaultNamespace designates the default namespace. DefaultNamespace = "default" // ClusterScope designates a resource is not namespaced. ClusterScope = "-" // NotNamespaced designates a non resource namespace. NotNamespaced = "*" // CreateVerb represents create access on a resource. CreateVerb = "create" // UpdateVerb represents an update access on a resource. UpdateVerb = "update" // PatchVerb represents a patch access on a resource. PatchVerb = "patch" // DeleteVerb represents a delete access on a resource. DeleteVerb = "delete" // GetVerb represents a get access on a resource. GetVerb = "get" // ListVerb represents a list access on a resource. ListVerb = "list" // WatchVerb represents a watch access on a resource. WatchVerb = "watch" )
const MegaByte = 1024 * 1024
MegaByte represents a megabyte.
Variables ¶
var ( // Apps... DpGVR = NewGVR("apps/v1/deployments") StsGVR = NewGVR("apps/v1/statefulsets") DsGVR = NewGVR("apps/v1/daemonsets") RsGVR = NewGVR("apps/v1/replicasets") RcGVR = NewGVR("apps/v1/replicationcontrollers") // Core... SaGVR = NewGVR("v1/serviceaccounts") PvcGVR = NewGVR("v1/persistentvolumeclaims") PvGVR = NewGVR("v1/persistentvolumes") CmGVR = NewGVR("v1/configmaps") SecGVR = NewGVR("v1/secrets") EvGVR = NewGVR("events.k8s.io/v1/events") EpGVR = NewGVR("v1/endpoints") PodGVR = NewGVR("v1/pods") NsGVR = NewGVR("v1/namespaces") NodeGVR = NewGVR("v1/nodes") SvcGVR = NewGVR("v1/services") // Discovery... EpsGVR = NewGVR("discovery.k8s.io/v1/endpointslices") // Autoscaling... HpaGVR = NewGVR("autoscaling/v1/horizontalpodautoscalers") // Batch... CjGVR = NewGVR("batch/v1/cronjobs") JobGVR = NewGVR("batch/v1/jobs") // Misc... CrdGVR = NewGVR("apiextensions.k8s.io/v1/customresourcedefinitions") PcGVR = NewGVR("scheduling.k8s.io/v1/priorityclasses") NpGVR = NewGVR("networking.k8s.io/v1/networkpolicies") ScGVR = NewGVR("storage.k8s.io/v1/storageclasses") // Policy... PdbGVR = NewGVR("policy/v1/poddisruptionbudgets") PspGVR = NewGVR("policy/v1beta1/podsecuritypolicies") IngGVR = NewGVR("networking.k8s.io/v1/ingresses") // Metrics... NmxGVR = NewGVR("metrics.k8s.io/v1beta1/nodes") PmxGVR = NewGVR("metrics.k8s.io/v1beta1/pods") // K9s... CpuGVR = NewGVR("cpu") MemGVR = NewGVR("memory") WkGVR = NewGVR("workloads") CoGVR = NewGVR("containers") CtGVR = NewGVR("contexts") RefGVR = NewGVR("references") PuGVR = NewGVR("pulses") ScnGVR = NewGVR("scans") DirGVR = NewGVR("dirs") PfGVR = NewGVR("portforwards") SdGVR = NewGVR("screendumps") BeGVR = NewGVR("benchmarks") AliGVR = NewGVR("aliases") XGVR = NewGVR("xrays") HlpGVR = NewGVR("help") QGVR = NewGVR("quit") // Helm... HmGVR = NewGVR("helm") HmhGVR = NewGVR("helm-history") // RBAC... RbacGVR = NewGVR("rbac") PolGVR = NewGVR("policy") UsrGVR = NewGVR("users") GrpGVR = NewGVR("groups") CrGVR = NewGVR("rbac.authorization.k8s.io/v1/clusterroles") CrbGVR = NewGVR("rbac.authorization.k8s.io/v1/clusterrolebindings") RoGVR = NewGVR("rbac.authorization.k8s.io/v1/roles") RobGVR = NewGVR("rbac.authorization.k8s.io/v1/rolebindings") )
var ( // PatchAccess patch a resource. PatchAccess = []string{PatchVerb} // GetAccess reads a resource. GetAccess = []string{GetVerb} // ListAccess list resources. ListAccess = []string{ListVerb} // MonitorAccess monitors a collection of resources. MonitorAccess = []string{ListVerb, WatchVerb} // ReadAllAccess represents an all read access to a resource. ReadAllAccess = []string{GetVerb, ListVerb, WatchVerb} )
var NoGVR = new(GVR)
Functions ¶
func CleanseNamespace ¶
CleanseNamespace ensures all ns maps to blank.
func CoFQN ¶ added in v0.24.11
func CoFQN(m *metav1.ObjectMeta, co string) string
CoFQN returns a fully qualified container name.
func IsAllNamespaces ¶
IsAllNamespaces returns true if all namespaces, false otherwise.
func IsClusterScoped ¶
IsClusterScoped returns true if resource is not namespaced.
func IsClusterWide ¶
IsClusterWide returns true if ns designates cluster scope, false otherwise.
func IsNamespaced ¶
IsNamespaced returns true if a specific ns is given.
func MetaFQN ¶
func MetaFQN(m *metav1.ObjectMeta) string
MetaFQN returns a fully qualified resource name.
func Namespaced ¶
Namespaced converts a resource path to namespace and resource name.
func NewGVRFromCRD ¶ added in v0.50.0
func NewGVRFromCRD(crd *apiext.CustomResourceDefinition) map[*GVR]*apiext.CustomResourceDefinitionVersion
NewGVRFromCRD builds a gvr from a custom resource definition.
func PrintNamespace ¶ added in v0.50.2
func ResetMetrics ¶ added in v0.16.0
func ResetMetrics()
ResetMetrics resets the metric server handle.
func ToPercentage ¶ added in v0.17.4
ToPercentage computes percentage as string otherwise n/aa.
func ToPercentageStr ¶ added in v0.19.5
ToPercentageStr computes percentage, but if v2 is 0, it will return NAValue instead of 0.
Types ¶
type APIClient ¶
type APIClient struct {
// contains filtered or unexported fields
}
APIClient represents a Kubernetes api client.
func InitConnection ¶ added in v0.20.0
InitConnection initialize connection from command line args. Checks for connectivity with the api server.
func NewTestAPIClient ¶ added in v0.23.5
func NewTestAPIClient() *APIClient
NewTestAPIClient for testing ONLY!!
func (*APIClient) ActiveContext ¶ added in v0.30.0
ActiveContext returns the current context name.
func (*APIClient) ActiveNamespace ¶ added in v0.19.0
ActiveNamespace returns the current namespace.
func (*APIClient) CachedDiscovery ¶ added in v0.20.0
func (a *APIClient) CachedDiscovery() (*disk.CachedDiscoveryClient, error)
CachedDiscovery returns a cached discovery client.
func (*APIClient) CheckConnectivity ¶ added in v0.13.4
CheckConnectivity return true if api server is cool or false otherwise.
func (*APIClient) ConnectionOK ¶ added in v0.20.0
ConnectionOK returns connection status.
func (*APIClient) CurrentNamespaceName ¶
CurrentNamespaceName return namespace name set via either cli arg or cluster config.
func (*APIClient) Dial ¶ added in v0.20.0
func (a *APIClient) Dial() (kubernetes.Interface, error)
Dial returns a handle to api server or die.
func (*APIClient) DialLogs ¶ added in v0.25.13
func (a *APIClient) DialLogs() (kubernetes.Interface, error)
DialLogs returns a handle to api server for logs.
func (*APIClient) HasMetrics ¶
HasMetrics checks if the cluster supports metrics.
func (*APIClient) IsActiveNamespace ¶ added in v0.19.0
IsActiveNamespace returns true if namespaces matches.
func (*APIClient) IsValidNamespace ¶ added in v0.30.0
func (*APIClient) RestConfig ¶ added in v0.20.0
func (a *APIClient) RestConfig() (*restclient.Config, error)
RestConfig returns a rest api client.
func (*APIClient) ServerVersion ¶
ServerVersion returns the current server version info.
func (*APIClient) SwitchContext ¶ added in v0.14.1
SwitchContext handles kubeconfig context switches.
func (*APIClient) ValidNamespaceNames ¶ added in v0.30.0
func (a *APIClient) ValidNamespaceNames() (NamespaceNames, error)
ValidNamespaceNames returns all available namespaces.
type Authorizer ¶
type Authorizer interface {
// CanI returns true if the user can use these actions for a given resource.
CanI(ns string, gvr *GVR, n string, verbs []string) (bool, error)
}
Authorizer checks what a user can or cannot do to a resource.
type ClusterMetrics ¶
type ClusterMetrics struct {
PercCPU, PercMEM, PercEphemeral int
}
ClusterMetrics summarizes total node metrics as percentages.
type Config ¶
type Config struct {
// contains filtered or unexported fields
}
Config tracks a kubernetes configuration.
func NewConfig ¶
func NewConfig(f *genericclioptions.ConfigFlags) *Config
NewConfig returns a new k8s config or an error if the flags are invalid.
func (*Config) CallTimeout ¶ added in v0.21.0
CallTimeout returns the call timeout if set or the default if not set.
func (*Config) Clone ¶ added in v0.31.8
func (c *Config) Clone(ns string) (*genericclioptions.ConfigFlags, error)
func (*Config) ConfigAccess ¶
func (c *Config) ConfigAccess() (clientcmd.ConfigAccess, error)
ConfigAccess return the current kubeconfig api server access configuration.
func (*Config) ContextNames ¶
ContextNames fetch all available contexts.
func (*Config) CurrentClusterName ¶
CurrentClusterName returns the currently active cluster name.
func (*Config) CurrentContext ¶ added in v0.30.0
CurrentContext returns the current context configuration.
func (*Config) CurrentContextName ¶
CurrentContextName returns the currently active config context.
func (*Config) CurrentContextNamespace ¶ added in v0.29.0
func (*Config) CurrentGroupNames ¶
CurrentGroupNames retrieves the active group names.
func (*Config) CurrentNamespaceName ¶
CurrentNamespaceName retrieves the active namespace.
func (*Config) CurrentUserName ¶
CurrentUserName retrieves the active user name.
func (*Config) DelContext ¶
DelContext remove a given context from the configuration.
func (*Config) Flags ¶
func (c *Config) Flags() *genericclioptions.ConfigFlags
Flags returns configuration flags.
func (*Config) GetContext ¶
GetContext fetch a given context or error if it does not exist.
func (*Config) ImpersonateGroups ¶ added in v0.16.0
ImpersonateGroups retrieves the active groups if set on the CLI.
func (*Config) ImpersonateUser ¶ added in v0.16.0
ImpersonateUser retrieves the active user name if set on the CLI.
func (*Config) RESTConfig ¶
func (c *Config) RESTConfig() (*restclient.Config, error)
func (*Config) RenameContext ¶ added in v0.27.4
RenameContext renames a context.
func (*Config) SwitchContext ¶
SwitchContext changes the kubeconfig context to a new cluster.
type Connection ¶
type Connection interface {
Authorizer
// Config returns current config.
Config() *Config
// ConnectionOK checks api server connection status.
ConnectionOK() bool
// Dial connects to api server.
Dial() (kubernetes.Interface, error)
// DialLogs connects to api server for logs.
DialLogs() (kubernetes.Interface, error)
// SwitchContext switches cluster based on context.
SwitchContext(ctx string) error
// CachedDiscovery connects to discovery client.
CachedDiscovery() (*disk.CachedDiscoveryClient, error)
// RestConfig connects to rest client.
RestConfig() (*restclient.Config, error)
// MXDial connects to metrics server.
MXDial() (*versioned.Clientset, error)
// DynDial connects to dynamic client.
DynDial() (dynamic.Interface, error)
// HasMetrics checks if metrics server is available.
HasMetrics() bool
// ValidNamespaceNames returns all available namespace names.
ValidNamespaceNames() (NamespaceNames, error)
// IsValidNamespace checks if given namespace is known.
IsValidNamespace(string) bool
// ServerVersion returns current server version.
ServerVersion() (*version.Info, error)
// CheckConnectivity checks if api server connection is happy or not.
CheckConnectivity() bool
// ActiveContext returns the current context name.
ActiveContext() string
// ActiveNamespace returns the current namespace.
ActiveNamespace() string
// IsActiveNamespace checks if given ns is active.
IsActiveNamespace(string) bool
}
Connection represents a Kubernetes apiserver connection.
type ContainersMetrics ¶ added in v0.23.8
type ContainersMetrics map[string]*mv1beta1.ContainerMetrics
ContainersMetrics tracks containers metrics.
type CurrentMetrics ¶ added in v0.13.3
type CurrentMetrics struct {
CurrentCPU, CurrentMEM, CurrentEphemeral int64
}
CurrentMetrics tracks current cpu/mem.
type GVR ¶
type GVR struct {
// contains filtered or unexported fields
}
GVR represents a kubernetes resource schema as a string. Format is group/version/resources:subresource.
func FromGVAndR ¶
FromGVAndR builds a gvr from a group/version and resource.
func NewGVRFromMeta ¶
func NewGVRFromMeta(a *metav1.APIResource) *GVR
NewGVRFromMeta builds a gvr from resource metadata.
func (*GVR) AsResourceName ¶
AsResourceName returns a resource . separated descriptor in the shape of kind.version.group.
func (*GVR) GR ¶ added in v0.13.1
func (g *GVR) GR() *schema.GroupResource
GR returns a full schema representation.
func (*GVR) GV ¶ added in v0.13.1
func (g *GVR) GV() schema.GroupVersion
GV returns the group version scheme representation.
func (*GVR) GVK ¶ added in v0.17.6
func (g *GVR) GVK() schema.GroupVersionKind
GVK returns a full schema representation.
func (*GVR) GVR ¶ added in v0.13.1
func (g *GVR) GVR() schema.GroupVersionResource
GVR returns a full schema representation.
func (*GVR) IsDecodable ¶ added in v0.31.8
IsDecodable checks if the k8s resource has a decodable view
func (*GVR) MarshalYAML ¶ added in v0.50.3
func (*GVR) SubResource ¶
SubResource returns a sub resource if available.
func (*GVR) WithSubResource ¶ added in v0.50.0
WithSubResource builds a new gvr with a sub resource.
type MetricsServer ¶
type MetricsServer struct {
Connection
// contains filtered or unexported fields
}
MetricsServer serves cluster metrics for nodes and pods.
var MetricsDial *MetricsServer
MetricsDial tracks global metric server handle.
func DialMetrics ¶ added in v0.16.0
func DialMetrics(c Connection) *MetricsServer
DialMetrics dials the metrics server.
func NewMetricsServer ¶
func NewMetricsServer(c Connection) *MetricsServer
NewMetricsServer return a metric server instance.
func (*MetricsServer) ClusterLoad ¶
func (*MetricsServer) ClusterLoad(nos *v1.NodeList, nmx *mv1beta1.NodeMetricsList, mx *ClusterMetrics) error
ClusterLoad retrieves all cluster nodes metrics.
func (*MetricsServer) FetchContainersMetrics ¶ added in v0.23.8
func (m *MetricsServer) FetchContainersMetrics(ctx context.Context, fqn string) (ContainersMetrics, error)
FetchContainersMetrics returns a pod's containers metrics.
func (*MetricsServer) FetchNodeMetrics ¶ added in v0.23.8
func (m *MetricsServer) FetchNodeMetrics(ctx context.Context, n string) (*mv1beta1.NodeMetrics, error)
FetchNodeMetrics return all metrics for nodes.
func (*MetricsServer) FetchNodesMetrics ¶
func (m *MetricsServer) FetchNodesMetrics(ctx context.Context) (*mv1beta1.NodeMetricsList, error)
FetchNodesMetrics return all metrics for nodes.
func (*MetricsServer) FetchNodesMetricsMap ¶ added in v0.23.8
func (m *MetricsServer) FetchNodesMetricsMap(ctx context.Context) (NodesMetricsMap, error)
FetchNodesMetricsMap fetch node metrics as a map.
func (*MetricsServer) FetchPodMetrics ¶
func (m *MetricsServer) FetchPodMetrics(ctx context.Context, fqn string) (*mv1beta1.PodMetrics, error)
FetchPodMetrics return all metrics for pods in a given namespace.
func (*MetricsServer) FetchPodsMetrics ¶
func (m *MetricsServer) FetchPodsMetrics(ctx context.Context, ns string) (*mv1beta1.PodMetricsList, error)
FetchPodsMetrics return all metrics for pods in a given namespace.
func (*MetricsServer) FetchPodsMetricsMap ¶ added in v0.23.8
func (m *MetricsServer) FetchPodsMetricsMap(ctx context.Context, ns string) (PodsMetricsMap, error)
FetchPodsMetricsMap fetch pods metrics as a map.
func (*MetricsServer) NodesMetrics ¶
func (*MetricsServer) NodesMetrics(nodes *v1.NodeList, metrics *mv1beta1.NodeMetricsList, mmx NodesMetrics)
NodesMetrics retrieves metrics for a given set of nodes.
func (*MetricsServer) PodsMetrics ¶
func (*MetricsServer) PodsMetrics(pods *mv1beta1.PodMetricsList, mmx PodsMetrics)
PodsMetrics retrieves metrics for all pods in a given namespace.
type NamespaceNames ¶ added in v0.25.8
type NamespaceNames map[string]struct{}
NamespaceNames tracks a collection of namespace names.
type NodeMetrics ¶
type NodeMetrics struct {
CurrentMetrics
AllocatableCPU, AllocatableMEM, AllocatableEphemeral int64
AvailableCPU, AvailableMEM, AvailableEphemeral int64
TotalCPU, TotalMEM, TotalEphemeral int64
}
NodeMetrics describes raw node metrics.
type NodesMetrics ¶
type NodesMetrics map[string]NodeMetrics
NodesMetrics tracks usage metrics per nodes.
type NodesMetricsMap ¶ added in v0.23.8
type NodesMetricsMap map[string]*mv1beta1.NodeMetrics
NodesMetricsMap tracks node metrics.
type PodMetrics ¶
type PodMetrics CurrentMetrics
PodMetrics represent an aggregation of all pod containers metrics.
type PodsMetrics ¶
type PodsMetrics map[string]PodMetrics
PodsMetrics tracks usage metrics per pods.
type PodsMetricsMap ¶ added in v0.23.8
type PodsMetricsMap map[string]*mv1beta1.PodMetrics
PodsMetricsMap tracks pod metrics.