Documentation ¶
Overview ¶
Package api includes all types used to communicate between the various parts of the Kubernetes system.
Index ¶
- Constants
- func AccumulateUniquePorts(containers []Container, accumulator map[int]bool, extract func(*Port) int) errorList
- func AddExternalConversion(name string, fn ConversionFunc)
- func AddInternalConversion(name string, fn ConversionFunc)
- func AddKnownTypes(version string, types ...interface{})
- func Decode(data []byte) (interface{}, error)
- func DecodeInto(data []byte, obj interface{}) error
- func Encode(obj interface{}) (data []byte, err error)
- func ValidateManifest(manifest *ContainerManifest) []error
- func ValidatePod(pod *Pod) []error
- func ValidateReplicationController(controller *ReplicationController) []error
- func ValidateService(service *Service) []error
- type APIObject
- type Container
- type ContainerManifest
- type ConversionFunc
- type EmptyDirectory
- type Endpoints
- type EnvVar
- type Event
- type HTTPGetProbe
- type HostDirectory
- type JSONBase
- type LivenessProbe
- type Minion
- type MinionList
- type Pod
- type PodInfo
- type PodList
- type PodState
- type PodStatus
- type PodTemplate
- type Port
- type ReplicationController
- type ReplicationControllerList
- type ReplicationControllerState
- type ServerOp
- type ServerOpList
- type Service
- type ServiceList
- type Status
- type ValidationError
- type ValidationErrorEnum
- type Volume
- type VolumeMount
- type VolumeSource
- type WatchEvent
Constants ¶
const ( StatusSuccess = "success" StatusFailure = "failure" StatusWorking = "working" )
Values of Status.Status
Variables ¶
This section is empty.
Functions ¶
func AccumulateUniquePorts ¶
func AccumulateUniquePorts(containers []Container, accumulator map[int]bool, extract func(*Port) int) errorList
AccumulateUniquePorts runs an extraction function on each Port of each Container, accumulating the results and returning an error if any ports conflict.
func AddExternalConversion ¶
func AddExternalConversion(name string, fn ConversionFunc)
func AddInternalConversion ¶
func AddInternalConversion(name string, fn ConversionFunc)
func AddKnownTypes ¶
func AddKnownTypes(version string, types ...interface{})
AddKnownTypes registers the types of the arguments to the marshaller of the package api. Encode() refuses the object unless its type is registered with AddKnownTypes.
func Decode ¶
Decode converts a JSON string back into a pointer to an api object. Deduces the type based upon the Kind field (set by encode).
func DecodeInto ¶
DecodeInto parses a JSON string and stores it in obj. Returns an error if data.Kind is set and doesn't match the type of obj. Obj should be a pointer to an api type.
func Encode ¶
Encode turns the given api object into an appropriate JSON string. Will return an error if the object doesn't have an embedded JSONBase. Obj may be a pointer to a struct, or a struct. If a struct, a copy will be made so that the object's Kind field can be set. If a pointer, we change the Kind field, marshal, and then set the kind field back to "". Having to keep track of the kind field makes tests very annoying, so the rule is it's set only in wire format (json), not when in native format.
func ValidateManifest ¶
func ValidateManifest(manifest *ContainerManifest) []error
ValidateManifest tests that the specified ContainerManifest has valid data. This includes checking formatting and uniqueness. It also canonicalizes the structure by setting default values and implementing any backwards-compatibility tricks.
func ValidatePod ¶
Pod tests if required fields in the pod are set.
func ValidateReplicationController ¶
func ValidateReplicationController(controller *ReplicationController) []error
ValidateReplicationController tests if required fields in the replication controller are set.
func ValidateService ¶
ValidateService tests if required fields in the service are set.
Types ¶
type APIObject ¶
type APIObject struct {
Object interface{}
}
APIObject has appropriate encoder and decoder functions, such that on the wire, it's stored as a []byte, but in memory, the contained object is accessable as an interface{} via the Get() function. Only objects having a JSONBase may be stored via APIObject. The purpose of this is to allow an API object of type known only at runtime to be embedded within other API objects.
func (APIObject) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (*APIObject) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface.
type Container ¶
type Container struct { // Required: This must be a DNS_LABEL. Each container in a pod must // have a unique name. Name string `yaml:"name" json:"name"` // Required. Image string `yaml:"image" json:"image"` // Optional: Defaults to whatever is defined in the image. Command []string `yaml:"command,omitempty" json:"command,omitempty"` // Optional: Defaults to Docker's default. WorkingDir string `yaml:"workingDir,omitempty" json:"workingDir,omitempty"` Ports []Port `yaml:"ports,omitempty" json:"ports,omitempty"` Env []EnvVar `yaml:"env,omitempty" json:"env,omitempty"` // Optional: Defaults to unlimited. Memory int `yaml:"memory,omitempty" json:"memory,omitempty"` // Optional: Defaults to unlimited. CPU int `yaml:"cpu,omitempty" json:"cpu,omitempty"` VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty" json:"volumeMounts,omitempty"` LivenessProbe *LivenessProbe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty"` }
Container represents a single container that is expected to be run on the host.
type ContainerManifest ¶
type ContainerManifest struct { // Required: This must be a supported version string, such as "v1beta1". Version string `yaml:"version" json:"version"` // Required: This must be a DNS_SUBDOMAIN. // TODO: ID on Manifest is deprecated and will be removed in the future. ID string `yaml:"id" json:"id"` Volumes []Volume `yaml:"volumes" json:"volumes"` Containers []Container `yaml:"containers" json:"containers"` }
ContainerManifest corresponds to the Container Manifest format, documented at: https://developers.google.com/compute/docs/containers/container_vms#container_manifest This is used as the representation of Kubernetes workloads.
type ConversionFunc ¶
type ConversionFunc func(input interface{}) (output interface{}, err error)
type EmptyDirectory ¶
type EmptyDirectory struct{}
type Endpoints ¶
Endpoints is a collection of endpoints that implement the actual service, for example: Name: "mysql", Endpoints: ["10.10.1.1:1909", "10.10.2.2:8834"]
type EnvVar ¶
type EnvVar struct { // Required: This must be a C_IDENTIFIER. // Exactly one of the following must be set. If both are set, prefer Name. // DEPRECATED: EnvVar.Key will be removed in a future version of the API. Name string `yaml:"name" json:"name"` Key string `yaml:"key,omitempty" json:"key,omitempty"` // Optional: defaults to "". Value string `yaml:"value,omitempty" json:"value,omitempty"` }
EnvVar represents an environment variable present in a Container
type Event ¶
type Event struct { Event string `json:"event,omitempty"` Manifest *ContainerManifest `json:"manifest,omitempty"` Container *Container `json:"container,omitempty"` Timestamp int64 `json:"timestamp"` }
Event is the representation of an event logged to etcd backends
type HTTPGetProbe ¶
type HTTPGetProbe struct { // Path to access on the http server Path string `yaml:"path,omitempty" json:"path,omitempty"` // Name or number of the port to access on the container Port string `yaml:"port,omitempty" json:"port,omitempty"` // Host name to connect to. Optional, default: "localhost" Host string `yaml:"host,omitempty" json:"host,omitempty"` }
HTTPGetProbe describes a liveness probe based on HTTP Get requests.
type HostDirectory ¶
type HostDirectory struct {
Path string `yaml:"path" json:"path"`
}
Bare host directory volume.
type JSONBase ¶
type JSONBase struct { Kind string `json:"kind,omitempty" yaml:"kind,omitempty"` ID string `json:"id,omitempty" yaml:"id,omitempty"` CreationTimestamp string `json:"creationTimestamp,omitempty" yaml:"creationTimestamp,omitempty"` SelfLink string `json:"selfLink,omitempty" yaml:"selfLink,omitempty"` ResourceVersion uint64 `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty"` APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"` }
JSONBase is shared by all objects sent to, or returned from the client
func FindJSONBase ¶
FindJSONBase takes an arbitary api type, returns pointer to its JSONBase field. obj must be a pointer to an api type.
func FindJSONBaseRO ¶
FindJSONBaseRO takes an arbitary api type, return a copy of its JSONBase field. obj may be a pointer to an api type, or a non-pointer struct api type.
type LivenessProbe ¶
type LivenessProbe struct { // Type of liveness probe. Current legal values "http" Type string `yaml:"type,omitempty" json:"type,omitempty"` // HTTPGetProbe parameters, required if Type == 'http' HTTPGet *HTTPGetProbe `yaml:"httpGet,omitempty" json:"httpGet,omitempty"` // Length of time before health checking is activated. In seconds. InitialDelaySeconds int64 `yaml:"initialDelaySeconds,omitempty" json:"initialDelaySeconds,omitempty"` }
LivenessProbe describes a liveness probe to be examined to the container.
type Minion ¶
type Minion struct { JSONBase `json:",inline" yaml:",inline"` // Queried from cloud provider, if available. HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` }
Minion is a worker node in Kubernetenes. The name of the minion according to etcd is in JSONBase.ID.
type MinionList ¶
type MinionList struct { JSONBase `json:",inline" yaml:",inline"` Items []Minion `json:"minions,omitempty" yaml:"minions,omitempty"` }
MinionList is a list of minions.
type Pod ¶
type Pod struct { JSONBase `json:",inline" yaml:",inline"` Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"` CurrentState PodState `json:"currentState,omitempty" yaml:"currentState,omitempty"` }
Pod is a collection of containers, used as either input (create, update) or as output (list, get)
type PodInfo ¶
type PodInfo map[string]docker.Container
PodInfo contains one entry for every container with available info.
type PodList ¶
type PodList struct { JSONBase `json:",inline" yaml:",inline"` Items []Pod `json:"items" yaml:"items,omitempty"` }
PodList is a list of Pods.
type PodState ¶
type PodState struct { Manifest ContainerManifest `json:"manifest,omitempty" yaml:"manifest,omitempty"` Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"` Host string `json:"host,omitempty" yaml:"host,omitempty"` HostIP string `json:"hostIP,omitempty" yaml:"hostIP,omitempty"` PodIP string `json:"podIP,omitempty" yaml:"podIP,omitempty"` // The key of this map is the *name* of the container within the manifest; it has one // entry per container in the manifest. The value of this map is currently the output // of `docker inspect`. This output format is *not* final and should not be relied // upon. // TODO: Make real decisions about what our info should look like. Info PodInfo `json:"info,omitempty" yaml:"info,omitempty"` }
PodState is the state of a pod, used as either input (desired state) or output (current state)
type PodTemplate ¶
type PodTemplate struct { DesiredState PodState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"` Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` }
PodTemplate holds the information used for creating pods
type Port ¶
type Port struct { // Optional: If specified, this must be a DNS_LABEL. Each named port // in a pod must have a unique name. Name string `yaml:"name,omitempty" json:"name,omitempty"` // Optional: Defaults to ContainerPort. If specified, this must be a // valid port number, 0 < x < 65536. HostPort int `yaml:"hostPort,omitempty" json:"hostPort,omitempty"` // Required: This must be a valid port number, 0 < x < 65536. ContainerPort int `yaml:"containerPort" json:"containerPort"` // Optional: Defaults to "TCP". Protocol string `yaml:"protocol,omitempty" json:"protocol,omitempty"` // Optional: What host IP to bind the external port to. HostIP string `yaml:"hostIP,omitempty" json:"hostIP,omitempty"` }
Port represents a network port in a single container
type ReplicationController ¶
type ReplicationController struct { JSONBase `json:",inline" yaml:",inline"` DesiredState ReplicationControllerState `json:"desiredState,omitempty" yaml:"desiredState,omitempty"` Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` }
ReplicationController represents the configuration of a replication controller
type ReplicationControllerList ¶
type ReplicationControllerList struct { JSONBase `json:",inline" yaml:",inline"` Items []ReplicationController `json:"items,omitempty" yaml:"items,omitempty"` }
ReplicationControllerList is a collection of replication controllers.
type ReplicationControllerState ¶
type ReplicationControllerState struct { Replicas int `json:"replicas" yaml:"replicas"` ReplicaSelector map[string]string `json:"replicaSelector,omitempty" yaml:"replicaSelector,omitempty"` PodTemplate PodTemplate `json:"podTemplate,omitempty" yaml:"podTemplate,omitempty"` }
ReplicationControllerState is the state of a replication controller, either input (create, update) or as output (list, get)
type ServerOp ¶
type ServerOp struct {
JSONBase `yaml:",inline" json:",inline"`
}
ServerOp is an operation delivered to API clients.
type ServerOpList ¶
type ServerOpList struct { JSONBase `yaml:",inline" json:",inline"` Items []ServerOp `yaml:"items,omitempty" json:"items,omitempty"` }
ServerOpList is a list of operations, as delivered to API clients.
type Service ¶
type Service struct { JSONBase `json:",inline" yaml:",inline"` Port int `json:"port,omitempty" yaml:"port,omitempty"` // This service's labels. Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"` // This service will route traffic to pods having labels matching this selector. Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"` CreateExternalLoadBalancer bool `json:"createExternalLoadBalancer,omitempty" yaml:"createExternalLoadBalancer,omitempty"` // ContainerPort is the name of the port on the container to direct traffic to. // Optional, if unspecified use the first port on the container. ContainerPort util.IntOrString `json:"containerPort,omitempty" yaml:"containerPort,omitempty"` }
Service is a named abstraction of software service (for example, mysql) consisting of local port (for example 3306) that the proxy listens on, and the selector that determines which pods will answer requests sent through the proxy.
type ServiceList ¶
type ServiceList struct { JSONBase `json:",inline" yaml:",inline"` Items []Service `json:"items" yaml:"items"` }
ServiceList holds a list of services
type Status ¶
type Status struct { JSONBase `json:",inline" yaml:",inline"` // One of: "success", "failure", "working" (for operations not yet completed) // TODO: if "working", include an operation identifier so final status can be // checked. Status string `json:"status,omitempty" yaml:"status,omitempty"` // Details about the status. May be an error description or an // operation number for later polling. Details string `json:"details,omitempty" yaml:"details,omitempty"` // Suggested HTTP return code for this status, 0 if not set. Code int `json:"code,omitempty" yaml:"code,omitempty"` }
Status is a return value for calls that don't return other objects. Arguably, this could go in apiserver, but I'm including it here so clients needn't import both.
type ValidationError ¶
type ValidationError struct { ErrorType ValidationErrorEnum ErrorField string BadValue interface{} }
ValidationError is an implementation of the 'error' interface, which represents an error of validation.
func (ValidationError) Error ¶
func (v ValidationError) Error() string
type ValidationErrorEnum ¶
type ValidationErrorEnum string
ValidationErrorEnum is a type of validation error.
const ( ErrTypeInvalid ValidationErrorEnum = "invalid value" ErrTypeNotSupported ValidationErrorEnum = "unsupported value" ErrTypeDuplicate ValidationErrorEnum = "duplicate value" ErrTypeNotFound ValidationErrorEnum = "not found" )
These are known errors of validation.
type Volume ¶
type Volume struct { // Required: This must be a DNS_LABEL. Each volume in a pod must have // a unique name. Name string `yaml:"name" json:"name"` // Source represents the location and type of a volume to mount. // This is optional for now. If not specified, the Volume is implied to be an EmptyDir. // This implied behavior is deprecated and will be removed in a future version. Source *VolumeSource `yaml:"source" json:"source"` }
Volume represents a named volume in a pod that may be accessed by any containers in the pod.
type VolumeMount ¶
type VolumeMount struct { // Required: This must match the Name of a Volume [above]. Name string `yaml:"name" json:"name"` // Optional: Defaults to false (read-write). ReadOnly bool `yaml:"readOnly,omitempty" json:"readOnly,omitempty"` // Required. // Exactly one of the following must be set. If both are set, prefer MountPath. // DEPRECATED: Path will be removed in a future version of the API. MountPath string `yaml:"mountPath,omitempty" json:"mountPath,omitempty"` Path string `yaml:"path,omitempty" json:"path,omitempty"` // One of: "LOCAL" (local volume) or "HOST" (external mount from the host). Default: LOCAL. // DEPRECATED: MountType will be removed in a future version of the API. MountType string `yaml:"mountType,omitempty" json:"mountType,omitempty"` }
VolumeMount describes a mounting of a Volume within a container
type VolumeSource ¶
type VolumeSource struct { // Only one of the following sources may be specified // HostDirectory represents a pre-existing directory on the host machine that is directly // exposed to the container. This is generally used for system agents or other privileged // things that are allowed to see the host machine. Most containers will NOT need this. // TODO(jonesdl) We need to restrict who can use host directory mounts and // who can/can not mount host directories as read/write. HostDirectory *HostDirectory `yaml:"hostDir" json:"hostDir"` // EmptyDirectory represents a temporary directory that shares a pod's lifetime. EmptyDirectory *EmptyDirectory `yaml:"emptyDir" json:"emptyDir"` }
type WatchEvent ¶
type WatchEvent struct { // The type of the watch event; added, modified, or deleted. Type watch.EventType // For added or modified objects, this is the new object; for deleted objects, // it's the state of the object immediately prior to its deletion. Object APIObject }
WatchEvent objects are streamed from the api server in response to a watch request.