kube

package
v2.0.0-beta.3+incompat... Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2018 License: Apache-2.0 Imports: 50 Imported by: 1

Documentation

Index

Constants

View Source
const (
	KubernetesAdminUser = "kubernetes-admin"

	DefaultStoragePrefix = "/supergiant/kubes/"
)
View Source
const (
	DefaultCertsPath = "/etc/kubernets/ssl"
)

Default variables for certs.

Variables

View Source
var (
	ErrInvalidRunner = errors.New("provided invalid runner")

	ErrEmptyName = errors.New("empty name")
)

Certs specific errors.

Functions

func NewConfigFor

func NewConfigFor(k *model.Kube) (*rest.Config, error)

Types

type Bundle

type Bundle struct {
	Cert []byte
	Key  []byte
}

Bundler represents a key/certificate pair.

type Certs

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

Certs handles keys and certificates for kube components.

func NewCerts

func NewCerts(path string, r runner.Runner) (*Certs, error)

NewCerts returns a configured Certs.

func (*Certs) BundleFor

func (c *Certs) BundleFor(ctx context.Context, name string) (*Bundle, error)

BundleFor returns keys Bundle for a provided name of the kube component.

type ChartGetter

type ChartGetter interface {
	GetChart(ctx context.Context, repoName, chartName, chartVersion string) (*chart.Chart, error)
}

ChartGetter interface is a wrapper for GetChart function.

type Handler

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

Handler is a http controller for a kube entity.

func NewHandler

func NewHandler(svc Interface, accountService accountGetter, provisioner nodeProvisioner, repo storage.Interface) *Handler

NewHandler constructs a Handler for kubes.

func (*Handler) Register

func (h *Handler) Register(r *mux.Router)

Register adds kube handlers to a router.

type Interface

type Interface interface {
	Create(ctx context.Context, k *model.Kube) error
	Get(ctx context.Context, name string) (*model.Kube, error)
	ListAll(ctx context.Context) ([]model.Kube, error)
	Delete(ctx context.Context, name string) error
	KubeConfigFor(ctx context.Context, kname, user string) ([]byte, error)
	ListKubeResources(ctx context.Context, kname string) ([]byte, error)
	GetKubeResources(ctx context.Context, kname, resource, ns, name string) ([]byte, error)
	GetCerts(ctx context.Context, kname, cname string) (*Bundle, error)
	InstallRelease(ctx context.Context, kname string, rls *ReleaseInput) (*release.Release, error)
	ListReleases(ctx context.Context, kname, ns, offset string, limit int) ([]*model.ReleaseInfo, error)
	DeleteRelease(ctx context.Context, kname, rlsName string, purge bool) (*model.ReleaseInfo, error)
}

Interface represents an interface for a kube service.

type K8SServices

type K8SServices struct {
	Kind       string `json:"kind"`
	APIVersion string `json:"apiVersion"`
	Metadata   struct {
		SelfLink        string `json:"selfLink"`
		ResourceVersion string `json:"resourceVersion"`
	} `json:"metadata"`
	Items []struct {
		Metadata struct {
			Name              string    `json:"name"`
			Namespace         string    `json:"namespace"`
			SelfLink          string    `json:"selfLink"`
			UID               string    `json:"uid"`
			ResourceVersion   string    `json:"resourceVersion"`
			CreationTimestamp time.Time `json:"creationTimestamp"`
			Labels            struct {
				OperatedAlertmanager string `json:"operated-alertmanager"`
			} `json:"labels"`
		} `json:"metadata"`
		Spec struct {
			Ports []struct {
				Name     string `json:"name"`
				Protocol string `json:"protocol"`
				Port     int    `json:"port"`
			} `json:"ports"`
			Selector struct {
				App string `json:"app"`
			} `json:"selector"`
			ClusterIP       string `json:"clusterIP"`
			Type            string `json:"type"`
			SessionAffinity string `json:"sessionAffinity"`
		} `json:"spec"`
		Status struct {
			LoadBalancer struct {
			} `json:"loadBalancer"`
		} `json:"status"`
	} `json:"items"`
}

type MetricResponse

type MetricResponse struct {
	Status string `json:"status"`
	Data   struct {
		ResultType string `json:"resultType"`
		Result     []struct {
			Metric map[string]string `json:"metric"`
			Value  []interface{}     `json:"value"`
		} `json:"result"`
	} `json:"data"`
}

type ReleaseInput

type ReleaseInput struct {
	Name         string `json:"name"`
	Namespace    string `json:"namespace"`
	ChartName    string `json:"chartName" valid:"required"`
	ChartVersion string `json:"chartVersion"`
	RepoName     string `json:"repoName" valid:"required"`
	Values       string `json:"values"`
}

type ServerResourceGetter

type ServerResourceGetter interface {
	ServerResources() ([]*metav1.APIResourceList, error)
}

type Service

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

Service manages kubernetes clusters.

func NewService

func NewService(prefix string, s storage.Interface, chrtGetter ChartGetter) *Service

NewService constructs a Service.

func (*Service) Create

func (s *Service) Create(ctx context.Context, k *model.Kube) error

Create and stores a kube in the provided storage.

func (*Service) Delete

func (s *Service) Delete(ctx context.Context, kubeID string) error

Delete deletes a kube with a specified name.

func (*Service) DeleteRelease

func (s *Service) DeleteRelease(ctx context.Context, kubeID, rlsName string, purge bool) (*model.ReleaseInfo, error)

func (*Service) Get

func (s *Service) Get(ctx context.Context, kubeID string) (*model.Kube, error)

Get returns a kube with a specified name.

func (*Service) GetCerts

func (s *Service) GetCerts(ctx context.Context, kname, cname string) (*Bundle, error)

GetCerts returns a keys bundle for provided component name. TODO: do we need this?

func (*Service) GetKubeResources

func (s *Service) GetKubeResources(ctx context.Context, kubeID, resource, ns, name string) ([]byte, error)

GetKubeResources returns raw representation of the kubernetes resources.

func (*Service) InstallRelease

func (s *Service) InstallRelease(ctx context.Context, kubeID string, rls *ReleaseInput) (*release.Release, error)

func (*Service) KubeConfigFor

func (s *Service) KubeConfigFor(ctx context.Context, kubeID, user string) ([]byte, error)

func (*Service) ListAll

func (s *Service) ListAll(ctx context.Context) ([]model.Kube, error)

ListAll returns all kubes.

func (*Service) ListKubeResources

func (s *Service) ListKubeResources(ctx context.Context, kubeID string) ([]byte, error)

ListKubeResources returns raw representation of the supported kubernetes resources.

func (*Service) ListReleases

func (s *Service) ListReleases(ctx context.Context, kubeID, namespace, offset string, limit int) ([]*model.ReleaseInfo, error)

type ServiceProxy

type ServiceProxy struct {
	Name     string `json:"name"`
	Type     string `json:"type"`
	SelfLink string `json:"selfLink"`
}

Jump to

Keyboard shortcuts

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