Version: v3.0.0 Latest Latest

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

Go to latest
Published: Oct 16, 2020 License: Apache-2.0 Imports: 21 Imported by: 0



Package client provides an implementation of a restricted subset of kubernetes API client



This section is empty.


View Source
var (

	// ErrReadNamespace is returned when the names could not be read from service account
	ErrReadNamespace = errors.New("Could not read namespace from service account secret")
	// DefaultImage is default micro image
	DefaultImage = "micro/go-micro"
	// DefaultNamespace is the default k8s namespace
	DefaultNamespace = "default"
	// DefaultPort to expose on a service
	DefaultPort = 8080


func CertPoolFromFile

func CertPoolFromFile(filename string) (*x509.CertPool, error)

CertPoolFromFile returns an x509.CertPool containing the certificates in the given PEM-encoded file. Returns an error if the file could not be read, a certificate could not be parsed, or if the file does not contain any certificates

func CertsFromPEM

func CertsFromPEM(pemCerts []byte) ([]*x509.Certificate, error)

CertsFromPEM returns the x509.Certificates contained in the given PEM-encoded byte array Returns an error if a certificate could not be parsed, or if the data does not contain any certificates

func Format

func Format(v string) string

Format is used to format a string value into a k8s valid name

func NewClusterClient

func NewClusterClient() *client

NewClusterClient creates a Kubernetes client for use from within a k8s pod.

func NewLocalClient

func NewLocalClient(hosts ...string) *client

NewLocalClient returns a client that can be used with `kubectl proxy`


type Client

type Client interface {
	// Create creates new API resource
	Create(*Resource, ...CreateOption) error
	// Get queries API resources
	Get(*Resource, ...GetOption) error
	// Update patches existing API object
	Update(*Resource, ...UpdateOption) error
	// Delete deletes API resource
	Delete(*Resource, ...DeleteOption) error
	// List lists API resources
	List(*Resource, ...ListOption) error
	// Log gets log for a pod
	Log(*Resource, ...LogOption) (io.ReadCloser, error)
	// Watch for events
	Watch(*Resource, ...WatchOption) (Watcher, error)

Kubernetes client

type Condition

type Condition struct {
	Started string `json:"startedAt,omitempty"`
	Reason  string `json:"reason,omitempty"`
	Message string `json:"message,omitempty"`

type Container

type Container struct {
	Name           string                `json:"name"`
	Image          string                `json:"image"`
	Env            []EnvVar              `json:"env,omitempty"`
	Command        []string              `json:"command,omitempty"`
	Args           []string              `json:"args,omitempty"`
	Ports          []ContainerPort       `json:"ports,omitempty"`
	ReadinessProbe *Probe                `json:"readinessProbe,omitempty"`
	Resources      *ResourceRequirements `json:"resources,omitempty"`
	VolumeMounts   []VolumeMount         `json:"volumeMounts,omitempty"`

Container defined container runtime values

type ContainerPort

type ContainerPort struct {
	Name          string `json:"name,omitempty"`
	HostPort      int    `json:"hostPort,omitempty"`
	ContainerPort int    `json:"containerPort"`
	Protocol      string `json:"protocol,omitempty"`


type ContainerState

type ContainerState struct {
	Running    *Condition `json:"running"`
	Terminated *Condition `json:"terminated"`
	Waiting    *Condition `json:"waiting"`

type ContainerStatus

type ContainerStatus struct {
	State ContainerState `json:"state"`

type CreateOption

type CreateOption func(*CreateOptions)

func CreateNamespace

func CreateNamespace(ns string) CreateOption

CreateNamespace sets the namespace for creating a resource

type CreateOptions

type CreateOptions struct {
	Namespace string

type DeleteOption

type DeleteOption func(*DeleteOptions)

func DeleteNamespace

func DeleteNamespace(ns string) DeleteOption

DeleteNamespace sets the namespace for deleting a resource

type DeleteOptions

type DeleteOptions struct {
	Namespace string

type Deployment

type Deployment struct {
	Metadata *Metadata         `json:"metadata"`
	Spec     *DeploymentSpec   `json:"spec,omitempty"`
	Status   *DeploymentStatus `json:"status,omitempty"`

Deployment is Kubernetes deployment

type DeploymentCondition

type DeploymentCondition struct {
	LastUpdateTime string `json:"lastUpdateTime"`
	Type           string `json:"type"`
	Reason         string `json:"reason,omitempty"`
	Message        string `json:"message,omitempty"`

DeploymentCondition describes the state of deployment

type DeploymentList

type DeploymentList struct {
	Items []Deployment `json:"items"`


type DeploymentSpec

type DeploymentSpec struct {
	Replicas int            `json:"replicas,omitempty"`
	Selector *LabelSelector `json:"selector"`
	Template *Template      `json:"template,omitempty"`

DeploymentSpec defines micro deployment spec

type DeploymentStatus

type DeploymentStatus struct {
	Replicas            int                   `json:"replicas,omitempty"`
	UpdatedReplicas     int                   `json:"updatedReplicas,omitempty"`
	ReadyReplicas       int                   `json:"readyReplicas,omitempty"`
	AvailableReplicas   int                   `json:"availableReplicas,omitempty"`
	UnavailableReplicas int                   `json:"unavailableReplicas,omitempty"`
	Conditions          []DeploymentCondition `json:"conditions,omitempty"`

DeploymentStatus is returned when querying deployment

type EnvVar

type EnvVar struct {
	Name      string        `json:"name"`
	Value     string        `json:"value,omitempty"`
	ValueFrom *EnvVarSource `json:"valueFrom,omitempty"`

EnvVar is environment variable

type EnvVarSource

type EnvVarSource struct {
	SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty"`

EnvVarSource represents a source for the value of an EnvVar.

type Event

type Event struct {
	Type   EventType       `json:"type"`
	Object json.RawMessage `json:"object"`

Event represents a single event to a watched resource.

type EventType

type EventType string

EventType defines the possible types of events.

const (
	// EventTypes used
	Added    EventType = "ADDED"
	Modified EventType = "MODIFIED"
	Deleted  EventType = "DELETED"
	Error    EventType = "ERROR"

type GetOption

type GetOption func(*GetOptions)

func GetLabels

func GetLabels(ls map[string]string) GetOption

GetLabels sets the labels for when getting a resource

func GetNamespace

func GetNamespace(ns string) GetOption

GetNamespace sets the namespace for getting a resource

type GetOptions

type GetOptions struct {
	Namespace string
	Labels    map[string]string

type ImagePullSecret

type ImagePullSecret struct {
	Name string `json:"name"`


type LabelSelector

type LabelSelector struct {
	MatchLabels map[string]string `json:"matchLabels,omitempty"`

LabelSelector is a label query over a set of resources NOTE: we do not support MatchExpressions at the moment

type ListOption

type ListOption func(*ListOptions)

func ListNamespace

func ListNamespace(ns string) ListOption

ListNamespace sets the namespace for listing resources

type ListOptions

type ListOptions struct {
	Namespace string

type LoadBalancerIngress

type LoadBalancerIngress struct {
	IP       string `json:"ip,omitempty"`
	Hostname string `json:"hostname,omitempty"`

type LoadBalancerStatus

type LoadBalancerStatus struct {
	Ingress []LoadBalancerIngress `json:"ingress,omitempty"`

type LogOption

type LogOption func(*LogOptions)

func LogNamespace

func LogNamespace(ns string) LogOption

LogNamespace sets the namespace for logging a resource

func LogParams

func LogParams(p map[string]string) LogOption

LogParams provides additional params for logs

type LogOptions

type LogOptions struct {
	Namespace string
	Params    map[string]string

type Metadata

type Metadata struct {
	Name        string            `json:"name,omitempty"`
	Namespace   string            `json:"namespace,omitempty"`
	Version     string            `json:"version,omitempty"`
	Labels      map[string]string `json:"labels,omitempty"`
	Annotations map[string]string `json:"annotations,omitempty"`

Metadata defines api object metadata

type Namespace

type Namespace struct {
	Metadata *Metadata `json:"metadata,omitempty"`

Namespace is a Kubernetes Namespace

type NamespaceList

type NamespaceList struct {
	Items []Namespace `json:"items"`


type NetworkPolicy

type NetworkPolicy struct {
	AllowedLabels map[string]string `json:"allowedLabels,omitempty"`
	Metadata      *Metadata         `json:"metadata,omitempty"`

NetworkPolicy defines label-based filtering for network ingress

type PersistentVolumeClaimVolumeSource

type PersistentVolumeClaimVolumeSource struct {
	ClaimName string `json:"claimName"`

PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace

type Pod

type Pod struct {
	Metadata *Metadata  `json:"metadata"`
	Spec     *PodSpec   `json:"spec,omitempty"`
	Status   *PodStatus `json:"status"`

Pod is the top level item for a pod

type PodCondition

type PodCondition struct {
	Type    string `json:"type"`
	Reason  string `json:"reason,omitempty"`
	Message string `json:"message,omitempty"`

PodCondition describes the state of pod

type PodList

type PodList struct {
	Items []Pod `json:"items"`


type PodSpec

type PodSpec struct {
	Containers         []Container `json:"containers"`
	ServiceAccountName string      `json:"serviceAccountName"`
	Volumes            []Volume    `json:"volumes"`

PodSpec is a pod

type PodStatus

type PodStatus struct {
	Conditions []PodCondition    `json:"conditions,omitempty"`
	Containers []ContainerStatus `json:"containerStatuses"`
	PodIP      string            `json:"podIP"`
	Phase      string            `json:"phase"`
	Reason     string            `json:"reason"`


type Probe

type Probe struct {
	TCPSocket           *TCPSocketAction `json:"tcpSocket,omitempty"`
	PeriodSeconds       int              `json:"periodSeconds"`
	InitialDelaySeconds int              `json:"initialDelaySeconds"`

Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.

type Resource

type Resource struct {
	Name  string
	Kind  string
	Value interface{}

Resource is API resource

func NewDeployment

func NewDeployment(s *runtime.Service, opts *runtime.CreateOptions) *Resource

NewDeployment returns default micro kubernetes deployment definition

func NewService

func NewService(s *runtime.Service, opts *runtime.CreateOptions) *Resource

NewService returns default micro kubernetes service definition

type ResourceLimits

type ResourceLimits struct {
	Memory           string `json:"memory,omitempty"`
	CPU              string `json:"cpu,omitempty"`
	EphemeralStorage string `json:"ephemeral-storage,omitempty"`

ResourceLimits describes the limits for a service

type ResourceQuota

type ResourceQuota struct {
	Requests *ResourceLimits `json:"requests,omitempty"`
	Limits   *ResourceLimits `json:"limits,omitempty"`
	Metadata *Metadata       `json:"metadata,omitempty"`

ResourceQuota defines resource limits for a namespace

type ResourceRequirements

type ResourceRequirements struct {
	Limits   *ResourceLimits `json:"limits,omitempty"`
	Requests *ResourceLimits `json:"requests,omitempty"`

ResourceRequirements describes the compute resource requirements.

type Secret

type Secret struct {
	Type     string            `json:"type,omitempty"`
	Data     map[string]string `json:"data"`
	Metadata *Metadata         `json:"metadata,omitempty"`


type SecretKeySelector

type SecretKeySelector struct {
	Key      string `json:"key"`
	Name     string `json:"name"`
	Optional bool   `json:"optional,omitempty"`

SecretKeySelector selects a key of a Secret.

type Service

type Service struct {
	Metadata *Metadata      `json:"metadata"`
	Spec     *ServiceSpec   `json:"spec,omitempty"`
	Status   *ServiceStatus `json:"status,omitempty"`

Service is kubernetes service

type ServiceAccount

type ServiceAccount struct {
	Metadata         *Metadata         `json:"metadata,omitempty"`
	ImagePullSecrets []ImagePullSecret `json:"imagePullSecrets,omitempty"`


type ServiceList

type ServiceList struct {
	Items []Service `json:"items"`


type ServicePort

type ServicePort struct {
	Name     string `json:"name,omitempty"`
	Port     int    `json:"port"`
	Protocol string `json:"protocol,omitempty"`

ServicePort configures service ports

type ServiceSpec

type ServiceSpec struct {
	ClusterIP string            `json:"clusterIP"`
	Type      string            `json:"type,omitempty"`
	Selector  map[string]string `json:"selector,omitempty"`
	Ports     []ServicePort     `json:"ports,omitempty"`

ServiceSpec provides service configuration

type ServiceStatus

type ServiceStatus struct {
	LoadBalancer LoadBalancerStatus `json:"loadBalancer,omitempty"`


type TCPSocketAction

type TCPSocketAction struct {
	Host string      `json:"host,omitempty"`
	Port interface{} `json:"port,omitempty"`

TCPSocketAction describes an action based on opening a socket

type Template

type Template struct {
	Metadata *Metadata `json:"metadata,omitempty"`
	PodSpec  *PodSpec  `json:"spec,omitempty"`

Template is micro deployment template

type UpdateOption

type UpdateOption func(*UpdateOptions)

func UpdateNamespace

func UpdateNamespace(ns string) UpdateOption

UpdateNamespace sets the namespace for updating a resource

type UpdateOptions

type UpdateOptions struct {
	Namespace string

type Volume

type Volume struct {
	Name                  string                            `json:"name"`
	PersistentVolumeClaim PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty"`

Volume describes a volume which can be mounted to a pod

type VolumeMount

type VolumeMount struct {
	Name      string `json:"name"`
	MountPath string `json:"mountPath"`

VolumeMount describes a mounting of a Volume within a container.

type WatchOption

type WatchOption func(*WatchOptions)

func WatchNamespace

func WatchNamespace(ns string) WatchOption

WatchNamespace sets the namespace for watching a resource

func WatchParams

func WatchParams(p map[string]string) WatchOption

WatchParams used for watch params

type WatchOptions

type WatchOptions struct {
	Namespace string
	Params    map[string]string

type Watcher

type Watcher interface {
	// A channel of events
	Chan() <-chan Event
	// Stop the watcher

Watcher is used to watch for events

Jump to

Keyboard shortcuts

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