| /* |
| Copyright 2015 The Kubernetes Authors All rights reserved. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| // Package api contains the Kubernetes v1 API types. |
| package api |
| |
| // The comments for the structs and fields can be used from go-resful to |
| // generate Swagger API documentation for its models. Please read this PR for more |
| // information on the implementation: https://github.com/emicklei/go-restful/pull/215 |
| // |
| // TODOs are ignored from the parser. (e.g. TODO(andronat):... || TODO:...) iff |
| // are on one line! For multiple line or blocks that you want to ignore use ---. |
| // Any context after a --- is ignored and not exported to the SwaggerAPI. |
| // |
| // The aforementioned methods can be generated by hack/update-generated-swagger-docs.sh |
| |
| // Common string formats |
| // --------------------- |
| // Many fields in this API have formatting requirements. The commonly used |
| // formats are defined here. |
| // |
| // C_IDENTIFIER: This is a string that conforms to the definition of an "identifier" |
| // in the C language. This is captured by the following regex: |
| // [A-Za-z_][A-Za-z0-9_]* |
| // This defines the format, but not the length restriction, which should be |
| // specified at the definition of any field of this type. |
| // |
| // DNS_LABEL: This is a string, no more than 63 characters long, that conforms |
| // to the definition of a "label" in RFCs 1035 and 1123. This is captured |
| // by the following regex: |
| // [a-z0-9]([-a-z0-9]*[a-z0-9])? |
| // |
| // DNS_SUBDOMAIN: This is a string, no more than 253 characters long, that conforms |
| // to the definition of a "subdomain" in RFCs 1035 and 1123. This is captured |
| // by the following regex: |
| // [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)* |
| // or more simply: |
| // DNS_LABEL(\.DNS_LABEL)* |
| // |
| // IANA_SVC_NAME: This is a string, no more than 15 characters long, that |
| // conforms to the definition of IANA service name in RFC 6335. |
| // It must contains at least one letter [a-z] and it must contains only [a-z0-9-]. |
| // Hypens ('-') cannot be leading or trailing character of the string |
| // and cannot be adjacent to other hyphens. |
| |
| // TypeMeta describes an individual object in an API response or request |
| // with strings representing the type of the object and its API schema version. |
| // Structures that are versioned or persisted should inline TypeMeta. |
| type TypeMeta struct { |
| // A string value representing the REST resource this object represents. |
| // Servers may infer this from the endpoint the client submits requests to. |
| // Cannot be updated. |
| // In CamelCase. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| Kind string `json:"kind,omitempty"` |
| |
| // APIVersion defines the version of the schema of an object. |
| // Servers should convert recognized schemas to the latest internal value, and |
| // may reject unrecognized values. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources |
| APIVersion string `json:"apiVersion,omitempty"` |
| } |
| |
| // ListMeta describes metadata that synthetic resources must have, including lists and |
| // various status objects. |
| type ListMeta struct { |
| // SelfLink is a URL representing this object. |
| // Populated by the system. |
| // Read-only. |
| SelfLink string `json:"selfLink,omitempty"` |
| |
| // String that identifies the server's internal version of this object that |
| // can be used by clients to determine when objects have changed. |
| // Value must be treated as opaque by clients and passed unmodified back to the server. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency |
| ResourceVersion string `json:"resourceVersion,omitempty"` |
| } |
| |
| // ObjectMeta is metadata that all persisted resources must have, which includes all objects |
| // users must create. |
| type ObjectMeta struct { |
| // Name must be unique within a namespace. Is required when creating resources, although |
| // some resources may allow a client to request the generation of an appropriate name |
| // automatically. Name is primarily intended for creation idempotence and configuration |
| // definition. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names |
| Name string `json:"name,omitempty"` |
| |
| // GenerateName is an optional prefix, used by the server, to generate a unique |
| // name ONLY IF the Name field has not been provided. |
| // If this field is used, the name returned to the client will be different |
| // than the name passed. This value will also be combined with a unique suffix. |
| // The provided value has the same validation rules as the Name field, |
| // and may be truncated by the length of the suffix required to make the value |
| // unique on the server. |
| // |
| // If this field is specified and the generated name exists, the server will |
| // NOT return a 409 - instead, it will either return 201 Created or 500 with Reason |
| // ServerTimeout indicating a unique name could not be found in the time allotted, and the client |
| // should retry (optionally after the time indicated in the Retry-After header). |
| // |
| // Applied only if Name is not specified. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#idempotency |
| GenerateName string `json:"generateName,omitempty"` |
| |
| // Namespace defines the space within each name must be unique. An empty namespace is |
| // equivalent to the "default" namespace, but "default" is the canonical representation. |
| // Not all objects are required to be scoped to a namespace - the value of this field for |
| // those objects will be empty. |
| // |
| // Must be a DNS_LABEL. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md |
| Namespace string `json:"namespace,omitempty"` |
| |
| // SelfLink is a URL representing this object. |
| // Populated by the system. |
| // Read-only. |
| SelfLink string `json:"selfLink,omitempty"` |
| |
| // UID is the unique in time and space value for this object. It is typically generated by |
| // the server on successful creation of a resource and is not allowed to change on PUT |
| // operations. |
| // |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids |
| UID UID `json:"uid,omitempty"` |
| |
| // An opaque value that represents the internal version of this object that can |
| // be used by clients to determine when objects have changed. May be used for optimistic |
| // concurrency, change detection, and the watch operation on a resource or set of resources. |
| // Clients must treat these values as opaque and passed unmodified back to the server. |
| // They may only be valid for a particular resource or set of resources. |
| // |
| // Populated by the system. |
| // Read-only. |
| // Value must be treated as opaque by clients and . |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency |
| ResourceVersion string `json:"resourceVersion,omitempty"` |
| |
| // A sequence number representing a specific generation of the desired state. |
| // Currently only implemented by replication controllers. |
| // Populated by the system. |
| // Read-only. |
| Generation int64 `json:"generation,omitempty"` |
| |
| // CreationTimestamp is a timestamp representing the server time when this object was |
| // created. It is not guaranteed to be set in happens-before order across separate operations. |
| // Clients may not set this value. It is represented in RFC3339 form and is in UTC. |
| // |
| // Populated by the system. |
| // Read-only. |
| // Null for lists. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| CreationTimestamp Time `json:"creationTimestamp,omitempty"` |
| |
| // DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This |
| // field is set by the server when a graceful deletion is requested by the user, and is not |
| // directly settable by a client. The resource will be deleted (no longer visible from |
| // resource lists, and not reachable by name) after the time in this field. Once set, this |
| // value may not be unset or be set further into the future, although it may be shortened |
| // or the resource may be deleted prior to this time. For example, a user may request that |
| // a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination |
| // signal to the containers in the pod. Once the resource is deleted in the API, the Kubelet |
| // will send a hard termination signal to the container. |
| // If not set, graceful deletion of the object has not been requested. |
| // |
| // Populated by the system when a graceful deletion is requested. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| DeletionTimestamp *Time `json:"deletionTimestamp,omitempty"` |
| |
| // Number of seconds allowed for this object to gracefully terminate before |
| // it will be removed from the system. Only set when deletionTimestamp is also set. |
| // May only be shortened. |
| // Read-only. |
| DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty"` |
| |
| // Map of string keys and values that can be used to organize and categorize |
| // (scope and select) objects. May match selectors of replication controllers |
| // and services. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md |
| // TODO: replace map[string]string with labels.LabelSet type |
| Labels map[string]string `json:"labels,omitempty"` |
| |
| // Annotations is an unstructured key value map stored with a resource that may be |
| // set by external tools to store and retrieve arbitrary metadata. They are not |
| // queryable and should be preserved when modifying objects. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/annotations.md |
| Annotations map[string]string `json:"annotations,omitempty"` |
| } |
| |
| const ( |
| // NamespaceDefault means the object is in the default namespace which is applied when not specified by clients |
| NamespaceDefault string = "default" |
| // NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces |
| NamespaceAll string = "" |
| ) |
| |
| // Volume represents a named volume in a pod that may be accessed by any container in the pod. |
| type Volume struct { |
| // Volume's name. |
| // Must be a DNS_LABEL and unique within the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names |
| Name string `json:"name"` |
| // VolumeSource represents the location and type of the mounted volume. |
| // If not specified, the Volume is implied to be an EmptyDir. |
| // This implied behavior is deprecated and will be removed in a future version. |
| VolumeSource `json:",inline"` |
| } |
| |
| // VolumeSource represents the source location of a volume to mount. |
| // Only one of its members may be specified. |
| type VolumeSource struct { |
| // HostPath represents a pre-existing file or 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. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath |
| // --- |
| // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not |
| // mount host directories as read/write. |
| HostPath *HostPathVolumeSource `json:"hostPath,omitempty"` |
| // EmptyDir represents a temporary directory that shares a pod's lifetime. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir |
| EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty"` |
| // GCEPersistentDisk represents a GCE Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"` |
| // AWSElasticBlockStore represents an AWS Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore |
| AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty"` |
| // GitRepo represents a git repository at a particular revision. |
| GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty"` |
| // Secret represents a secret that should populate this volume. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets |
| Secret *SecretVolumeSource `json:"secret,omitempty"` |
| // NFS represents an NFS mount on the host that shares a pod's lifetime |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs |
| NFS *NFSVolumeSource `json:"nfs,omitempty"` |
| // ISCSI represents an ISCSI Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. |
| // More info: http://releases.k8s.io/HEAD/examples/iscsi/README.md |
| ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"` |
| // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. |
| // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md |
| Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"` |
| // PersistentVolumeClaimVolumeSource represents a reference to a |
| // PersistentVolumeClaim in the same namespace. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims |
| PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty"` |
| // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md |
| RBD *RBDVolumeSource `json:"rbd,omitempty"` |
| // Cinder represents a cinder volume attached and mounted on kubelets host machine |
| // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md |
| Cinder *CinderVolumeSource `json:"cinder,omitempty"` |
| |
| // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime |
| CephFS *CephFSVolumeSource `json:"cephfs,omitempty"` |
| |
| // DownwardAPI represents downward API about the pod that should populate this volume |
| DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty"` |
| } |
| |
| // PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. |
| // This volume finds the bound PV and mounts that volume for the pod. A |
| // PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another |
| // type of volume that is owned by someone else (the system). |
| type PersistentVolumeClaimVolumeSource struct { |
| // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims |
| ClaimName string `json:"claimName"` |
| // Will force the ReadOnly setting in VolumeMounts. |
| // Default false. |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // PersistentVolumeSource is similar to VolumeSource but meant for the |
| // administrator who creates PVs. Exactly one of its members must be set. |
| type PersistentVolumeSource struct { |
| // GCEPersistentDisk represents a GCE Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. Provisioned by an admin. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"` |
| // AWSElasticBlockStore represents an AWS Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore |
| AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty"` |
| // HostPath represents a directory on the host. |
| // Provisioned by a developer or tester. |
| // This is useful for development and testing only. |
| // On-host storage is not supported in any way. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath |
| HostPath *HostPathVolumeSource `json:"hostPath,omitempty"` |
| // Glusterfs represents a Glusterfs volume that is attached to a host and |
| // exposed to the pod. Provisioned by an admin. |
| // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md |
| Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"` |
| // NFS represents an NFS mount on the host. Provisioned by an admin. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs |
| NFS *NFSVolumeSource `json:"nfs,omitempty"` |
| // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md |
| RBD *RBDVolumeSource `json:"rbd,omitempty"` |
| // ISCSI represents an ISCSI Disk resource that is attached to a |
| // kubelet's host machine and then exposed to the pod. Provisioned by an admin. |
| ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"` |
| // Cinder represents a cinder volume attached and mounted on kubelets host machine |
| // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md |
| Cinder *CinderVolumeSource `json:"cinder,omitempty"` |
| // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime |
| CephFS *CephFSVolumeSource `json:"cephfs,omitempty"` |
| } |
| |
| // PersistentVolume (PV) is a storage resource provisioned by an administrator. |
| // It is analogous to a node. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md |
| type PersistentVolume struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines a specification of a persistent volume owned by the cluster. |
| // Provisioned by an administrator. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes |
| Spec PersistentVolumeSpec `json:"spec,omitempty"` |
| |
| // Status represents the current information/status for the persistent volume. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistent-volumes |
| Status PersistentVolumeStatus `json:"status,omitempty"` |
| } |
| |
| // PersistentVolumeSpec is the specification of a persistent volume. |
| type PersistentVolumeSpec struct { |
| // A description of the persistent volume's resources and capacity. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity |
| Capacity ResourceList `json:"capacity,omitempty"` |
| // The actual volume backing the persistent volume. |
| PersistentVolumeSource `json:",inline"` |
| // AccessModes contains all ways the volume can be mounted. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes |
| AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` |
| // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. |
| // Expected to be non-nil when bound. |
| // claim.VolumeName is the authoritative bind between PV and PVC. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#binding |
| ClaimRef *ObjectReference `json:"claimRef,omitempty"` |
| // What happens to a persistent volume when released from its claim. |
| // Valid options are Retain (default) and Recycle. |
| // Recyling must be supported by the volume plugin underlying this persistent volume. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#recycling-policy |
| PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty"` |
| } |
| |
| // PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes. |
| type PersistentVolumeReclaimPolicy string |
| |
| const ( |
| // PersistentVolumeReclaimRecycle means the volume will be recycled back into the pool of unbound persistent volumes on release from its claim. |
| // The volume plugin must support Recycling. |
| PersistentVolumeReclaimRecycle PersistentVolumeReclaimPolicy = "Recycle" |
| |
| // PersistentVolumeReclaimDelete means the volume will be deleted from Kubernetes on release from its claim. |
| // The volume plugin must support Deletion. |
| // TODO: implement w/ DeletableVolumePlugin |
| // PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete" |
| |
| // PersistentVolumeReclaimRetain means the volume will left in its current phase (Released) for manual reclamation by the administrator. |
| // The default policy is Retain. |
| PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain" |
| ) |
| |
| // PersistentVolumeStatus is the current status of a persistent volume. |
| type PersistentVolumeStatus struct { |
| // Phase indicates if a volume is available, bound to a claim, or released by a claim. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#phase |
| Phase PersistentVolumePhase `json:"phase,omitempty"` |
| // A human-readable message indicating details about why the volume is in this state. |
| Message string `json:"message,omitempty"` |
| // Reason is a brief CamelCase string that describes any failure and is meant |
| // for machine parsing and tidy display in the CLI. |
| Reason string `json:"reason,omitempty"` |
| } |
| |
| // PersistentVolumeList is a list of PersistentVolume items. |
| type PersistentVolumeList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| // List of persistent volumes. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md |
| Items []PersistentVolume `json:"items"` |
| } |
| |
| // PersistentVolumeClaim is a user's request for and claim to a persistent volume |
| type PersistentVolumeClaim struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the desired characteristics of a volume requested by a pod author. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims |
| Spec PersistentVolumeClaimSpec `json:"spec,omitempty"` |
| |
| // Status represents the current information/status of a persistent volume claim. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims |
| Status PersistentVolumeClaimStatus `json:"status,omitempty"` |
| } |
| |
| // PersistentVolumeClaimList is a list of PersistentVolumeClaim items. |
| type PersistentVolumeClaimList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| // A list of persistent volume claims. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#persistentvolumeclaims |
| Items []PersistentVolumeClaim `json:"items"` |
| } |
| |
| // PersistentVolumeClaimSpec describes the common attributes of storage devices |
| // and allows a Source for provider-specific attributes |
| type PersistentVolumeClaimSpec struct { |
| // AccessModes contains the desired access modes the volume should have. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 |
| AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` |
| // Resources represents the minimum resources the volume should have. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources |
| Resources ResourceRequirements `json:"resources,omitempty"` |
| // VolumeName is the binding reference to the PersistentVolume backing this claim. |
| VolumeName string `json:"volumeName,omitempty"` |
| } |
| |
| // PersistentVolumeClaimStatus is the current status of a persistent volume claim. |
| type PersistentVolumeClaimStatus struct { |
| // Phase represents the current phase of PersistentVolumeClaim. |
| Phase PersistentVolumeClaimPhase `json:"phase,omitempty"` |
| // AccessModes contains the actual access modes the volume backing the PVC has. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#access-modes-1 |
| AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"` |
| // Represents the actual resources of the underlying volume. |
| Capacity ResourceList `json:"capacity,omitempty"` |
| } |
| |
| type PersistentVolumeAccessMode string |
| |
| const ( |
| // can be mounted read/write mode to exactly 1 host |
| ReadWriteOnce PersistentVolumeAccessMode = "ReadWriteOnce" |
| // can be mounted in read-only mode to many hosts |
| ReadOnlyMany PersistentVolumeAccessMode = "ReadOnlyMany" |
| // can be mounted in read/write mode to many hosts |
| ReadWriteMany PersistentVolumeAccessMode = "ReadWriteMany" |
| ) |
| |
| type PersistentVolumePhase string |
| |
| const ( |
| // used for PersistentVolumes that are not available |
| VolumePending PersistentVolumePhase = "Pending" |
| // used for PersistentVolumes that are not yet bound |
| // Available volumes are held by the binder and matched to PersistentVolumeClaims |
| VolumeAvailable PersistentVolumePhase = "Available" |
| // used for PersistentVolumes that are bound |
| VolumeBound PersistentVolumePhase = "Bound" |
| // used for PersistentVolumes where the bound PersistentVolumeClaim was deleted |
| // released volumes must be recycled before becoming available again |
| // this phase is used by the persistent volume claim binder to signal to another process to reclaim the resource |
| VolumeReleased PersistentVolumePhase = "Released" |
| // used for PersistentVolumes that failed to be correctly recycled or deleted after being released from a claim |
| VolumeFailed PersistentVolumePhase = "Failed" |
| ) |
| |
| type PersistentVolumeClaimPhase string |
| |
| const ( |
| // used for PersistentVolumeClaims that are not yet bound |
| ClaimPending PersistentVolumeClaimPhase = "Pending" |
| // used for PersistentVolumeClaims that are bound |
| ClaimBound PersistentVolumeClaimPhase = "Bound" |
| ) |
| |
| // HostPathVolumeSource represents bare host directory volume. |
| type HostPathVolumeSource struct { |
| // Path of the directory on the host. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#hostpath |
| Path string `json:"path"` |
| } |
| |
| // EmptyDirVolumeSource is temporary directory that shares a pod's lifetime. |
| type EmptyDirVolumeSource struct { |
| // What type of storage medium should back this directory. |
| // The default is "" which means to use the node's default medium. |
| // Must be an empty string (default) or Memory. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#emptydir |
| Medium StorageMedium `json:"medium,omitempty"` |
| } |
| |
| // GlusterfsVolumeSource represents a Glusterfs Mount that lasts the lifetime of a pod. |
| type GlusterfsVolumeSource struct { |
| // EndpointsName is the endpoint name that details Glusterfs topology. |
| // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod |
| EndpointsName string `json:"endpoints"` |
| |
| // Path is the Glusterfs volume path. |
| // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod |
| Path string `json:"path"` |
| |
| // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. |
| // Defaults to false. |
| // More info: http://releases.k8s.io/HEAD/examples/glusterfs/README.md#create-a-pod |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // StorageMedium defines ways that storage can be allocated to a volume. |
| type StorageMedium string |
| |
| // RBDVolumeSource represents a Rados Block Device Mount that lasts the lifetime of a pod |
| type RBDVolumeSource struct { |
| // A collection of Ceph monitors. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| CephMonitors []string `json:"monitors"` |
| // The rados image name. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| RBDImage string `json:"image"` |
| // Filesystem type of the volume that you want to mount. |
| // Tip: Ensure that the filesystem type is supported by the host operating system. |
| // Examples: "ext4", "xfs", "ntfs". |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#rbd |
| // TODO: how do we prevent errors in the filesystem from compromising the machine |
| FSType string `json:"fsType,omitempty"` |
| // The rados pool name. |
| // Default is rbd. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it. |
| RBDPool string `json:"pool"` |
| // The rados user name. |
| // Default is admin. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| RadosUser string `json:"user"` |
| // Keyring is the path to key ring for RBDUser. |
| // Default is /etc/ceph/keyring. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| Keyring string `json:"keyring"` |
| // SecretRef is name of the authentication secret for RBDUser. If provided |
| // overrides keyring. |
| // Default is empty. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| SecretRef *LocalObjectReference `json:"secretRef"` |
| // ReadOnly here will force the ReadOnly setting in VolumeMounts. |
| // Defaults to false. |
| // More info: http://releases.k8s.io/HEAD/examples/rbd/README.md#how-to-use-it |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // CinderVolumeSource represents a cinder volume resource in Openstack. |
| // A Cinder volume must exist before mounting to a container. |
| // The volume must also be in the same region as the kubelet. |
| type CinderVolumeSource struct { |
| // volume id used to identify the volume in cinder |
| // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md |
| VolumeID string `json:"volumeID"` |
| // Required: Filesystem type to mount. |
| // Must be a filesystem type supported by the host operating system. |
| // Only ext3 and ext4 are allowed |
| // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md |
| FSType string `json:"fsType,omitempty"` |
| // Optional: Defaults to false (read/write). ReadOnly here will force |
| // the ReadOnly setting in VolumeMounts. |
| // More info: http://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // CephFSVolumeSource represents a Ceph Filesystem Mount that lasts the lifetime of a pod |
| type CephFSVolumeSource struct { |
| // Required: Monitors is a collection of Ceph monitors |
| // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it |
| Monitors []string `json:"monitors"` |
| // Optional: User is the rados user name, default is admin |
| // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it |
| User string `json:"user,omitempty"` |
| // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret |
| // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it |
| SecretFile string `json:"secretFile,omitempty"` |
| // Optional: SecretRef is reference to the authentication secret for User, default is empty. |
| // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it |
| SecretRef *LocalObjectReference `json:"secretRef,omitempty"` |
| // Optional: Defaults to false (read/write). ReadOnly here will force |
| // the ReadOnly setting in VolumeMounts. |
| // More info: http://releases.k8s.io/HEAD/examples/cephfs/README.md#how-to-use-it |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| const ( |
| StorageMediumDefault StorageMedium = "" // use whatever the default is for the node |
| StorageMediumMemory StorageMedium = "Memory" // use memory (tmpfs) |
| ) |
| |
| // Protocol defines network protocols supported for things like container ports. |
| type Protocol string |
| |
| const ( |
| // ProtocolTCP is the TCP protocol. |
| ProtocolTCP Protocol = "TCP" |
| // ProtocolUDP is the UDP protocol. |
| ProtocolUDP Protocol = "UDP" |
| ) |
| |
| // GCEPersistentDiskVolumeSource represents a Persistent Disk resource in Google Compute Engine. |
| // |
| // A GCE PD must exist and be formatted before mounting to a container. |
| // The disk must also be in the same GCE project and zone as the kubelet. |
| // A GCE PD can only be mounted as read/write once. |
| type GCEPersistentDiskVolumeSource struct { |
| // Unique name of the PD resource in GCE. Used to identify the disk in GCE. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| PDName string `json:"pdName"` |
| // Filesystem type of the volume that you want to mount. |
| // Tip: Ensure that the filesystem type is supported by the host operating system. |
| // Examples: "ext4", "xfs", "ntfs". |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| // TODO: how do we prevent errors in the filesystem from compromising the machine |
| FSType string `json:"fsType"` |
| // The partition in the volume that you want to mount. |
| // If omitted, the default is to mount by volume name. |
| // Examples: For volume /dev/sda1, you specify the partition as "1". |
| // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| Partition int `json:"partition,omitempty"` |
| // ReadOnly here will force the ReadOnly setting in VolumeMounts. |
| // Defaults to false. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#gcepersistentdisk |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // Represents a persistent disk resource in AWS. |
| // |
| // An Amazon Elastic Block Store (EBS) must already be created, formatted, |
| // and reside in the same AWS zone as the kubelet before it can be mounted. |
| // Note: Amazon EBS volumes can be mounted to only one instance at a time. |
| type AWSElasticBlockStoreVolumeSource struct { |
| // Unique ID of the persistent disk resource in AWS (Amazon EBS volume). |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore |
| VolumeID string `json:"volumeID"` |
| // Filesystem type of the volume that you want to mount. |
| // Tip: Ensure that the filesystem type is supported by the host operating system. |
| // Examples: "ext4", "xfs", "ntfs". |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore |
| // TODO: how do we prevent errors in the filesystem from compromising the machine |
| FSType string `json:"fsType"` |
| // The partition in the volume that you want to mount. |
| // If omitted, the default is to mount by volume name. |
| // Examples: For volume /dev/sda1, you specify the partition as "1". |
| // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). |
| Partition int `json:"partition,omitempty"` |
| // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". |
| // If omitted, the default is "false". |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#awselasticblockstore |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // GitRepoVolumeSource represents a volume that is pulled from git when the pod is created. |
| type GitRepoVolumeSource struct { |
| // Repository URL |
| Repository string `json:"repository"` |
| // Commit hash for the specified revision. |
| Revision string `json:"revision"` |
| } |
| |
| // SecretVolumeSource adapts a Secret into a VolumeSource. |
| // More info: http://releases.k8s.io/HEAD/docs/design/secrets.md |
| type SecretVolumeSource struct { |
| // SecretName is the name of a secret in the pod's namespace. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#secrets |
| SecretName string `json:"secretName"` |
| } |
| |
| // NFSVolumeSource represents an NFS mount that lasts the lifetime of a pod |
| type NFSVolumeSource struct { |
| // Server is the hostname or IP address of the NFS server. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs |
| Server string `json:"server"` |
| |
| // Path that is exported by the NFS server. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs |
| Path string `json:"path"` |
| |
| // ReadOnly here will force |
| // the NFS export to be mounted with read-only permissions. |
| // Defaults to false. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#nfs |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // ISCSIVolumeSource describes an ISCSI Disk can only be mounted as read/write once. |
| type ISCSIVolumeSource struct { |
| // iSCSI target portal. The portal is either an IP or ip_addr:port if the port |
| // is other than default (typically TCP ports 860 and 3260). |
| TargetPortal string `json:"targetPortal"` |
| // Target iSCSI Qualified Name. |
| IQN string `json:"iqn"` |
| // iSCSI target lun number. |
| Lun int `json:"lun"` |
| // Filesystem type of the volume that you want to mount. |
| // Tip: Ensure that the filesystem type is supported by the host operating system. |
| // Examples: "ext4", "xfs", "ntfs". |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md#iscsi |
| // TODO: how do we prevent errors in the filesystem from compromising the machine |
| FSType string `json:"fsType"` |
| // ReadOnly here will force the ReadOnly setting in VolumeMounts. |
| // Defaults to false. |
| ReadOnly bool `json:"readOnly,omitempty"` |
| } |
| |
| // ContainerPort represents a network port in a single container. |
| type ContainerPort struct { |
| // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each |
| // named port in a pod must have a unique name. Name for the port that can be |
| // referred to by services. |
| Name string `json:"name,omitempty"` |
| // Number of port to expose on the host. |
| // If specified, this must be a valid port number, 0 < x < 65536. |
| // If HostNetwork is specified, this must match ContainerPort. |
| // Most containers do not need this. |
| HostPort int `json:"hostPort,omitempty"` |
| // Number of port to expose on the pod's IP address. |
| // This must be a valid port number, 0 < x < 65536. |
| ContainerPort int `json:"containerPort"` |
| // Protocol for port. Must be UDP or TCP. |
| // Defaults to "TCP". |
| Protocol Protocol `json:"protocol,omitempty"` |
| // What host IP to bind the external port to. |
| HostIP string `json:"hostIP,omitempty"` |
| } |
| |
| // VolumeMount describes a mounting of a Volume within a container. |
| type VolumeMount struct { |
| // This must match the Name of a Volume. |
| Name string `json:"name"` |
| // Mounted read-only if true, read-write otherwise (false or unspecified). |
| // Defaults to false. |
| ReadOnly bool `json:"readOnly,omitempty"` |
| // Path within the container at which the volume should be mounted. |
| MountPath string `json:"mountPath"` |
| } |
| |
| // EnvVar represents an environment variable present in a Container. |
| type EnvVar struct { |
| // Name of the environment variable. Must be a C_IDENTIFIER. |
| Name string `json:"name"` |
| |
| // Optional: no more than one of the following may be specified. |
| |
| // Variable references $(VAR_NAME) are expanded |
| // using the previous defined environment variables in the container and |
| // any service environment variables. If a variable cannot be resolved, |
| // the reference in the input string will be unchanged. The $(VAR_NAME) |
| // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped |
| // references will never be expanded, regardless of whether the variable |
| // exists or not. |
| // Defaults to "". |
| Value string `json:"value,omitempty"` |
| // Source for the environment variable's value. Cannot be used if value is not empty. |
| ValueFrom *EnvVarSource `json:"valueFrom,omitempty"` |
| } |
| |
| // EnvVarSource represents a source for the value of an EnvVar. |
| type EnvVarSource struct { |
| // Selects a field of the pod. Only name and namespace are supported. |
| FieldRef *ObjectFieldSelector `json:"fieldRef"` |
| } |
| |
| // ObjectFieldSelector selects an APIVersioned field of an object. |
| type ObjectFieldSelector struct { |
| // Version of the schema the FieldPath is written in terms of, defaults to "v1". |
| APIVersion string `json:"apiVersion,omitempty"` |
| // Path of the field to select in the specified API version. |
| FieldPath string `json:"fieldPath"` |
| } |
| |
| // HTTPGetAction describes an action based on HTTP Get requests. |
| type HTTPGetAction struct { |
| // Path to access on the HTTP server. |
| Path string `json:"path,omitempty"` |
| // Name or number of the port to access on the container. |
| // Number must be in the range 1 to 65535. |
| // Name must be an IANA_SVC_NAME. |
| Port IntOrString `json:"port"` |
| // Host name to connect to, defaults to the pod IP. |
| Host string `json:"host,omitempty"` |
| // Scheme to use for connecting to the host. |
| // Defaults to HTTP. |
| Scheme URIScheme `json:"scheme,omitempty"` |
| } |
| |
| // URIScheme identifies the scheme used for connection to a host for Get actions |
| type URIScheme string |
| |
| const ( |
| // URISchemeHTTP means that the scheme used will be http:// |
| URISchemeHTTP URIScheme = "HTTP" |
| // URISchemeHTTPS means that the scheme used will be https:// |
| URISchemeHTTPS URIScheme = "HTTPS" |
| ) |
| |
| // TCPSocketAction describes an action based on opening a socket |
| type TCPSocketAction struct { |
| // Number or name of the port to access on the container. |
| // Number must be in the range 1 to 65535. |
| // Name must be an IANA_SVC_NAME. |
| Port IntOrString `json:"port"` |
| } |
| |
| // ExecAction describes a "run in container" action. |
| type ExecAction struct { |
| // Command is the command line to execute inside the container, the working directory for the |
| // command is root ('/') in the container's filesystem. The command is simply exec'd, it is |
| // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use |
| // a shell, you need to explicitly call out to that shell. |
| // Exit status of 0 is treated as live/healthy and non-zero is unhealthy. |
| Command []string `json:"command,omitempty"` |
| } |
| |
| // Probe describes a liveness probe to be examined to the container. |
| type Probe struct { |
| // The action taken to determine the health of a container |
| Handler `json:",inline"` |
| // Number of seconds after the container has started before liveness probes are initiated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes |
| InitialDelaySeconds int64 `json:"initialDelaySeconds,omitempty"` |
| // Number of seconds after which liveness probes timeout. |
| // Defaults to 1 second. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes |
| TimeoutSeconds int64 `json:"timeoutSeconds,omitempty"` |
| } |
| |
| // PullPolicy describes a policy for if/when to pull a container image |
| type PullPolicy string |
| |
| const ( |
| // PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails. |
| PullAlways PullPolicy = "Always" |
| // PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present |
| PullNever PullPolicy = "Never" |
| // PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails. |
| PullIfNotPresent PullPolicy = "IfNotPresent" |
| ) |
| |
| // Capability represent POSIX capabilities type |
| type Capability string |
| |
| // Adds and removes POSIX capabilities from running containers. |
| type Capabilities struct { |
| // Added capabilities |
| Add []Capability `json:"add,omitempty"` |
| // Removed capabilities |
| Drop []Capability `json:"drop,omitempty"` |
| } |
| |
| // ResourceRequirements describes the compute resource requirements. |
| type ResourceRequirements struct { |
| // Limits describes the maximum amount of compute resources allowed. |
| // More info: http://releases.k8s.io/HEAD/docs/design/resources.md#resource-specifications |
| Limits ResourceList `json:"limits,omitempty"` |
| // Requests describes the minimum amount of compute resources required. |
| // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, |
| // otherwise to an implementation-defined value. |
| // More info: http://releases.k8s.io/HEAD/docs/design/resources.md#resource-specifications |
| Requests ResourceList `json:"requests,omitempty"` |
| } |
| |
| const ( |
| // TerminationMessagePathDefault means the default path to capture the application termination message running in a container |
| TerminationMessagePathDefault string = "/dev/termination-log" |
| ) |
| |
| // A single application container that you want to run within a pod. |
| type Container struct { |
| // Name of the container specified as a DNS_LABEL. |
| // Each container in a pod must have a unique name (DNS_LABEL). |
| // Cannot be updated. |
| Name string `json:"name"` |
| // Docker image name. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md |
| Image string `json:"image,omitempty"` |
| // Entrypoint array. Not executed within a shell. |
| // The docker image's entrypoint is used if this is not provided. |
| // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable |
| // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax |
| // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, |
| // regardless of whether the variable exists or not. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands |
| Command []string `json:"command,omitempty"` |
| // Arguments to the entrypoint. |
| // The docker image's cmd is used if this is not provided. |
| // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable |
| // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax |
| // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, |
| // regardless of whether the variable exists or not. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands |
| Args []string `json:"args,omitempty"` |
| // Container's working directory. |
| // Defaults to Docker's default. D |
| // efaults to image's default. |
| // Cannot be updated. |
| WorkingDir string `json:"workingDir,omitempty"` |
| // List of ports to expose from the container. |
| // Cannot be updated. |
| Ports []ContainerPort `json:"ports,omitempty" patchStrategy:"merge" patchMergeKey:"containerPort"` |
| // List of environment variables to set in the container. |
| // Cannot be updated. |
| Env []EnvVar `json:"env,omitempty" patchStrategy:"merge" patchMergeKey:"name"` |
| // Compute Resources required by this container. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#resources |
| Resources ResourceRequirements `json:"resources,omitempty"` |
| // Pod volumes to mount into the container's filesyste. |
| // Cannot be updated. |
| VolumeMounts []VolumeMount `json:"volumeMounts,omitempty" patchStrategy:"merge" patchMergeKey:"name"` |
| // Periodic probe of container liveness. |
| // Container will be restarted if the probe fails. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes |
| LivenessProbe *Probe `json:"livenessProbe,omitempty"` |
| // Periodic probe of container service readiness. |
| // Container will be removed from service endpoints if the probe fails. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-probes |
| ReadinessProbe *Probe `json:"readinessProbe,omitempty"` |
| // Actions that the management system should take in response to container lifecycle events. |
| // Cannot be updated. |
| Lifecycle *Lifecycle `json:"lifecycle,omitempty"` |
| // Optional: Path at which the file to which the container's termination message |
| // will be written is mounted into the container's filesystem. |
| // Message written is intended to be brief final status, such as an assertion failure message. |
| // Defaults to /dev/termination-log. |
| // Cannot be updated. |
| TerminationMessagePath string `json:"terminationMessagePath,omitempty"` |
| // Image pull policy. |
| // One of Always, Never, IfNotPresent. |
| // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#updating-images |
| ImagePullPolicy PullPolicy `json:"imagePullPolicy,omitempty"` |
| // Security options the pod should run with. |
| // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md |
| SecurityContext *SecurityContext `json:"securityContext,omitempty"` |
| |
| // Variables for interactive containers, these have very specialized use-cases (e.g. debugging) |
| // and shouldn't be used for general purpose containers. |
| |
| // Whether this container should allocate a buffer for stdin in the container runtime. |
| // Default is false. |
| Stdin bool `json:"stdin,omitempty"` |
| // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. |
| // Default is false. |
| TTY bool `json:"tty,omitempty"` |
| } |
| |
| // Handler defines a specific action that should be taken |
| // TODO: pass structured data to these actions, and document that data here. |
| type Handler struct { |
| // One and only one of the following should be specified. |
| // Exec specifies the action to take. |
| Exec *ExecAction `json:"exec,omitempty"` |
| // HTTPGet specifies the http request to perform. |
| HTTPGet *HTTPGetAction `json:"httpGet,omitempty"` |
| // TCPSocket specifies an action involving a TCP port. |
| // TCP hooks not yet supported |
| // TODO: implement a realistic TCP lifecycle hook |
| TCPSocket *TCPSocketAction `json:"tcpSocket,omitempty"` |
| } |
| |
| // Lifecycle describes actions that the management system should take in response to container lifecycle |
| // events. For the PostStart and PreStop lifecycle handlers, management of the container blocks |
| // until the action is complete, unless the container process fails, in which case the handler is aborted. |
| type Lifecycle struct { |
| // PostStart is called immediately after a container is created. If the handler fails, |
| // the container is terminated and restarted according to its restart policy. |
| // Other management of the container blocks until the hook completes. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details |
| PostStart *Handler `json:"postStart,omitempty"` |
| // PreStop is called immediately before a container is terminated. |
| // The container is terminated after the handler completes. |
| // The reason for termination is passed to the handler. |
| // Regardless of the outcome of the handler, the container is eventually terminated. |
| // Other management of the container blocks until the hook completes. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#hook-details |
| PreStop *Handler `json:"preStop,omitempty"` |
| } |
| |
| type ConditionStatus string |
| |
| // These are valid condition statuses. "ConditionTrue" means a resource is in the condition. |
| // "ConditionFalse" means a resource is not in the condition. "ConditionUnknown" means kubernetes |
| // can't decide if a resource is in the condition or not. In the future, we could add other |
| // intermediate conditions, e.g. ConditionDegraded. |
| const ( |
| ConditionTrue ConditionStatus = "True" |
| ConditionFalse ConditionStatus = "False" |
| ConditionUnknown ConditionStatus = "Unknown" |
| ) |
| |
| // ContainerStateWaiting is a waiting state of a container. |
| type ContainerStateWaiting struct { |
| // (brief) reason the container is not yet running, such as pulling its image. |
| Reason string `json:"reason,omitempty"` |
| } |
| |
| // ContainerStateRunning is a running state of a container. |
| type ContainerStateRunning struct { |
| // Time at which the container was last (re-)started |
| StartedAt Time `json:"startedAt,omitempty"` |
| } |
| |
| // ContainerStateTerminated is a terminated state of a container. |
| type ContainerStateTerminated struct { |
| // Exit status from the last termination of the container |
| ExitCode int `json:"exitCode"` |
| // Signal from the last termination of the container |
| Signal int `json:"signal,omitempty"` |
| // (brief) reason from the last termination of the container |
| Reason string `json:"reason,omitempty"` |
| // Message regarding the last termination of the container |
| Message string `json:"message,omitempty"` |
| // Time at which previous execution of the container started |
| StartedAt Time `json:"startedAt,omitempty"` |
| // Time at which the container last terminated |
| FinishedAt Time `json:"finishedAt,omitempty"` |
| // Container's ID in the format 'docker://<container_id>' |
| ContainerID string `json:"containerID,omitempty"` |
| } |
| |
| // ContainerState holds a possible state of container. |
| // Only one of its members may be specified. |
| // If none of them is specified, the default one is ContainerStateWaiting. |
| type ContainerState struct { |
| // Details about a waiting container |
| Waiting *ContainerStateWaiting `json:"waiting,omitempty"` |
| // Details about a running container |
| Running *ContainerStateRunning `json:"running,omitempty"` |
| // Details about a terminated container |
| Terminated *ContainerStateTerminated `json:"terminated,omitempty"` |
| } |
| |
| // ContainerStatus contains details for the current status of this container. |
| type ContainerStatus struct { |
| // This must be a DNS_LABEL. Each container in a pod must have a unique name. |
| // Cannot be updated. |
| Name string `json:"name"` |
| // Details about the container's current condition. |
| State ContainerState `json:"state,omitempty"` |
| // Details about the container's last termination condition. |
| LastTerminationState ContainerState `json:"lastState,omitempty"` |
| // Specifies whether the container has passed its readiness probe. |
| Ready bool `json:"ready"` |
| // The number of times the container has been restarted, currently based on |
| // the number of dead containers that have not yet been removed. |
| // Note that this is calculated from dead containers. But those containers are subject to |
| // garbage collection. This value will get capped at 5 by GC. |
| RestartCount int `json:"restartCount"` |
| // The image the container is running. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md |
| // TODO(dchen1107): Which image the container is running with? |
| Image string `json:"image"` |
| // ImageID of the container's image. |
| ImageID string `json:"imageID"` |
| // Container's ID in the format 'docker://<container_id>'. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/container-environment.md#container-information |
| ContainerID string `json:"containerID,omitempty"` |
| } |
| |
| // PodPhase is a label for the condition of a pod at the current time. |
| type PodPhase string |
| |
| // These are the valid statuses of pods. |
| const ( |
| // PodPending means the pod has been accepted by the system, but one or more of the containers |
| // has not been started. This includes time before being bound to a node, as well as time spent |
| // pulling images onto the host. |
| PodPending PodPhase = "Pending" |
| // PodRunning means the pod has been bound to a node and all of the containers have been started. |
| // At least one container is still running or is in the process of being restarted. |
| PodRunning PodPhase = "Running" |
| // PodSucceeded means that all containers in the pod have voluntarily terminated |
| // with a container exit code of 0, and the system is not going to restart any of these containers. |
| PodSucceeded PodPhase = "Succeeded" |
| // PodFailed means that all containers in the pod have terminated, and at least one container has |
| // terminated in a failure (exited with a non-zero exit code or was stopped by the system). |
| PodFailed PodPhase = "Failed" |
| // PodUnknown means that for some reason the state of the pod could not be obtained, typically due |
| // to an error in communicating with the host of the pod. |
| PodUnknown PodPhase = "Unknown" |
| ) |
| |
| // PodConditionType is a valid value for PodCondition.Type |
| type PodConditionType string |
| |
| // These are valid conditions of pod. |
| const ( |
| // PodReady means the pod is able to service requests and should be added to the |
| // load balancing pools of all matching services. |
| PodReady PodConditionType = "Ready" |
| ) |
| |
| // PodCondition contains details for the current condition of this pod. |
| // TODO: add LastTransitionTime, Reason, Message to match NodeCondition api. |
| type PodCondition struct { |
| // Type is the type of the condition. |
| // Currently only Ready. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions |
| Type PodConditionType `json:"type"` |
| // Status is the status of the condition. |
| // Can be True, False, Unknown. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions |
| Status ConditionStatus `json:"status"` |
| } |
| |
| // RestartPolicy describes how the container should be restarted. |
| // Only one of the following restart policies may be specified. |
| // If none of the following policies is specified, the default one |
| // is RestartPolicyAlways. |
| type RestartPolicy string |
| |
| const ( |
| RestartPolicyAlways RestartPolicy = "Always" |
| RestartPolicyOnFailure RestartPolicy = "OnFailure" |
| RestartPolicyNever RestartPolicy = "Never" |
| ) |
| |
| // DNSPolicy defines how a pod's DNS will be configured. |
| type DNSPolicy string |
| |
| const ( |
| // DNSClusterFirst indicates that the pod should use cluster DNS |
| // first, if it is available, then fall back on the default (as |
| // determined by kubelet) DNS settings. |
| DNSClusterFirst DNSPolicy = "ClusterFirst" |
| |
| // DNSDefault indicates that the pod should use the default (as |
| // determined by kubelet) DNS settings. |
| DNSDefault DNSPolicy = "Default" |
| |
| DefaultTerminationGracePeriodSeconds = 30 |
| ) |
| |
| // PodSpec is a description of a pod. |
| type PodSpec struct { |
| // List of volumes that can be mounted by containers belonging to the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/volumes.md |
| Volumes []Volume `json:"volumes,omitempty" patchStrategy:"merge" patchMergeKey:"name"` |
| // List of containers belonging to the pod. |
| // Containers cannot currently be added or removed. |
| // There must be at least one container in a Pod. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md |
| Containers []Container `json:"containers" patchStrategy:"merge" patchMergeKey:"name"` |
| // Restart policy for all containers within the pod. |
| // One of Always, OnFailure, Never. |
| // Default to Always. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#restartpolicy |
| RestartPolicy RestartPolicy `json:"restartPolicy,omitempty"` |
| // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. |
| // Value must be non-negative integer. The value zero indicates delete immediately. |
| // If this value is nil, the default grace period will be used instead. |
| // The grace period is the duration in seconds after the processes running in the pod are sent |
| // a termination signal and the time when the processes are forcibly halted with a kill signal. |
| // Set this value longer than the expected cleanup time for your process. |
| // Defaults to 30 seconds. |
| TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"` |
| // Optional duration in seconds the pod may be active on the node relative to |
| // StartTime before the system will actively try to mark it failed and kill associated containers. |
| // Value must be a positive integer. |
| ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"` |
| // Set DNS policy for containers within the pod. |
| // One of 'ClusterFirst' or 'Default'. |
| // Defaults to "ClusterFirst". |
| DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty"` |
| // NodeSelector is a selector which must be true for the pod to fit on a node. |
| // Selector which must match a node's labels for the pod to be scheduled on that node. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/node-selection/README.md |
| NodeSelector map[string]string `json:"nodeSelector,omitempty"` |
| |
| // ServiceAccountName is the name of the ServiceAccount to use to run this pod. |
| // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md |
| ServiceAccountName string `json:"serviceAccountName,omitempty"` |
| // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. |
| // Deprecated: Use serviceAccountName instead. |
| DeprecatedServiceAccount string `json:"serviceAccount,omitempty"` |
| |
| // NodeName is a request to schedule this pod onto a specific node. If it is non-empty, |
| // the scheduler simply schedules this pod onto that node, assuming that it fits resource |
| // requirements. |
| NodeName string `json:"nodeName,omitempty"` |
| // Host networking requested for this pod. Uses the host's network namespace. |
| // If this option is set, the ports that will be used must be specified. |
| // Default to false. |
| HostNetwork bool `json:"hostNetwork,omitempty"` |
| // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. |
| // If specified, these secrets will be passed to individual puller implementations for them to use. For example, |
| // in the case of docker, only DockerConfig type secrets are honored. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/images.md#specifying-imagepullsecrets-on-a-pod |
| ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty" patchStrategy:"merge" patchMergeKey:"name"` |
| } |
| |
| // PodStatus represents information about the status of a pod. Status may trail the actual |
| // state of a system. |
| type PodStatus struct { |
| // Current condition of the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-phase |
| Phase PodPhase `json:"phase,omitempty"` |
| // Current service state of pod. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#pod-conditions |
| Conditions []PodCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"` |
| // A human readable message indicating details about why the pod is in this condition. |
| Message string `json:"message,omitempty"` |
| // A brief CamelCase message indicating details about why the pod is in this state. |
| // e.g. 'OutOfDisk' |
| Reason string `json:"reason,omitempty"` |
| |
| // IP address of the host to which the pod is assigned. Empty if not yet scheduled. |
| HostIP string `json:"hostIP,omitempty"` |
| // IP address allocated to the pod. Routable at least within the cluster. |
| // Empty if not yet allocated. |
| PodIP string `json:"podIP,omitempty"` |
| |
| // RFC 3339 date and time at which the object was acknowledged by the Kubelet. |
| // This is before the Kubelet pulled the container image(s) for the pod. |
| StartTime *Time `json:"startTime,omitempty"` |
| |
| // The list has one entry per container in the manifest. Each entry is currently the output |
| // of `docker inspect`. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses |
| ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty"` |
| } |
| |
| // PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded |
| type PodStatusResult struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| // Most recently observed status of the pod. |
| // This data may not be up to date. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status PodStatus `json:"status,omitempty"` |
| } |
| |
| // Pod is a collection of containers that can run on a host. This resource is created |
| // by clients and scheduled onto hosts. |
| type Pod struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Specification of the desired behavior of the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec PodSpec `json:"spec,omitempty"` |
| |
| // Most recently observed status of the pod. |
| // This data may not be up to date. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status PodStatus `json:"status,omitempty"` |
| } |
| |
| // PodList is a list of Pods. |
| type PodList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of pods. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/pods.md |
| Items []Pod `json:"items"` |
| } |
| |
| // PodTemplateSpec describes the data a pod should have when created from a template |
| type PodTemplateSpec struct { |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Specification of the desired behavior of the pod. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec PodSpec `json:"spec,omitempty"` |
| } |
| |
| // PodTemplate describes a template for creating copies of a predefined pod. |
| type PodTemplate struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Template defines the pods that will be created from this pod template. |
| // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Template PodTemplateSpec `json:"template,omitempty"` |
| } |
| |
| // PodTemplateList is a list of PodTemplates. |
| type PodTemplateList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of pod templates |
| Items []PodTemplate `json:"items"` |
| } |
| |
| // ReplicationControllerSpec is the specification of a replication controller. |
| type ReplicationControllerSpec struct { |
| // Replicas is the number of desired replicas. |
| // This is a pointer to distinguish between explicit zero and unspecified. |
| // Defaults to 1. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller |
| Replicas *int `json:"replicas,omitempty"` |
| |
| // Selector is a label query over pods that should match the Replicas count. |
| // If Selector is empty, it is defaulted to the labels present on the Pod template. |
| // Label keys and values that must match in order to be controlled by this replication |
| // controller, if empty defaulted to labels on Pod template. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md#label-selectors |
| Selector map[string]string `json:"selector,omitempty"` |
| |
| // TemplateRef is a reference to an object that describes the pod that will be created if |
| // insufficient replicas are detected. |
| // Reference to an object that describes the pod that will be created if insufficient replicas are detected. |
| // TemplateRef *ObjectReference `json:"templateRef,omitempty"` |
| |
| // Template is the object that describes the pod that will be created if |
| // insufficient replicas are detected. This takes precedence over a TemplateRef. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#pod-template |
| Template *PodTemplateSpec `json:"template,omitempty"` |
| } |
| |
| // ReplicationControllerStatus represents the current status of a replication |
| // controller. |
| type ReplicationControllerStatus struct { |
| // Replicas is the most recently oberved number of replicas. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md#what-is-a-replication-controller |
| Replicas int `json:"replicas"` |
| |
| // ObservedGeneration reflects the generation of the most recently observed replication controller. |
| ObservedGeneration int64 `json:"observedGeneration,omitempty"` |
| } |
| |
| // ReplicationController represents the configuration of a replication controller. |
| type ReplicationController struct { |
| TypeMeta `json:",inline"` |
| |
| // If the Labels of a ReplicationController are empty, they are defaulted to |
| // be the same as the Pod(s) that the replication controller manages. |
| // Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the specification of the desired behavior of the replication controller. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec ReplicationControllerSpec `json:"spec,omitempty"` |
| |
| // Status is the most recently observed status of the replication controller. |
| // This data may be out of date by some window of time. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status ReplicationControllerStatus `json:"status,omitempty"` |
| } |
| |
| // ReplicationControllerList is a collection of replication controllers. |
| type ReplicationControllerList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of replication controllers. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/replication-controller.md |
| Items []ReplicationController `json:"items"` |
| } |
| |
| // Session Affinity Type string |
| type ServiceAffinity string |
| |
| const ( |
| // ServiceAffinityClientIP is the Client IP based. |
| ServiceAffinityClientIP ServiceAffinity = "ClientIP" |
| |
| // ServiceAffinityNone - no session affinity. |
| ServiceAffinityNone ServiceAffinity = "None" |
| ) |
| |
| // Service Type string describes ingress methods for a service |
| type ServiceType string |
| |
| const ( |
| // ServiceTypeClusterIP means a service will only be accessible inside the |
| // cluster, via the cluster IP. |
| ServiceTypeClusterIP ServiceType = "ClusterIP" |
| |
| // ServiceTypeNodePort means a service will be exposed on one port of |
| // every node, in addition to 'ClusterIP' type. |
| ServiceTypeNodePort ServiceType = "NodePort" |
| |
| // ServiceTypeLoadBalancer means a service will be exposed via an |
| // external load balancer (if the cloud provider supports it), in addition |
| // to 'NodePort' type. |
| ServiceTypeLoadBalancer ServiceType = "LoadBalancer" |
| ) |
| |
| // ServiceStatus represents the current status of a service. |
| type ServiceStatus struct { |
| // LoadBalancer contains the current status of the load-balancer, |
| // if one is present. |
| LoadBalancer LoadBalancerStatus `json:"loadBalancer,omitempty"` |
| } |
| |
| // LoadBalancerStatus represents the status of a load-balancer. |
| type LoadBalancerStatus struct { |
| // Ingress is a list containing ingress points for the load-balancer. |
| // Traffic intended for the service should be sent to these ingress points. |
| Ingress []LoadBalancerIngress `json:"ingress,omitempty"` |
| } |
| |
| // LoadBalancerIngress represents the status of a load-balancer ingress point: |
| // traffic intended for the service should be sent to an ingress point. |
| type LoadBalancerIngress struct { |
| // IP is set for load-balancer ingress points that are IP based |
| // (typically GCE or OpenStack load-balancers) |
| IP string `json:"ip,omitempty"` |
| |
| // Hostname is set for load-balancer ingress points that are DNS based |
| // (typically AWS load-balancers) |
| Hostname string `json:"hostname,omitempty"` |
| } |
| |
| // ServiceSpec describes the attributes that a user creates on a service. |
| type ServiceSpec struct { |
| // The list of ports that are exposed by this service. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies |
| Ports []ServicePort `json:"ports"` |
| |
| // This service will route traffic to pods having labels matching this selector. |
| // Label keys and values that must match in order to receive traffic for this service. |
| // If empty, all pods are selected, if not specified, endpoints must be manually specified. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#overview |
| Selector map[string]string `json:"selector,omitempty"` |
| |
| // ClusterIP is usually assigned by the master and is the IP address of the service. |
| // If specified, it will be allocated to the service if it is unused |
| // or else creation of the service will fail. |
| // Valid values are None, empty string (""), or a valid IP address. |
| // 'None' can be specified for a headless service when proxying is not required. |
| // Cannot be updated. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies |
| ClusterIP string `json:"clusterIP,omitempty"` |
| |
| // Type of exposed service. Must be ClusterIP, NodePort, or LoadBalancer. |
| // Defaults to ClusterIP. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#external-services |
| Type ServiceType `json:"type,omitempty"` |
| |
| // ExternalIPs are used by external load balancers, or can be set by |
| // users to handle external traffic that arrives at a node. |
| // Externally visible IPs (e.g. load balancers) that should be proxied to this service. |
| ExternalIPs []string `json:"externalIPs,omitempty"` |
| |
| // Supports "ClientIP" and "None". Used to maintain session affinity. |
| // Enable client IP based session affinity. |
| // Must be ClientIP or None. |
| // Defaults to None. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#virtual-ips-and-service-proxies |
| SessionAffinity ServiceAffinity `json:"sessionAffinity,omitempty"` |
| } |
| |
| // ServicePort contains information on service's port. |
| type ServicePort struct { |
| // The name of this port within the service. This must be a DNS_LABEL. |
| // All ports within a ServiceSpec must have unique names. This maps to |
| // the 'Name' field in EndpointPort objects. |
| // Optional if only one ServicePort is defined on this service. |
| Name string `json:"name,omitempty"` |
| |
| // The IP protocol for this port. Supports "TCP" and "UDP". |
| // Default is TCP. |
| Protocol Protocol `json:"protocol,omitempty"` |
| |
| // The port that will be exposed by this service. |
| Port int `json:"port"` |
| |
| // Number or name of the port to access on the pods targeted by the service. |
| // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. |
| // If this is a string, it will be looked up as a named port in the |
| // target Pod's container ports. If this is not specified, the value |
| // of Port is used (an identity map). |
| // Defaults to the service port. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#defining-a-service |
| TargetPort IntOrString `json:"targetPort,omitempty"` |
| |
| // The port on each node on which this service is exposed when type=NodePort or LoadBalancer. |
| // Usually assigned by the system. If specified, it will be allocated to the service |
| // if unused or else creation of the service will fail. |
| // Default is to auto-allocate a port if the ServiceType of this Service requires one. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/services.md#type--nodeport |
| NodePort int `json:"nodePort,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 Service struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the behavior of a service. |
| // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec ServiceSpec `json:"spec,omitempty"` |
| |
| // Most recently observed status of the service. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status ServiceStatus `json:"status,omitempty"` |
| } |
| |
| const ( |
| // ClusterIPNone - do not assign a cluster IP |
| // no proxying required and no environment variables should be created for pods |
| ClusterIPNone = "None" |
| ) |
| |
| // ServiceList holds a list of services. |
| type ServiceList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of services |
| Items []Service `json:"items"` |
| } |
| |
| // ServiceAccount binds together: |
| // * a name, understood by users, and perhaps by peripheral systems, for an identity |
| // * a principal that can be authenticated and authorized |
| // * a set of secrets |
| type ServiceAccount struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md |
| Secrets []ObjectReference `json:"secrets,omitempty" patchStrategy:"merge" patchMergeKey:"name"` |
| |
| // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images |
| // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets |
| // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md#manually-specifying-an-imagepullsecret |
| ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty"` |
| } |
| |
| // ServiceAccountList is a list of ServiceAccount objects |
| type ServiceAccountList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of ServiceAccounts. |
| // More info: http://releases.k8s.io/HEAD/docs/design/service_accounts.md#service-accounts |
| Items []ServiceAccount `json:"items"` |
| } |
| |
| // Endpoints is a collection of endpoints that implement the actual service. Example: |
| // Name: "mysvc", |
| // Subsets: [ |
| // { |
| // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], |
| // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] |
| // }, |
| // { |
| // Addresses: [{"ip": "10.10.3.3"}], |
| // Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] |
| // }, |
| // ] |
| type Endpoints struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // The set of all endpoints is the union of all subsets. |
| // Sets of addresses and ports that comprise a service. |
| Subsets []EndpointSubset `json:"subsets"` |
| } |
| |
| // EndpointSubset is a group of addresses with a common set of ports. The |
| // expanded set of endpoints is the Cartesian product of Addresses x Ports. |
| // For example, given: |
| // { |
| // Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], |
| // Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] |
| // } |
| // The resulting set of endpoints can be viewed as: |
| // a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], |
| // b: [ 10.10.1.1:309, 10.10.2.2:309 ] |
| type EndpointSubset struct { |
| // IP addresses which offer the related ports. |
| Addresses []EndpointAddress `json:"addresses,omitempty"` |
| // Port numbers available on the related IP addresses. |
| Ports []EndpointPort `json:"ports,omitempty"` |
| } |
| |
| // EndpointAddress is a tuple that describes single IP address. |
| type EndpointAddress struct { |
| // The IP of this endpoint. |
| // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16), |
| // or link-local multicast ((224.0.0.0/24). |
| // TODO: This should allow hostname or IP, See #4447. |
| IP string `json:"ip"` |
| |
| // Reference to object providing the endpoint. |
| TargetRef *ObjectReference `json:"targetRef,omitempty"` |
| } |
| |
| // EndpointPort is a tuple that describes a single port. |
| type EndpointPort struct { |
| // The name of this port (corresponds to ServicePort.Name). |
| // Must be a DNS_LABEL. |
| // Optional only if one port is defined. |
| Name string `json:"name,omitempty"` |
| |
| // The port number of the endpoint. |
| Port int `json:"port"` |
| |
| // The IP protocol for this port. |
| // Must be UDP or TCP. |
| // Default is TCP. |
| Protocol Protocol `json:"protocol,omitempty"` |
| } |
| |
| // EndpointsList is a list of endpoints. |
| type EndpointsList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of endpoints. |
| Items []Endpoints `json:"items"` |
| } |
| |
| // NodeSpec describes the attributes that a node is created with. |
| type NodeSpec struct { |
| // PodCIDR represents the pod IP range assigned to the node. |
| PodCIDR string `json:"podCIDR,omitempty"` |
| // External ID of the node assigned by some machine database (e.g. a cloud provider). |
| // Deprecated. |
| ExternalID string `json:"externalID,omitempty"` |
| // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID> |
| ProviderID string `json:"providerID,omitempty"` |
| // Unschedulable controls node schedulability of new pods. By default, node is schedulable. |
| // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` |
| Unschedulable bool `json:"unschedulable,omitempty"` |
| } |
| |
| // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. |
| type NodeSystemInfo struct { |
| // MachineID is the machine-id reported by the node. |
| MachineID string `json:"machineID"` |
| // SystemUUID is the system-uuid reported by the node. |
| SystemUUID string `json:"systemUUID"` |
| // BootID is the boot-id reported by the node. |
| BootID string `json:"bootID"` |
| // Kernel version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64) |
| KernelVersion string `json:"kernelVersion"` |
| // OS image used reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)) |
| OsImage string `json:"osImage"` |
| // Container runtime version reported by the node through runtime remote API (e.g. docker://1.5.0) |
| ContainerRuntimeVersion string `json:"containerRuntimeVersion"` |
| // Kubelet version reported by the node. |
| KubeletVersion string `json:"kubeletVersion"` |
| // Kube-proxy version reported by the node. |
| KubeProxyVersion string `json:"kubeProxyVersion"` |
| } |
| |
| // NodeStatus is information about the current status of a node. |
| type NodeStatus struct { |
| // Capacity represents the available resources of a node. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/persistent-volumes.md#capacity for more details. |
| Capacity ResourceList `json:"capacity,omitempty"` |
| // NodePhase is the recently observed lifecycle phase of the node. |
| // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-phase |
| Phase NodePhase `json:"phase,omitempty"` |
| // Conditions is an array of current observed node conditions. |
| // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-condition |
| Conditions []NodeCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"` |
| // List of addresses reachable to the node. |
| // Queried from cloud provider, if available. |
| // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-addresses |
| Addresses []NodeAddress `json:"addresses,omitempty" patchStrategy:"merge" patchMergeKey:"type"` |
| // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. |
| // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#node-info |
| NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty"` |
| } |
| |
| type NodePhase string |
| |
| // These are the valid phases of node. |
| const ( |
| // NodePending means the node has been created/added by the system, but not configured. |
| NodePending NodePhase = "Pending" |
| // NodeRunning means the node has been configured and has Kubernetes components running. |
| NodeRunning NodePhase = "Running" |
| // NodeTerminated means the node has been removed from the cluster. |
| NodeTerminated NodePhase = "Terminated" |
| ) |
| |
| type NodeConditionType string |
| |
| // These are valid conditions of node. Currently, we don't have enough information to decide |
| // node condition. In the future, we will add more. The proposed set of conditions are: |
| // NodeReachable, NodeLive, NodeReady, NodeSchedulable, NodeRunnable. |
| const ( |
| // NodeReady means kubelet is healthy and ready to accept pods. |
| NodeReady NodeConditionType = "Ready" |
| ) |
| |
| // NodeCondition contains condition information for a node. |
| type NodeCondition struct { |
| // Type of node condition, currently only Ready. |
| Type NodeConditionType `json:"type"` |
| // Status of the condition, one of True, False, Unknown. |
| Status ConditionStatus `json:"status"` |
| // Last time we got an update on a given condition. |
| LastHeartbeatTime Time `json:"lastHeartbeatTime,omitempty"` |
| // Last time the condition transit from one status to another. |
| LastTransitionTime Time `json:"lastTransitionTime,omitempty"` |
| // (brief) reason for the condition's last transition. |
| Reason string `json:"reason,omitempty"` |
| // Human readable message indicating details about last transition. |
| Message string `json:"message,omitempty"` |
| } |
| |
| type NodeAddressType string |
| |
| // These are valid address type of node. |
| const ( |
| NodeHostName NodeAddressType = "Hostname" |
| NodeExternalIP NodeAddressType = "ExternalIP" |
| NodeInternalIP NodeAddressType = "InternalIP" |
| ) |
| |
| // NodeAddress contains information for the node's address. |
| type NodeAddress struct { |
| // Node address type, one of Hostname, ExternalIP or InternalIP. |
| Type NodeAddressType `json:"type"` |
| // The node address. |
| Address string `json:"address"` |
| } |
| |
| // ResourceName is the name identifying various resources in a ResourceList. |
| type ResourceName string |
| |
| const ( |
| // CPU, in cores. (500m = .5 cores) |
| ResourceCPU ResourceName = "cpu" |
| // Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024) |
| ResourceMemory ResourceName = "memory" |
| // Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024) |
| ResourceStorage ResourceName = "storage" |
| ) |
| |
| // ResourceList is a set of (resource name, quantity) pairs. |
| type ResourceList map[ResourceName]Quantity |
| |
| // Node is a worker node in Kubernetes, formerly known as minion. |
| // Each node will have a unique identifier in the cache (i.e. in etcd). |
| type Node struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the behavior of a node. |
| // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec NodeSpec `json:"spec,omitempty"` |
| |
| // Most recently observed status of the node. |
| // Populated by the system. |
| // Read-only. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status NodeStatus `json:"status,omitempty"` |
| } |
| |
| // NodeList is the whole list of all Nodes which have been registered with master. |
| type NodeList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of nodes |
| Items []Node `json:"items"` |
| } |
| |
| type FinalizerName string |
| |
| // These are internal finalizer values to Kubernetes, must be qualified name unless defined here |
| const ( |
| FinalizerKubernetes FinalizerName = "kubernetes" |
| ) |
| |
| // NamespaceSpec describes the attributes on a Namespace. |
| type NamespaceSpec struct { |
| // Finalizers is an opaque list of values that must be empty to permanently remove object from storage. |
| // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#finalizers |
| Finalizers []FinalizerName `json:"finalizers,omitempty"` |
| } |
| |
| // NamespaceStatus is information about the current status of a Namespace. |
| type NamespaceStatus struct { |
| // Phase is the current lifecycle phase of the namespace. |
| // More info: http://releases.k8s.io/HEAD/docs/design/namespaces.md#phases |
| Phase NamespacePhase `json:"phase,omitempty"` |
| } |
| |
| type NamespacePhase string |
| |
| // These are the valid phases of a namespace. |
| const ( |
| // NamespaceActive means the namespace is available for use in the system |
| NamespaceActive NamespacePhase = "Active" |
| // NamespaceTerminating means the namespace is undergoing graceful termination |
| NamespaceTerminating NamespacePhase = "Terminating" |
| ) |
| |
| // Namespace provides a scope for Names. |
| // Use of multiple namespaces is optional. |
| type Namespace struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the behavior of the Namespace. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec NamespaceSpec `json:"spec,omitempty"` |
| |
| // Status describes the current status of a Namespace. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status NamespaceStatus `json:"status,omitempty"` |
| } |
| |
| // NamespaceList is a list of Namespaces. |
| type NamespaceList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Items is the list of Namespace objects in the list. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md |
| Items []Namespace `json:"items"` |
| } |
| |
| // Binding ties one object to another. |
| // For example, a pod is bound to a node by a scheduler. |
| type Binding struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // The target object that you want to bind to the standard object. |
| Target ObjectReference `json:"target"` |
| } |
| |
| // DeleteOptions may be provided when deleting an API object |
| type DeleteOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // The duration in seconds before the object should be deleted. Value must be non-negative integer. |
| // The value zero indicates delete immediately. If this value is nil, the default grace period for the |
| // specified type will be used. |
| // Defaults to a per object value if not specified. zero means delete immediately. |
| GracePeriodSeconds *int64 `json:"gracePeriodSeconds"` |
| } |
| |
| // ListOptions is the query options to a standard REST list call. |
| type ListOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // A selector to restrict the list of returned objects by their labels. |
| // Defaults to everything. |
| LabelSelector string `json:"labelSelector,omitempty"` |
| // A selector to restrict the list of returned objects by their fields. |
| // Defaults to everything. |
| FieldSelector string `json:"fieldSelector,omitempty"` |
| // Watch for changes to the described resources and return them as a stream of |
| // add, update, and remove notifications. Specify resourceVersion. |
| Watch bool `json:"watch,omitempty"` |
| // When specified with a watch call, shows changes that occur after that particular version of a resource. |
| // Defaults to changes from the beginning of history. |
| ResourceVersion string `json:"resourceVersion,omitempty"` |
| } |
| |
| // PodLogOptions is the query options for a Pod's logs REST call. |
| type PodLogOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // The container for which to stream logs. Defaults to only container if there is one container in the pod. |
| Container string `json:"container,omitempty"` |
| |
| // Follow the log stream of the pod. |
| // Defaults to false. |
| Follow bool `json:"follow,omitempty"` |
| |
| // Return previous terminated container logs. |
| // Defaults to false. |
| Previous bool `json:"previous,omitempty"` |
| } |
| |
| // PodAttachOptions is the query options to a Pod's remote attach call. |
| // --- |
| // TODO: merge w/ PodExecOptions below for stdin, stdout, etc |
| // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY |
| type PodAttachOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // Stdin if true, redirects the standard input stream of the pod for this call. |
| // Defaults to false. |
| Stdin bool `json:"stdin,omitempty"` |
| |
| // Stdout if true indicates that stdout is to be redirected for the attach call. |
| // Defaults to true. |
| Stdout bool `json:"stdout,omitempty"` |
| |
| // Stderr if true indicates that stderr is to be redirected for the attach call. |
| // Defaults to true. |
| Stderr bool `json:"stderr,omitempty"` |
| |
| // TTY if true indicates that a tty will be allocated for the attach call. |
| // This is passed through the container runtime so the tty |
| // is allocated on the worker node by the container runtime. |
| // Defaults to false. |
| TTY bool `json:"tty,omitempty"` |
| |
| // The container in which to execute the command. |
| // Defaults to only container if there is only one container in the pod. |
| Container string `json:"container,omitempty"` |
| } |
| |
| // PodExecOptions is the query options to a Pod's remote exec call. |
| // --- |
| // TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging |
| // and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY |
| type PodExecOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // Redirect the standard input stream of the pod for this call. |
| // Defaults to false. |
| Stdin bool `json:"stdin,omitempty"` |
| |
| // Redirect the standard output stream of the pod for this call. |
| // Defaults to true. |
| Stdout bool `json:"stdout,omitempty"` |
| |
| // Redirect the standard error stream of the pod for this call. |
| // Defaults to true. |
| Stderr bool `json:"stderr,omitempty"` |
| |
| // TTY if true indicates that a tty will be allocated for the exec call. |
| // Defaults to false. |
| TTY bool `json:"tty,omitempty"` |
| |
| // Container in which to execute the command. |
| // Defaults to only container if there is only one container in the pod. |
| Container string `json:"container,omitempty"` |
| |
| // Command is the remote command to execute. argv array. Not executed within a shell. |
| Command []string `json:"command"` |
| } |
| |
| // PodProxyOptions is the query options to a Pod's proxy call. |
| type PodProxyOptions struct { |
| TypeMeta `json:",inline"` |
| |
| // Path is the URL path to use for the current proxy request to pod. |
| Path string `json:"path,omitempty"` |
| } |
| |
| // Status is a return value for calls that don't return other objects. |
| type Status struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Status of the operation. |
| // One of: "Success" or "Failure". |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status string `json:"status,omitempty"` |
| // A human-readable description of the status of this operation. |
| Message string `json:"message,omitempty"` |
| // A machine-readable description of why this operation is in the |
| // "Failure" status. If this value is empty there |
| // is no information available. A Reason clarifies an HTTP status |
| // code but does not override it. |
| Reason StatusReason `json:"reason,omitempty"` |
| // Extended data associated with the reason. Each reason may define its |
| // own extended details. This field is optional and the data returned |
| // is not guaranteed to conform to any schema except that defined by |
| // the reason type. |
| Details *StatusDetails `json:"details,omitempty"` |
| // Suggested HTTP return code for this status, 0 if not set. |
| Code int `json:"code,omitempty"` |
| } |
| |
| // StatusDetails is a set of additional properties that MAY be set by the |
| // server to provide additional information about a response. The Reason |
| // field of a Status object defines what attributes will be set. Clients |
| // must ignore fields that do not match the defined type of each attribute, |
| // and should assume that any attribute may be empty, invalid, or under |
| // defined. |
| type StatusDetails struct { |
| // The name attribute of the resource associated with the status StatusReason |
| // (when there is a single name which can be described). |
| Name string `json:"name,omitempty"` |
| // The kind attribute of the resource associated with the status StatusReason. |
| // On some operations may differ from the requested resource Kind. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| Kind string `json:"kind,omitempty"` |
| // The Causes array includes more details associated with the StatusReason |
| // failure. Not all StatusReasons may provide detailed causes. |
| Causes []StatusCause `json:"causes,omitempty"` |
| // If specified, the time in seconds before the operation should be retried. |
| RetryAfterSeconds int `json:"retryAfterSeconds,omitempty"` |
| } |
| |
| // Values of Status.Status |
| const ( |
| StatusSuccess = "Success" |
| StatusFailure = "Failure" |
| ) |
| |
| // StatusReason is an enumeration of possible failure causes. Each StatusReason |
| // must map to a single HTTP status code, but multiple reasons may map |
| // to the same HTTP status code. |
| // TODO: move to apiserver |
| type StatusReason string |
| |
| const ( |
| // StatusReasonUnknown means the server has declined to indicate a specific reason. |
| // The details field may contain other information about this error. |
| // Status code 500. |
| StatusReasonUnknown StatusReason = "" |
| |
| // StatusReasonNotFound means one or more resources required for this operation |
| // could not be found. |
| // Details (optional): |
| // "kind" string - the kind attribute of the missing resource |
| // on some operations may differ from the requested |
| // resource. |
| // "id" string - the identifier of the missing resource |
| // Status code 404 |
| StatusReasonNotFound StatusReason = "NotFound" |
| |
| // StatusReasonAlreadyExists means the resource you are creating already exists. |
| // Details (optional): |
| // "kind" string - the kind attribute of the conflicting resource |
| // "id" string - the identifier of the conflicting resource |
| // Status code 409 |
| StatusReasonAlreadyExists StatusReason = "AlreadyExists" |
| |
| // StatusReasonConflict means the requested update operation cannot be completed |
| // due to a conflict in the operation. The client may need to alter the request. |
| // Each resource may define custom details that indicate the nature of the |
| // conflict. |
| // Status code 409 |
| StatusReasonConflict StatusReason = "Conflict" |
| |
| // StatusReasonInvalid means the requested create or update operation cannot be |
| // completed due to invalid data provided as part of the request. The client may |
| // need to alter the request. When set, the client may use the StatusDetails |
| // message field as a summary of the issues encountered. |
| // Details (optional): |
| // "kind" string - the kind attribute of the invalid resource |
| // "id" string - the identifier of the invalid resource |
| // "causes" - one or more StatusCause entries indicating the data in the |
| // provided resource that was invalid. The code, message, and |
| // field attributes will be set. |
| // Status code 422 |
| StatusReasonInvalid StatusReason = "Invalid" |
| |
| // StatusReasonServerTimeout means the server can be reached and understood the request, |
| // but cannot complete the action in a reasonable time. The client should retry the request. |
| // This is may be due to temporary server load or a transient communication issue with |
| // another server. Status code 500 is used because the HTTP spec provides no suitable |
| // server-requested client retry and the 5xx class represents actionable errors. |
| // Details (optional): |
| // "kind" string - the kind attribute of the resource being acted on. |
| // "id" string - the operation that is being attempted. |
| // Status code 500 |
| StatusReasonServerTimeout StatusReason = "ServerTimeout" |
| ) |
| |
| // StatusCause provides more information about an api.Status failure, including |
| // cases when multiple errors are encountered. |
| type StatusCause struct { |
| // A machine-readable description of the cause of the error. If this value is |
| // empty there is no information available. |
| Type CauseType `json:"reason,omitempty"` |
| // A human-readable description of the cause of the error. This field may be |
| // presented as-is to a reader. |
| Message string `json:"message,omitempty"` |
| // The field of the resource that has caused this error, as named by its JSON |
| // serialization. May include dot and postfix notation for nested attributes. |
| // Arrays are zero-indexed. Fields may appear more than once in an array of |
| // causes due to fields having multiple errors. |
| // |
| // Examples: |
| // "name" - the field "name" on the current resource |
| // "items[0].name" - the field "name" on the first array entry in "items" |
| Field string `json:"field,omitempty"` |
| } |
| |
| // CauseType is a machine readable value providing more detail about what |
| // occurred in a status response. An operation may have multiple causes for a |
| // status (whether Failure or Success). |
| type CauseType string |
| |
| const ( |
| // CauseTypeFieldValueNotFound is used to report failure to find a requested value |
| // (e.g. looking up an ID). |
| CauseTypeFieldValueNotFound CauseType = "FieldValueNotFound" |
| // CauseTypeFieldValueRequired is used to report required values that are not |
| // provided (e.g. empty strings, null values, or empty arrays). |
| CauseTypeFieldValueRequired CauseType = "FieldValueRequired" |
| // CauseTypeFieldValueDuplicate is used to report collisions of values that must be |
| // unique (e.g. unique IDs). |
| CauseTypeFieldValueDuplicate CauseType = "FieldValueDuplicate" |
| // CauseTypeFieldValueInvalid is used to report malformed values (e.g. failed regex |
| // match). |
| CauseTypeFieldValueInvalid CauseType = "FieldValueInvalid" |
| // CauseTypeFieldValueNotSupported is used to report valid (as per formatting rules) |
| // values that can not be handled (e.g. an enumerated string). |
| CauseTypeFieldValueNotSupported CauseType = "FieldValueNotSupported" |
| ) |
| |
| // ObjectReference contains enough information to let you inspect or modify the referred object. |
| type ObjectReference struct { |
| // Kind of the referent. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| Kind string `json:"kind,omitempty"` |
| // Namespace of the referent. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/namespaces.md |
| Namespace string `json:"namespace,omitempty"` |
| // Name of the referent. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names |
| Name string `json:"name,omitempty"` |
| // UID of the referent. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids |
| UID UID `json:"uid,omitempty"` |
| // API version of the referent. |
| APIVersion string `json:"apiVersion,omitempty"` |
| // Specific resourceVersion to which this reference is made, if any. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#concurrency-control-and-consistency |
| ResourceVersion string `json:"resourceVersion,omitempty"` |
| |
| // If referring to a piece of an object instead of an entire object, this string |
| // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. |
| // For example, if the object reference is to a container within a pod, this would take on a value like: |
| // "spec.containers{name}" (where "name" refers to the name of the container that triggered |
| // the event) or if no container name is specified "spec.containers[2]" (container with |
| // index 2 in this pod). This syntax is chosen only to have some well-defined way of |
| // referencing a part of an object. |
| // TODO: this design is not final and this field is subject to change in the future. |
| FieldPath string `json:"fieldPath,omitempty"` |
| } |
| |
| // LocalObjectReference contains enough information to let you locate the |
| // referenced object inside the same namespace. |
| type LocalObjectReference struct { |
| // Name of the referent. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names |
| // TODO: Add other useful fields. apiVersion, kind, uid? |
| Name string `json:"name,omitempty"` |
| } |
| |
| // SerializedReference is a reference to serialized object. |
| type SerializedReference struct { |
| TypeMeta `json:",inline"` |
| // The reference to an object in the system. |
| Reference ObjectReference `json:"reference,omitempty"` |
| } |
| |
| // EventSource contains information for an event. |
| type EventSource struct { |
| // Component from which the event is generated. |
| Component string `json:"component,omitempty"` |
| // Host name on which the event is generated. |
| Host string `json:"host,omitempty"` |
| } |
| |
| // Event is a report of an event somewhere in the cluster. |
| // TODO: Decide whether to store these separately or with the object they apply to. |
| type Event struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata"` |
| |
| // The object that this event is about. |
| InvolvedObject ObjectReference `json:"involvedObject"` |
| |
| // This should be a short, machine understandable string that gives the reason |
| // for the transition into the object's current status. |
| // TODO: provide exact specification for format. |
| Reason string `json:"reason,omitempty"` |
| |
| // A human-readable description of the status of this operation. |
| // TODO: decide on maximum length. |
| Message string `json:"message,omitempty"` |
| |
| // The component reporting this event. Should be a short machine understandable string. |
| Source EventSource `json:"source,omitempty"` |
| |
| // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.) |
| FirstTimestamp Time `json:"firstTimestamp,omitempty"` |
| |
| // The time at which the most recent occurrence of this event was recorded. |
| LastTimestamp Time `json:"lastTimestamp,omitempty"` |
| |
| // The number of times this event has occurred. |
| Count int `json:"count,omitempty"` |
| } |
| |
| // EventList is a list of events. |
| type EventList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of events |
| Items []Event `json:"items"` |
| } |
| |
| // List holds a list of objects, which may not be known by the server. |
| type List struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of objects |
| // TODO: Undelete if needed: Items []runtime.RawExtension `json:"items"` |
| } |
| |
| // LimitType is a type of object that is limited |
| type LimitType string |
| |
| const ( |
| // Limit that applies to all pods in a namespace |
| LimitTypePod LimitType = "Pod" |
| // Limit that applies to all containers in a namespace |
| LimitTypeContainer LimitType = "Container" |
| ) |
| |
| // LimitRangeItem defines a min/max usage limit for any resource that matches on kind. |
| type LimitRangeItem struct { |
| // Type of resource that this limit applies to. |
| Type LimitType `json:"type,omitempty"` |
| // Max usage constraints on this kind by resource name. |
| Max ResourceList `json:"max,omitempty"` |
| // Min usage constraints on this kind by resource name. |
| Min ResourceList `json:"min,omitempty"` |
| // Default resource requirement limit value by resource name if resource limit is omitted. |
| Default ResourceList `json:"default,omitempty"` |
| // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted. |
| DefaultRequest ResourceList `json:"defaultRequest,omitempty"` |
| // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource. |
| MaxLimitRequestRatio ResourceList `json:"maxLimitRequestRatio,omitempty"` |
| } |
| |
| // LimitRangeSpec defines a min/max usage limit for resources that match on kind. |
| type LimitRangeSpec struct { |
| // Limits is the list of LimitRangeItem objects that are enforced. |
| Limits []LimitRangeItem `json:"limits"` |
| } |
| |
| // LimitRange sets resource usage limits for each kind of resource in a Namespace. |
| type LimitRange struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the limits enforced. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec LimitRangeSpec `json:"spec,omitempty"` |
| } |
| |
| // LimitRangeList is a list of LimitRange items. |
| type LimitRangeList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Items is a list of LimitRange objects. |
| // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_limit_range.md |
| Items []LimitRange `json:"items"` |
| } |
| |
| // The following identify resource constants for Kubernetes object types |
| const ( |
| // Pods, number |
| ResourcePods ResourceName = "pods" |
| // Services, number |
| ResourceServices ResourceName = "services" |
| // ReplicationControllers, number |
| ResourceReplicationControllers ResourceName = "replicationcontrollers" |
| // ResourceQuotas, number |
| ResourceQuotas ResourceName = "resourcequotas" |
| // ResourceSecrets, number |
| ResourceSecrets ResourceName = "secrets" |
| // ResourcePersistentVolumeClaims, number |
| ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims" |
| ) |
| |
| // ResourceQuotaSpec defines the desired hard limits to enforce for Quota. |
| type ResourceQuotaSpec struct { |
| // Hard is the set of desired hard limits for each named resource. |
| // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota |
| Hard ResourceList `json:"hard,omitempty"` |
| } |
| |
| // ResourceQuotaStatus defines the enforced hard limits and observed use. |
| type ResourceQuotaStatus struct { |
| // Hard is the set of enforced hard limits for each named resource. |
| // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota |
| Hard ResourceList `json:"hard,omitempty"` |
| // Used is the current observed total usage of the resource in the namespace. |
| Used ResourceList `json:"used,omitempty"` |
| } |
| |
| // ResourceQuota sets aggregate quota restrictions enforced per namespace |
| type ResourceQuota struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Spec defines the desired quota. |
| // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Spec ResourceQuotaSpec `json:"spec,omitempty"` |
| |
| // Status defines the actual enforced quota and its current usage. |
| // http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status |
| Status ResourceQuotaStatus `json:"status,omitempty"` |
| } |
| |
| // ResourceQuotaList is a list of ResourceQuota items. |
| type ResourceQuotaList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Items is a list of ResourceQuota objects. |
| // More info: http://releases.k8s.io/HEAD/docs/design/admission_control_resource_quota.md#admissioncontrol-plugin-resourcequota |
| Items []ResourceQuota `json:"items"` |
| } |
| |
| // Secret holds secret data of a certain type. The total bytes of the values in |
| // the Data field must be less than MaxSecretSize bytes. |
| type Secret struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Data contains the secret data. Each key must be a valid DNS_SUBDOMAIN |
| // or leading dot followed by valid DNS_SUBDOMAIN. |
| // The serialized form of the secret data is a base64 encoded string, |
| // representing the arbitrary (possibly non-string) data value here. |
| // Described in https://tools.ietf.org/html/rfc4648#section-4 |
| Data map[string][]byte `json:"data,omitempty"` |
| |
| // Used to facilitate programmatic handling of secret data. |
| Type SecretType `json:"type,omitempty"` |
| } |
| |
| const MaxSecretSize = 1 * 1024 * 1024 |
| |
| type SecretType string |
| |
| const ( |
| // SecretTypeOpaque is the default. Arbitrary user-defined data |
| SecretTypeOpaque SecretType = "Opaque" |
| |
| // SecretTypeServiceAccountToken contains a token that identifies a service account to the API |
| // |
| // Required fields: |
| // - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies |
| // - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies |
| // - Secret.Data["token"] - a token that identifies the service account to the API |
| SecretTypeServiceAccountToken SecretType = "kubernetes.io/service-account-token" |
| |
| // ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets |
| ServiceAccountNameKey = "kubernetes.io/service-account.name" |
| // ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets |
| ServiceAccountUIDKey = "kubernetes.io/service-account.uid" |
| // ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets |
| ServiceAccountTokenKey = "token" |
| // ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets |
| ServiceAccountKubeconfigKey = "kubernetes.kubeconfig" |
| // ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets |
| ServiceAccountRootCAKey = "ca.crt" |
| |
| // SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg |
| // |
| // Required fields: |
| // - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file |
| SecretTypeDockercfg SecretType = "kubernetes.io/dockercfg" |
| |
| // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets |
| DockerConfigKey = ".dockercfg" |
| ) |
| |
| // SecretList is a list of Secret. |
| type SecretList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Items is a list of secret objects. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/secrets.md |
| Items []Secret `json:"items"` |
| } |
| |
| // Type and constants for component health validation. |
| type ComponentConditionType string |
| |
| // These are the valid conditions for the component. |
| const ( |
| ComponentHealthy ComponentConditionType = "Healthy" |
| ) |
| |
| // Information about the condition of a component. |
| type ComponentCondition struct { |
| // Type of condition for a component. |
| // Valid value: "Healthy" |
| Type ComponentConditionType `json:"type"` |
| // Status of the condition for a component. |
| // Valid values for "Healthy": "True", "False", or "Unknown". |
| Status ConditionStatus `json:"status"` |
| // Message about the condition for a component. |
| // For example, information about a health check. |
| Message string `json:"message,omitempty"` |
| // Condition error code for a component. |
| // For example, a health check error code. |
| Error string `json:"error,omitempty"` |
| } |
| |
| // ComponentStatus (and ComponentStatusList) holds the cluster validation info. |
| type ComponentStatus struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // List of component conditions observed |
| Conditions []ComponentCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"` |
| } |
| |
| // Status of all the conditions for the component as a list of ComponentStatus objects. |
| type ComponentStatusList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds |
| ListMeta `json:"metadata,omitempty"` |
| |
| // List of ComponentStatus objects. |
| Items []ComponentStatus `json:"items"` |
| } |
| |
| // DownwardAPIVolumeSource represents a volume containing downward API info |
| type DownwardAPIVolumeSource struct { |
| // Items is a list of downward API volume file |
| Items []DownwardAPIVolumeFile `json:"items,omitempty"` |
| } |
| |
| // DownwardAPIVolumeFile represents information to create the file containing the pod field |
| type DownwardAPIVolumeFile struct { |
| // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' |
| Path string `json:"path"` |
| // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. |
| FieldRef ObjectFieldSelector `json:"fieldRef"` |
| } |
| |
| // SecurityContext holds security configuration that will be applied to a container. |
| type SecurityContext struct { |
| // The linux kernel capabilities that should be added or removed. |
| // Default to Container.Capabilities if left unset. |
| // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context |
| Capabilities *Capabilities `json:"capabilities,omitempty"` |
| |
| // Run the container in privileged mode. |
| // Default to Container.Privileged if left unset. |
| // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context |
| Privileged *bool `json:"privileged,omitempty"` |
| |
| // SELinuxOptions are the labels to be applied to the container |
| // and volumes. |
| // Options that control the SELinux labels applied. |
| // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context |
| SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty"` |
| |
| // RunAsUser is the UID to run the entrypoint of the container process. |
| // The user id that runs the first process in the container. |
| // More info: http://releases.k8s.io/HEAD/docs/design/security_context.md#security-context |
| RunAsUser *int64 `json:"runAsUser,omitempty"` |
| |
| // RunAsNonRoot indicates that the container should be run as a non-root user. If the RunAsUser |
| // field is not explicitly set then the kubelet may check the image for a specified user or |
| // perform defaulting to specify a user. |
| RunAsNonRoot bool `json:"runAsNonRoot,omitempty"` |
| } |
| |
| // SELinuxOptions are the labels to be applied to the container |
| type SELinuxOptions struct { |
| // User is a SELinux user label that applies to the container. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md |
| User string `json:"user,omitempty"` |
| |
| // Role is a SELinux role label that applies to the container. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md |
| Role string `json:"role,omitempty"` |
| |
| // Type is a SELinux type label that applies to the container. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md |
| Type string `json:"type,omitempty"` |
| |
| // Level is SELinux level label that applies to the container. |
| // More info: http://releases.k8s.io/HEAD/docs/user-guide/labels.md |
| Level string `json:"level,omitempty"` |
| } |
| |
| // RangeAllocation is not a public type. |
| type RangeAllocation struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // Range is string that identifies the range represented by 'data'. |
| Range string `json:"range"` |
| // Data is a bit array containing all allocated addresses in the previous segment. |
| Data []byte `json:"data"` |
| } |
| |
| // A ThirdPartyResource is a generic representation of a resource, it is used by add-ons and plugins to add new resource |
| // types to the API. It consists of one or more Versions of the api. |
| type ThirdPartyResource struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // The description of this object. |
| Description string `json:"description,omitempty"` |
| |
| // The versions for this third party object. |
| Versions []APIVersion `json:"versions,omitempty"` |
| } |
| |
| // ThirdPartyResourceList is a list of ThirdPartyResource. |
| type ThirdPartyResourceList struct { |
| TypeMeta `json:",inline"` |
| // Standard list metadata. |
| // More info: http://docs.k8s.io/api-conventions.md#metadata |
| ListMeta `json:"metadata,omitempty"` |
| |
| // Items is a list of schema objects. |
| Items []ThirdPartyResource `json:"items"` |
| } |
| |
| // An APIVersion represents a single concrete version of an object model. |
| type APIVersion struct { |
| // Name of this version (e.g. 'v1'). |
| Name string `json:"name,omitempty"` |
| // The API group to add this object into. |
| // Default 'experimental'. |
| APIGroup string `json:"apiGroup,omitempty"` |
| } |
| |
| // An internal object, used for versioned storage in etcd. Not exposed to the end user. |
| type ThirdPartyResourceData struct { |
| TypeMeta `json:",inline"` |
| // Standard object's metadata. |
| // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata |
| ObjectMeta `json:"metadata,omitempty"` |
| |
| // The raw JSON data for this data. |
| Data []byte `json:"name,omitempty"` |
| } |