package kube

import "github.com/oslokommune/okctl/pkg/kube"

Package kube implements a kubernetes client Parts of this file have been stolen from: - https://github.com/helm/helm/blob/master/pkg/kube/wait.go

Index

Variables

var ErrClusterNotFound = errors.New("cluster not found")

ErrClusterNotFound represents the specified cluster is missing

Types

type Applier

type Applier struct {
	Fn          ApplyFn
	Description string
}

Applier wraps the function to be applied with a brief description

type ApplyFn

type ApplyFn func(clientSet kubernetes.Interface, config *rest.Config) (interface{}, error)

ApplyFn defines the signature of a function that applies some operation to the kubernetes cluster

type ClientSetProvider

type ClientSetProvider interface {
	Get() (*kubernetes.Clientset, *rest.Config, error)
}

ClientSetProvider defines how a Kubernetes clientset may be retrieved

func NewFromEKSCluster

func NewFromEKSCluster(clusterName, region string, provider v1alpha1.CloudProvider, auth awsauth.Authenticator) ClientSetProvider

NewFromEKSCluster returns a client set provider that uses a EKS cluster description to build the client set

func NewFromKubeConfig

func NewFromKubeConfig(kubeConfigPath string) ClientSetProvider

NewFromKubeConfig returns a client set provider that uses a kubeconfig to build the client set

type Kube

type Kube struct {
	Provider   ClientSetProvider
	ClientSet  *kubernetes.Clientset
	RestConfig *rest.Config
	Ctx        context.Context
	Log        *logrus.Logger
}

Kube contains state for communicating with a kubernetes cluster

func New

func New(provider ClientSetProvider) (*Kube, error)

New returns an initialised kubernetes client

func (*Kube) Apply

func (k *Kube) Apply(fns ...Applier) ([]interface{}, error)

Apply all the functions to the cluster

func (*Kube) Debug

func (k *Kube) Debug(namespace string) (map[string][]string, error)

Debug a namespace

func (*Kube) Watch

func (k *Kube) Watch(resources []interface{}, timeout time.Duration) error

Watch a set of resources

func (*Kube) WatchDeployment

func (k *Kube) WatchDeployment(deployment *appsv1.Deployment, timeout time.Duration) error

WatchDeployment and wait until it is ready or we hit the timeout most of this code, together with deploymentReady is taken from: - https://github.com/helm/helm

Luckily we have control over the types of resources we want to watch, so we can simplify a little.

func (*Kube) WithLogger

func (k *Kube) WithLogger(log *logrus.Logger) *Kube

WithLogger sets a logger

type Kuber

type Kuber interface {
	Apply(fn Applier, fns ...Applier)
}

Kuber provides the methods that are available by a concrete implementation

Source Files

errors.go kube.go

Directories

PathSynopsis
pkg/kube/attachPackage attach knows how to interact with a running pod
pkg/kube/externalsecret
pkg/kube/externalsecret/api
pkg/kube/externalsecret/api/types
pkg/kube/externalsecret/api/types/v1nolint
pkg/kube/externalsecret/clientset
pkg/kube/externalsecret/clientset/v1nolint
pkg/kube/forwardPackage forward is based on, with some modifications here and there: - https://github.com/gianarb/kube-port-forward
pkg/kube/manifests
pkg/kube/manifests/awsnodePackage awsnode performs operations on the aws-node daemonset
pkg/kube/manifests/configmapPackage configmap provides a configmap creator and applier
pkg/kube/manifests/echoserverPackage echoserver provides a simple echoserver
pkg/kube/manifests/externaldnsPackage externaldns provides kubernetes manifests for deploy external dns
pkg/kube/manifests/externalsecretPackage externalsecret implements a manifest builder and applyer
pkg/kube/manifests/namespacePackage namespace provides a namespace creator and applier
pkg/kube/manifests/pgbouncerPackage pgbouncer knows how to deploy PgBouncer to the Kubernetes cluster: - https://www.pgbouncer.org
pkg/kube/manifests/scalePackage scale knows how to scale a deployment in Kubernetes
pkg/kube/manifests/securitygrouppolicyPackage securitygrouppolicy provides a convenient way of interacting with the SecurityGroupPolicy CRD
pkg/kube/manifests/storageclassPackage storageclass provides a storage class creator and applier
pkg/kube/podPackage pod provides some reusable functions for interacting with the kubernetes pod API
pkg/kube/securitygrouppolicy
pkg/kube/securitygrouppolicy/api
pkg/kube/securitygrouppolicy/api/types
pkg/kube/securitygrouppolicy/api/types/v1beta1Package v1beta1 implements the types for security group policy provided by AWS EKS CRD nolint: gochecknoglobals
pkg/kube/securitygrouppolicy/clientset
pkg/kube/securitygrouppolicy/clientset/v1beta1Package v1beta1 implements the client for the AWS EKS CRD SecurityGroupPolicy
Version
v0.0.106 (latest)
Published
Oct 21, 2022
Platform
linux/amd64
Imports
24 packages
Last checked
5 days ago

Tools for package owners.