Documentation
¶
Overview ¶
Package k8s provides Kubernetes client wrappers for the kube-workspaces API server. It includes specialized clients for workspaces, images, CRDs, core resources (pods, services, PVCs), and a metrics buffer for caching pod resource usage data.
Index ¶
- func GetClientset() (kubernetes.Interface, error)
- func GetRESTConfig() (*rest.Config, error)
- func NewClient() (*kubernetes.Clientset, error)
- func NewDynamicClient() (dynamic.Interface, error)
- type CRDClient
- func (c *CRDClient) GetCRD(ctx context.Context, name string) (*unstructured.Unstructured, error)
- func (c *CRDClient) ListCRDInstances(ctx context.Context, group, version, resource, namespace string) (*unstructured.UnstructuredList, error)
- func (c *CRDClient) ListCRDs(ctx context.Context) (*unstructured.UnstructuredList, error)
- func (c *CRDClient) ListCRDsByGroup(ctx context.Context, group string) (*unstructured.UnstructuredList, error)
- type CoreClient
- func (c *CoreClient) AnnotateNamespace(ctx context.Context, name, key, value string) error
- func (c *CoreClient) CreateWorkspaceEvent(ctx context.Context, namespace, workspaceName, action, actor, message string) error
- func (c *CoreClient) GetPod(ctx context.Context, namespace, name string) (*corev1.Pod, error)
- func (c *CoreClient) GetPodLogs(ctx context.Context, namespace, name, container string, tailLines int64) (string, error)
- func (c *CoreClient) GetStatefulSet(ctx context.Context, namespace, name string) (interface{}, error)
- func (c *CoreClient) ListEvents(ctx context.Context, namespace, fieldSelector string) (*corev1.EventList, error)
- func (c *CoreClient) ListNamespaceEvents(ctx context.Context, namespace string) (*corev1.EventList, error)
- func (c *CoreClient) ListNamespaces(ctx context.Context) (*corev1.NamespaceList, error)
- func (c *CoreClient) ListPods(ctx context.Context, namespace, labelSelector string) (*corev1.PodList, error)
- func (c *CoreClient) ListWorkspaceEvents(ctx context.Context, namespace, workspaceName string) (*corev1.EventList, error)
- type Image
- type ImageClient
- func (c *ImageClient) CreateImage(ctx context.Context, name string, spec map[string]interface{}) (*unstructured.Unstructured, error)
- func (c *ImageClient) DeleteImage(ctx context.Context, name string) error
- func (c *ImageClient) GetImage(ctx context.Context, name string) (*Image, error)
- func (c *ImageClient) GetImageByRef(ctx context.Context, imageRef string) (*Image, error)
- func (c *ImageClient) GetImageRaw(ctx context.Context, name string) (*unstructured.Unstructured, error)
- func (c *ImageClient) ListImages(ctx context.Context) ([]Image, error)
- func (c *ImageClient) UpdateImage(ctx context.Context, name string, spec map[string]interface{}) (*unstructured.Unstructured, error)
- type ImageCredentials
- type ImageEnvVar
- type ImageInitContainer
- type ImageLink
- type ImagePort
- type ImageProxyConfig
- type ImageRemoteDesktop
- type ImageVolumeMount
- type MetricPoint
- type MetricsBuffer
- func (b *MetricsBuffer) Client() *MetricsClient
- func (b *MetricsBuffer) EnsurePod(ctx context.Context, namespace, name string, container string)
- func (b *MetricsBuffer) GetMetrics(namespace, name string, window time.Duration) ([]MetricPoint, string)
- func (b *MetricsBuffer) Run(ctx context.Context)
- func (b *MetricsBuffer) Stop()
- type MetricsClient
- type MetricsSnapshot
- type PodDefault
- type PodDefaultClient
- type PodDefaultEnvVar
- type PodDefaultVolumeMount
- type SSHKeyClient
- func (c *SSHKeyClient) CreateSSHKey(ctx context.Context, sshKey *unstructured.Unstructured) (*unstructured.Unstructured, error)
- func (c *SSHKeyClient) DeleteSSHKey(ctx context.Context, namespace, name string) error
- func (c *SSHKeyClient) GetSSHKey(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error)
- func (c *SSHKeyClient) ListSSHKeys(ctx context.Context, namespace string) (*unstructured.UnstructuredList, error)
- type WorkspaceClient
- func (c *WorkspaceClient) CreateWorkspace(ctx context.Context, workspace *unstructured.Unstructured) (*unstructured.Unstructured, error)
- func (c *WorkspaceClient) DeleteWorkspace(ctx context.Context, namespace, name string) error
- func (c *WorkspaceClient) GetInitialCredentialSecret(ctx context.Context, namespace, name string) (*corev1.Secret, error)
- func (c *WorkspaceClient) GetWorkspace(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error)
- func (c *WorkspaceClient) ListWorkspaces(ctx context.Context, namespace string) (*unstructured.UnstructuredList, error)
- func (c *WorkspaceClient) UpdateWorkspace(ctx context.Context, workspace *unstructured.Unstructured) (*unstructured.Unstructured, error)
- func (c *WorkspaceClient) WatchWorkspaces(ctx context.Context, namespace string, opts metav1.ListOptions) (watch.Interface, error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetClientset ¶
func GetClientset() (kubernetes.Interface, error)
GetClientset returns a Kubernetes clientset for use by the exec handler.
func GetRESTConfig ¶
GetRESTConfig returns a Kubernetes REST config for use by the exec handler.
func NewClient ¶
func NewClient() (*kubernetes.Clientset, error)
NewClient creates a Kubernetes clientset (used by volumes and namespaces services).
func NewDynamicClient ¶
NewDynamicClient creates a dynamic Kubernetes client for working with CRDs.
Types ¶
type CRDClient ¶
type CRDClient struct {
// contains filtered or unexported fields
}
CRDClient provides operations on CustomResourceDefinition resources.
func NewCRDClient ¶
NewCRDClient creates a new CRDClient using the same config as other clients.
func (*CRDClient) GetCRD ¶
func (c *CRDClient) GetCRD(ctx context.Context, name string) (*unstructured.Unstructured, error)
GetCRD gets a CustomResourceDefinition by name.
func (*CRDClient) ListCRDInstances ¶
func (c *CRDClient) ListCRDInstances(ctx context.Context, group, version, resource, namespace string) (*unstructured.UnstructuredList, error)
ListCRDInstances lists all instances of a CRD identified by group/version/resource. For namespaced CRDs, pass namespace; for cluster-scoped, pass "".
func (*CRDClient) ListCRDs ¶
func (c *CRDClient) ListCRDs(ctx context.Context) (*unstructured.UnstructuredList, error)
ListCRDs lists all CustomResourceDefinitions in the cluster.
func (*CRDClient) ListCRDsByGroup ¶
func (c *CRDClient) ListCRDsByGroup(ctx context.Context, group string) (*unstructured.UnstructuredList, error)
ListCRDsByGroup lists CustomResourceDefinitions filtered by spec.group.
type CoreClient ¶
type CoreClient struct {
// contains filtered or unexported fields
}
CoreClient provides operations on core Kubernetes resources (pods, events).
func NewCoreClient ¶
func NewCoreClient() (*CoreClient, error)
NewCoreClient creates a new CoreClient using in-cluster config or kubeconfig.
func NewCoreClientFor ¶ added in v0.7.0
func NewCoreClientFor(clientset kubernetes.Interface) *CoreClient
NewCoreClientFor wraps an injected clientset, for tests and embedded use, mirroring NewWorkspaceClientFor.
func (*CoreClient) AnnotateNamespace ¶
func (c *CoreClient) AnnotateNamespace(ctx context.Context, name, key, value string) error
AnnotateNamespace sets or removes an annotation on a namespace. If value is empty, the annotation is removed.
func (*CoreClient) CreateWorkspaceEvent ¶
func (c *CoreClient) CreateWorkspaceEvent(ctx context.Context, namespace, workspaceName, action, actor, message string) error
CreateWorkspaceEvent creates a Kubernetes Event associated with a Workspace CR.
func (*CoreClient) GetPodLogs ¶
func (c *CoreClient) GetPodLogs(ctx context.Context, namespace, name, container string, tailLines int64) (string, error)
GetPodLogs returns the logs of a pod's container as a string.
func (*CoreClient) GetStatefulSet ¶
func (c *CoreClient) GetStatefulSet(ctx context.Context, namespace, name string) (interface{}, error)
GetStatefulSet returns a StatefulSet by name and namespace.
func (*CoreClient) ListEvents ¶
func (c *CoreClient) ListEvents(ctx context.Context, namespace, fieldSelector string) (*corev1.EventList, error)
ListEvents returns events for a specific object (by field selector).
func (*CoreClient) ListNamespaceEvents ¶
func (c *CoreClient) ListNamespaceEvents(ctx context.Context, namespace string) (*corev1.EventList, error)
ListNamespaceEvents returns all events in a namespace, optionally filtered.
func (*CoreClient) ListNamespaces ¶
func (c *CoreClient) ListNamespaces(ctx context.Context) (*corev1.NamespaceList, error)
ListNamespaces returns all namespaces in the cluster.
func (*CoreClient) ListPods ¶
func (c *CoreClient) ListPods(ctx context.Context, namespace, labelSelector string) (*corev1.PodList, error)
ListPods returns pods matching label selector in a namespace.
func (*CoreClient) ListWorkspaceEvents ¶
func (c *CoreClient) ListWorkspaceEvents(ctx context.Context, namespace, workspaceName string) (*corev1.EventList, error)
ListWorkspaceEvents returns events related to a specific workspace.
type Image ¶
type Image struct {
Name string
DisplayName string
Description string
Category string
Tags []string
Image string
DefaultPort int32
DefaultPath string
Icon string
DefaultArgs []string
DefaultEnv []ImageEnvVar
DefaultCredentials *ImageCredentials
Privileged bool
HomepageURL string
SourceURL string
ImageHomepageURL string
DefaultUser string
DefaultPassword string
DefaultCloudInit bool
DefaultUserData string
DefaultHomedir string
DefaultShell string
Links []ImageLink
ProxyConfig *ImageProxyConfig
DefaultUID *int64
DefaultInitContainers []ImageInitContainer
AdditionalPorts []ImagePort
// WorkspaceTypes lists the workspace types this image supports
// (container, vm, scratch). Empty means container-only.
WorkspaceTypes []string
// RemoteDesktop configuration for this image (Tier 1 transport).
RemoteDesktop *ImageRemoteDesktop
VMProfile string
PersistentRootDisk bool
PersistentRootDiskSize string
MemoryLimit string
MemoryRequest string
}
Image represents a parsed Image CR.
type ImageClient ¶
type ImageClient struct {
// contains filtered or unexported fields
}
ImageClient provides operations on Image custom resources.
func NewImageClient ¶
func NewImageClient() (*ImageClient, error)
NewImageClient creates a new ImageClient.
func NewImageClientFor ¶ added in v0.7.0
func NewImageClientFor(client dynamic.Interface) *ImageClient
func (*ImageClient) CreateImage ¶
func (c *ImageClient) CreateImage(ctx context.Context, name string, spec map[string]interface{}) (*unstructured.Unstructured, error)
CreateImage creates a new Image CR.
func (*ImageClient) DeleteImage ¶
func (c *ImageClient) DeleteImage(ctx context.Context, name string) error
DeleteImage deletes an Image CR.
func (*ImageClient) GetImageByRef ¶
GetImageByRef finds an Image CR whose spec.image matches the given reference.
func (*ImageClient) GetImageRaw ¶
func (c *ImageClient) GetImageRaw(ctx context.Context, name string) (*unstructured.Unstructured, error)
GetImageRaw returns the raw unstructured Image CR object.
func (*ImageClient) ListImages ¶
func (c *ImageClient) ListImages(ctx context.Context) ([]Image, error)
ListImages lists all Image CRs (cluster-scoped).
func (*ImageClient) UpdateImage ¶
func (c *ImageClient) UpdateImage(ctx context.Context, name string, spec map[string]interface{}) (*unstructured.Unstructured, error)
UpdateImage updates an existing Image CR.
type ImageCredentials ¶
ImageCredentials represents default login credentials for a workspace image.
type ImageEnvVar ¶
ImageEnvVar is an environment variable with optional placeholder support.
type ImageInitContainer ¶
type ImageInitContainer struct {
Name string
Image string
Command []string
Args []string
Env []ImageEnvVar
VolumeMounts []ImageVolumeMount
}
ImageInitContainer represents a simplified init container spec for Image CR defaults.
type ImageProxyConfig ¶
type ImageProxyConfig struct {
NeedsNoOpSW bool
WebSocketPaths []string
RewriteHostAbsolutePaths bool
CustomRequestHeaders map[string]string
InjectBaseTag bool
TLSInsecure bool
PreservePathPrefix bool
AudioPort int32
}
ImageProxyConfig describes proxy behavior for an image.
type ImageRemoteDesktop ¶ added in v0.5.0
ImageRemoteDesktop describes an in-guest remote desktop agent.
type ImageVolumeMount ¶
ImageVolumeMount represents a volume mount for an init container.
type MetricPoint ¶
type MetricsBuffer ¶
type MetricsBuffer struct {
// contains filtered or unexported fields
}
func NewMetricsBuffer ¶
func NewMetricsBuffer(client *MetricsClient, interval, maxAge time.Duration) *MetricsBuffer
func (*MetricsBuffer) Client ¶
func (b *MetricsBuffer) Client() *MetricsClient
func (*MetricsBuffer) EnsurePod ¶
func (b *MetricsBuffer) EnsurePod(ctx context.Context, namespace, name string, container string)
func (*MetricsBuffer) GetMetrics ¶
func (b *MetricsBuffer) GetMetrics(namespace, name string, window time.Duration) ([]MetricPoint, string)
func (*MetricsBuffer) Run ¶
func (b *MetricsBuffer) Run(ctx context.Context)
func (*MetricsBuffer) Stop ¶
func (b *MetricsBuffer) Stop()
type MetricsClient ¶
type MetricsClient struct {
// contains filtered or unexported fields
}
func NewMetricsClient ¶
func NewMetricsClient() (*MetricsClient, error)
func (*MetricsClient) GetPodMetrics ¶
func (c *MetricsClient) GetPodMetrics(ctx context.Context, namespace, name string) (*metricsv1beta1.PodMetrics, error)
func (*MetricsClient) GetPodMetricsSnapshot ¶
func (c *MetricsClient) GetPodMetricsSnapshot(ctx context.Context, namespace, name string) (*MetricsSnapshot, error)
func (*MetricsClient) IsAvailable ¶
func (c *MetricsClient) IsAvailable(ctx context.Context) bool
type MetricsSnapshot ¶
type PodDefault ¶
type PodDefault struct {
Name string
Namespace string
Desc string
Selector *metav1.LabelSelector
Env []PodDefaultEnvVar
VolumeMounts []PodDefaultVolumeMount
Volumes []map[string]interface{}
ServiceAccountName string
Annotations map[string]string
Labels map[string]string
}
PodDefault represents a parsed PodDefault CR.
type PodDefaultClient ¶
type PodDefaultClient struct {
// contains filtered or unexported fields
}
PodDefaultClient provides operations on PodDefault custom resources.
func NewPodDefaultClient ¶
func NewPodDefaultClient() (*PodDefaultClient, error)
NewPodDefaultClient creates a new PodDefaultClient.
func (*PodDefaultClient) GetMatchingPodDefaults ¶
func (c *PodDefaultClient) GetMatchingPodDefaults(ctx context.Context, namespace string, workspaceLabels map[string]string) ([]PodDefault, error)
GetMatchingPodDefaults returns PodDefaults in the given namespace whose selector matches the provided workspace labels. PodDefaults with no selector match all workspaces.
func (*PodDefaultClient) ListPodDefaults ¶
func (c *PodDefaultClient) ListPodDefaults(ctx context.Context, namespace string) ([]PodDefault, error)
ListPodDefaults lists all PodDefault CRs in a namespace.
type PodDefaultEnvVar ¶
PodDefaultEnvVar is an environment variable to inject.
type PodDefaultVolumeMount ¶
PodDefaultVolumeMount is a volume mount to inject.
type SSHKeyClient ¶ added in v0.4.0
type SSHKeyClient struct {
// contains filtered or unexported fields
}
SSHKeyClient provides operations on SshKey custom resources (users' SSH public keys stored in their personal namespace).
func NewSSHKeyClient ¶ added in v0.4.0
func NewSSHKeyClient() (*SSHKeyClient, error)
NewSSHKeyClient creates a new SSHKeyClient.
func (*SSHKeyClient) CreateSSHKey ¶ added in v0.4.0
func (c *SSHKeyClient) CreateSSHKey(ctx context.Context, sshKey *unstructured.Unstructured) (*unstructured.Unstructured, error)
CreateSSHKey creates a new SshKey CR.
func (*SSHKeyClient) DeleteSSHKey ¶ added in v0.4.0
func (c *SSHKeyClient) DeleteSSHKey(ctx context.Context, namespace, name string) error
DeleteSSHKey deletes an SshKey CR.
func (*SSHKeyClient) GetSSHKey ¶ added in v0.4.0
func (c *SSHKeyClient) GetSSHKey(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error)
GetSSHKey gets an SshKey CR by name.
func (*SSHKeyClient) ListSSHKeys ¶ added in v0.4.0
func (c *SSHKeyClient) ListSSHKeys(ctx context.Context, namespace string) (*unstructured.UnstructuredList, error)
ListSSHKeys lists all SshKey CRs in a namespace.
type WorkspaceClient ¶
type WorkspaceClient struct {
// contains filtered or unexported fields
}
WorkspaceClient provides operations on Workspace custom resources.
func NewWorkspaceClient ¶
func NewWorkspaceClient() (*WorkspaceClient, error)
NewWorkspaceClient creates a new WorkspaceClient.
func NewWorkspaceClientFor ¶ added in v0.6.0
func NewWorkspaceClientFor(dynamic dynamic.Interface) *WorkspaceClient
NewWorkspaceClientFor wraps an injected dynamic client, for tests and embedded use.
func (*WorkspaceClient) CreateWorkspace ¶
func (c *WorkspaceClient) CreateWorkspace(ctx context.Context, workspace *unstructured.Unstructured) (*unstructured.Unstructured, error)
CreateWorkspace creates a new workspace CR.
func (*WorkspaceClient) DeleteWorkspace ¶
func (c *WorkspaceClient) DeleteWorkspace(ctx context.Context, namespace, name string) error
DeleteWorkspace deletes a workspace CR.
func (*WorkspaceClient) GetInitialCredentialSecret ¶ added in v0.7.0
func (*WorkspaceClient) GetWorkspace ¶
func (c *WorkspaceClient) GetWorkspace(ctx context.Context, namespace, name string) (*unstructured.Unstructured, error)
GetWorkspace gets a workspace CR by name.
func (*WorkspaceClient) ListWorkspaces ¶
func (c *WorkspaceClient) ListWorkspaces(ctx context.Context, namespace string) (*unstructured.UnstructuredList, error)
ListWorkspaces lists all workspace CRs in a namespace.
func (*WorkspaceClient) UpdateWorkspace ¶
func (c *WorkspaceClient) UpdateWorkspace(ctx context.Context, workspace *unstructured.Unstructured) (*unstructured.Unstructured, error)
UpdateWorkspace updates an existing workspace CR.
func (*WorkspaceClient) WatchWorkspaces ¶ added in v0.6.0
func (c *WorkspaceClient) WatchWorkspaces(ctx context.Context, namespace string, opts metav1.ListOptions) (watch.Interface, error)
WatchWorkspaces opens a change stream over workspace CRs in a namespace. An empty namespace watches all namespaces (the `?namespace=_all` case). The caller must Stop the returned watcher; it also ends with ctx.