steve

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Overview

Package steve provides a Kubernetes dynamic client for accessing clusters via Rancher's Steve API.

Index

Constants

This section is empty.

Variables

View Source
var K8sKindsToGVRs = map[string]schema.GroupVersionResource{

	"pod":                   {Group: "", Version: "v1", Resource: "pods"},
	"service":               {Group: "", Version: "v1", Resource: "services"},
	"svc":                   {Group: "", Version: "v1", Resource: "services"},
	"configmap":             {Group: "", Version: "v1", Resource: "configmaps"},
	"cm":                    {Group: "", Version: "v1", Resource: "configmaps"},
	"secret":                {Group: "", Version: "v1", Resource: "secrets"},
	"event":                 {Group: "", Version: "v1", Resource: "events"},
	"ev":                    {Group: "", Version: "v1", Resource: "events"},
	"namespace":             {Group: "", Version: "v1", Resource: "namespaces"},
	"ns":                    {Group: "", Version: "v1", Resource: "namespaces"},
	"node":                  {Group: "", Version: "v1", Resource: "nodes"},
	"no":                    {Group: "", Version: "v1", Resource: "nodes"},
	"serviceaccount":        {Group: "", Version: "v1", Resource: "serviceaccounts"},
	"sa":                    {Group: "", Version: "v1", Resource: "serviceaccounts"},
	"persistentvolume":      {Group: "", Version: "v1", Resource: "persistentvolumes"},
	"pv":                    {Group: "", Version: "v1", Resource: "persistentvolumes"},
	"persistentvolumeclaim": {Group: "", Version: "v1", Resource: "persistentvolumeclaims"},
	"pvc":                   {Group: "", Version: "v1", Resource: "persistentvolumeclaims"},
	"resourcequota":         {Group: "", Version: "v1", Resource: "resourcequotas"},
	"quota":                 {Group: "", Version: "v1", Resource: "resourcequotas"},
	"limitrange":            {Group: "", Version: "v1", Resource: "limitranges"},
	"limits":                {Group: "", Version: "v1", Resource: "limitranges"},
	"endpoints":             {Group: "", Version: "v1", Resource: "endpoints"},
	"ep":                    {Group: "", Version: "v1", Resource: "endpoints"},

	"deployment":  {Group: "apps", Version: "v1", Resource: "deployments"},
	"deploy":      {Group: "apps", Version: "v1", Resource: "deployments"},
	"statefulset": {Group: "apps", Version: "v1", Resource: "statefulsets"},
	"sts":         {Group: "apps", Version: "v1", Resource: "statefulsets"},
	"daemonset":   {Group: "apps", Version: "v1", Resource: "daemonsets"},
	"ds":          {Group: "apps", Version: "v1", Resource: "daemonsets"},
	"replicaset":  {Group: "apps", Version: "v1", Resource: "replicasets"},
	"rs":          {Group: "apps", Version: "v1", Resource: "replicasets"},

	"job":     {Group: "batch", Version: "v1", Resource: "jobs"},
	"cronjob": {Group: "batch", Version: "v1", Resource: "cronjobs"},
	"cj":      {Group: "batch", Version: "v1", Resource: "cronjobs"},

	"ingress":       {Group: "networking.k8s.io", Version: "v1", Resource: "ingresses"},
	"ing":           {Group: "networking.k8s.io", Version: "v1", Resource: "ingresses"},
	"networkpolicy": {Group: "networking.k8s.io", Version: "v1", Resource: "networkpolicies"},
	"netpol":        {Group: "networking.k8s.io", Version: "v1", Resource: "networkpolicies"},
	"ingressclass":  {Group: "networking.k8s.io", Version: "v1", Resource: "ingressclasses"},

	"horizontalpodautoscaler": {Group: "autoscaling", Version: "v2", Resource: "horizontalpodautoscalers"},
	"hpa":                     {Group: "autoscaling", Version: "v2", Resource: "horizontalpodautoscalers"},
	"vpa":                     {Group: "autoscaling.k8s.io", Version: "v1", Resource: "verticalpodautoscalers"},

	"role":               {Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "roles"},
	"rolebinding":        {Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "rolebindings"},
	"clusterrole":        {Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterroles"},
	"clusterrolebinding": {Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "clusterrolebindings"},

	"storageclass":     {Group: "storage.k8s.io", Version: "v1", Resource: "storageclasses"},
	"sc":               {Group: "storage.k8s.io", Version: "v1", Resource: "storageclasses"},
	"volumeattachment": {Group: "storage.k8s.io", Version: "v1", Resource: "volumeattachments"},

	"crd":                       {Group: "apiextensions.k8s.io", Version: "v1", Resource: "customresourcedefinitions"},
	"customresourcedefinition":  {Group: "apiextensions.k8s.io", Version: "v1", Resource: "customresourcedefinitions"},
	"customresourcedefinitions": {Group: "apiextensions.k8s.io", Version: "v1", Resource: "customresourcedefinitions"},

	"endpointslice":  {Group: "discovery.k8s.io", Version: "v1", Resource: "endpointslices"},
	"endpointslices": {Group: "discovery.k8s.io", Version: "v1", Resource: "endpointslices"},

	"poddisruptionbudget": {Group: "policy", Version: "v1", Resource: "poddisruptionbudgets"},
	"pdb":                 {Group: "policy", Version: "v1", Resource: "poddisruptionbudgets"},

	"node.metrics.k8s.io": {Group: "metrics.k8s.io", Version: "v1beta1", Resource: "nodes"},
	"pod.metrics.k8s.io":  {Group: "metrics.k8s.io", Version: "v1beta1", Resource: "pods"},
	"nodemetrics":         {Group: "metrics.k8s.io", Version: "v1beta1", Resource: "nodes"},
	"podmetrics":          {Group: "metrics.k8s.io", Version: "v1beta1", Resource: "pods"},

	"cluster":                    {Group: "management.cattle.io", Version: "v3", Resource: "clusters"},
	"project":                    {Group: "management.cattle.io", Version: "v3", Resource: "projects"},
	"user":                       {Group: "management.cattle.io", Version: "v3", Resource: "users"},
	"roletemplate":               {Group: "management.cattle.io", Version: "v3", Resource: "roletemplates"},
	"globalrole":                 {Group: "management.cattle.io", Version: "v3", Resource: "globalroles"},
	"globalrolebinding":          {Group: "management.cattle.io", Version: "v3", Resource: "globalrolebindings"},
	"clusterroletemplatebinding": {Group: "management.cattle.io", Version: "v3", Resource: "clusterroletemplatebindings"},
	"projectroletemplatebinding": {Group: "management.cattle.io", Version: "v3", Resource: "projectroletemplatebindings"},
	"nodetemplate":               {Group: "management.cattle.io", Version: "v3", Resource: "nodetemplates"},
	"nodedriver":                 {Group: "management.cattle.io", Version: "v3", Resource: "nodedrivers"},
	"setting":                    {Group: "management.cattle.io", Version: "v3", Resource: "settings"},

	"bundle":           {Group: "fleet.cattle.io", Version: "v1alpha1", Resource: "bundles"},
	"gitrepo":          {Group: "fleet.cattle.io", Version: "v1alpha1", Resource: "gitrepos"},
	"bundledeployment": {Group: "fleet.cattle.io", Version: "v1alpha1", Resource: "bundledeployments"},
	"clustergroup":     {Group: "fleet.cattle.io", Version: "v1alpha1", Resource: "clustergroups"},
	"fleetcluster":     {Group: "fleet.cattle.io", Version: "v1alpha1", Resource: "clusters"},

	"certificate":   {Group: "cert-manager.io", Version: "v1", Resource: "certificates"},
	"issuer":        {Group: "cert-manager.io", Version: "v1", Resource: "issuers"},
	"clusterissuer": {Group: "cert-manager.io", Version: "v1", Resource: "clusterissuers"},
}

K8sKindsToGVRs maps lowercase Kubernetes resource kind names to their corresponding GroupVersionResource (GVR) identifiers. This mapping is used for dynamic client operations to resolve resource types across different API groups and versions.

Functions

func GetGVR

func GetGVR(kind string) (schema.GroupVersionResource, bool)

GetGVR returns the GroupVersionResource for a given kind. Returns an empty GVR and false if the kind is not found.

Types

type Client

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

Client provides methods for interacting with Kubernetes clusters via Rancher's Steve API.

func NewClient

func NewClient(serverURL, token, accessKey, secretKey string, insecure bool) *Client

NewClient creates a new Steve API client.

func (*Client) CreateResource

func (c *Client) CreateResource(ctx context.Context, clusterID string, resource *unstructured.Unstructured) (*unstructured.Unstructured, error)

CreateResource creates a new Kubernetes resource.

func (*Client) DeleteResource

func (c *Client) DeleteResource(ctx context.Context, clusterID, kind, namespace, name string) error

DeleteResource deletes a Kubernetes resource.

func (*Client) DescribeResource added in v0.4.1

func (c *Client) DescribeResource(ctx context.Context, clusterID, kind, namespace, name string) (*DescribeResult, error)

DescribeResource retrieves a Kubernetes resource along with its related events.

func (*Client) GetAllContainerLogs

func (c *Client) GetAllContainerLogs(ctx context.Context, clusterID, namespace, podName string, tailLines int64) (map[string]string, error)

GetAllContainerLogs retrieves logs from all containers in a pod.

func (*Client) GetEvents added in v0.4.1

func (c *Client) GetEvents(ctx context.Context, clusterID, namespace, name, kind string) ([]corev1.Event, error)

GetEvents retrieves Kubernetes events related to a specific resource. Filters by involvedObject fields: name, namespace, and optionally kind.

func (*Client) GetPodLogs

func (c *Client) GetPodLogs(ctx context.Context, clusterID, namespace, podName string, opts *PodLogOptions) (string, error)

GetPodLogs retrieves logs from a specific pod and container.

func (*Client) GetResource

func (c *Client) GetResource(ctx context.Context, clusterID, kind, namespace, name string) (*unstructured.Unstructured, error)

GetResource retrieves a single Kubernetes resource by name.

func (*Client) InspectPod

func (c *Client) InspectPod(ctx context.Context, clusterID, namespace, podName string) (*InspectPodResult, error)

InspectPod retrieves comprehensive information about a pod including its parent, metrics, and logs.

func (*Client) ListResources

func (c *Client) ListResources(ctx context.Context, clusterID, kind, namespace string, opts *ListOptions) (*unstructured.UnstructuredList, error)

ListResources lists Kubernetes resources matching the provided parameters.

func (*Client) PatchResource

func (c *Client) PatchResource(ctx context.Context, clusterID, kind, namespace, name string, patch []byte) (*unstructured.Unstructured, error)

PatchResource patches an existing Kubernetes resource using JSON patch.

type DescribeResult added in v0.4.1

type DescribeResult struct {
	Resource *unstructured.Unstructured `json:"resource"`
	Events   []corev1.Event             `json:"events,omitempty"`
}

DescribeResult contains the results of describing a resource.

func (*DescribeResult) ToJSON added in v0.4.1

func (r *DescribeResult) ToJSON() (string, error)

ToJSON converts the DescribeResult to a JSON string.

type InspectPodResult

type InspectPodResult struct {
	Pod     *unstructured.Unstructured `json:"pod"`
	Parent  *unstructured.Unstructured `json:"parent,omitempty"`
	Metrics *unstructured.Unstructured `json:"metrics,omitempty"`
	Logs    map[string]string          `json:"logs"`
}

InspectPodResult contains the results of inspecting a pod.

func (*InspectPodResult) ToJSON

func (r *InspectPodResult) ToJSON() (string, error)

ToJSON converts the InspectPodResult to a JSON string.

type ListOptions

type ListOptions struct {
	LabelSelector string
	FieldSelector string
	Limit         int64
}

ListOptions contains options for listing resources.

type PodLogOptions

type PodLogOptions struct {
	Container    string
	TailLines    *int64
	SinceSeconds *int64
	Timestamps   bool
	Previous     bool
}

PodLogOptions contains options for fetching pod logs.

Jump to

Keyboard shortcuts

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