k8s

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2025 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Overview

Package k8s provides Kubernetes client functionality

Index

Constants

View Source
const MaxExecTimeout = 1 * time.Minute

MaxExecTimeout is the maximum allowed timeout for exec operations to prevent abuse

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

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

Client represents a Kubernetes client with discovery and dynamic capabilities

func NewClient

func NewClient(kubeconfigPath string) (*Client, error)

NewClient creates a new Kubernetes client

func (*Client) ApplyClusteredResource

func (c *Client) ApplyClusteredResource(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	obj *unstructured.Unstructured,
) (*unstructured.Unstructured, error)

ApplyClusteredResource creates or updates a clustered resource

func (*Client) ApplyNamespacedResource

func (c *Client) ApplyNamespacedResource(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	namespace string,
	obj *unstructured.Unstructured,
) (*unstructured.Unstructured, error)

ApplyNamespacedResource creates or updates a namespaced resource

func (*Client) DeleteClusteredResource added in v0.0.7

func (c *Client) DeleteClusteredResource(ctx context.Context, gvr schema.GroupVersionResource, name string) error

DeleteClusteredResource deletes a clustered resource

func (*Client) DeleteNamespacedResource added in v0.0.7

func (c *Client) DeleteNamespacedResource(ctx context.Context, gvr schema.GroupVersionResource, namespace, name string) error

DeleteNamespacedResource deletes a namespaced resource

func (*Client) ExecInPod added in v0.0.8

func (c *Client) ExecInPod(
	ctx context.Context,
	namespace, name string,
	command []string,
	container string,
	timeout time.Duration,
) (*unstructured.Unstructured, error)

ExecInPod executes a command in a pod and returns the result The command will be killed if it exceeds the timeout If timeout is 0 or negative, the default timeout (15s) will be used If timeout exceeds MaxExecTimeout, it will be capped at MaxExecTimeout

func (*Client) GetClusteredResource

func (c *Client) GetClusteredResource(ctx context.Context, gvr schema.GroupVersionResource, name string) (interface{}, error)

GetClusteredResource gets a clustered resource

func (*Client) GetExecInPodFunc added in v0.0.8

func (c *Client) GetExecInPodFunc() ExecInPodFunc

GetExecInPodFunc returns the current exec in pod function

func (*Client) GetNamespacedResource

func (c *Client) GetNamespacedResource(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	namespace, name string,
) (interface{}, error)

GetNamespacedResource gets a namespaced resource

func (*Client) GetPodLogs added in v0.0.4

func (c *Client) GetPodLogs() PodLogsFunc

GetPodLogs returns the current pod logs function

func (*Client) GetRefreshInterval added in v0.0.7

func (c *Client) GetRefreshInterval() time.Duration

GetRefreshInterval returns the current refresh interval Returns 0 if refresh is not running

func (*Client) GetResource added in v0.0.3

func (c *Client) GetResource(ctx context.Context,
	gvr schema.GroupVersionResource,
	namespace, name, subresource string,
	parameters map[string]string) (*unstructured.Unstructured, error)

GetResource gets a resource or its subresource If subresource is empty, the main resource is returned parameters is a map of string key-value pairs that can be used to customize the request

func (*Client) IsReady

func (c *Client) IsReady() bool

IsReady returns true if the client is ready to use

func (*Client) IsRefreshing added in v0.0.7

func (c *Client) IsRefreshing() bool

IsRefreshing returns true if the client is periodically refreshing

func (*Client) ListAPIResources

func (c *Client) ListAPIResources(_ context.Context) ([]*metav1.APIResourceList, error)

ListAPIResources returns all API resources supported by the Kubernetes API server

func (*Client) ListClusteredResources

func (c *Client) ListClusteredResources(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	labelSelector string,
) (*unstructured.UnstructuredList, error)

ListClusteredResources returns all clustered resources of the specified group/version/kind

func (*Client) ListNamespacedResources

func (c *Client) ListNamespacedResources(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	namespace string,
	labelSelector string,
) (*unstructured.UnstructuredList, error)

ListNamespacedResources returns all namespaced resources of the specified group/version/kind in the given namespace

func (*Client) PostResource added in v0.0.8

func (c *Client) PostResource(
	ctx context.Context,
	gvr schema.GroupVersionResource,
	namespace, name, subresource string,
	body map[string]interface{},
	_ map[string]string,
) (*unstructured.Unstructured, error)

PostResource posts to a resource or its subresource If subresource is empty, the main resource is posted to parameters is a map of string key-value pairs that can be used to customize the request

func (*Client) RefreshClient added in v0.0.7

func (c *Client) RefreshClient() error

RefreshClient re-reads the kubeconfig and updates the client's components

func (*Client) SetClientset added in v0.0.3

func (c *Client) SetClientset(clientset kubernetes.Interface)

SetClientset sets the clientset (for testing purposes)

func (*Client) SetDiscoveryClient

func (c *Client) SetDiscoveryClient(discoveryClient discovery.DiscoveryInterface)

SetDiscoveryClient sets the discovery client (for testing purposes)

func (*Client) SetDynamicClient

func (c *Client) SetDynamicClient(dynamicClient dynamic.Interface)

SetDynamicClient sets the dynamic client (for testing purposes)

func (*Client) SetExecInPodFunc added in v0.0.8

func (c *Client) SetExecInPodFunc(execInPodFunc ExecInPodFunc)

SetExecInPodFunc sets the function used to execute commands in pods (for testing purposes)

func (*Client) SetPodLogsFunc added in v0.0.4

func (c *Client) SetPodLogsFunc(getPodLogs PodLogsFunc)

SetPodLogsFunc sets the function used to get pod logs (for testing purposes)

func (*Client) StartPeriodicRefresh added in v0.0.7

func (c *Client) StartPeriodicRefresh(interval time.Duration) error

StartPeriodicRefresh starts a goroutine that periodically refreshes the client's configuration The interval specifies how often to refresh the configuration Returns an error if refresh is already running

func (*Client) StopPeriodicRefresh added in v0.0.7

func (c *Client) StopPeriodicRefresh() error

StopPeriodicRefresh stops the periodic refresh goroutine Returns an error if refresh is not running

type ConfigGetter added in v0.0.7

type ConfigGetter func(kubeconfigPath string) (*rest.Config, error)

ConfigGetter is a function type for getting Kubernetes client configuration

type ExecInPodFunc added in v0.0.8

type ExecInPodFunc func(
	ctx context.Context,
	namespace, name string,
	command []string,
	container string,
	timeout time.Duration,
) (*unstructured.Unstructured, error)

ExecInPodFunc is a function type for executing commands in pods

type PodLogsFunc added in v0.0.3

type PodLogsFunc func(
	ctx context.Context,
	namespace, name string,
	parameters map[string]string,
) (*unstructured.Unstructured, error)

PodLogsFunc is a function type for retrieving pod logs

Jump to

Keyboard shortcuts

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