aboutsummaryrefslogtreecommitdiffstats
path: root/kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go
diff options
context:
space:
mode:
Diffstat (limited to 'kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go')
-rw-r--r--kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go2891
1 files changed, 0 insertions, 2891 deletions
diff --git a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go b/kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go
deleted file mode 100644
index 7225e8f..0000000
--- a/kube2msb/src/vendor/k8s.io/kubernetes/pkg/api/types.go
+++ /dev/null
@@ -1,2891 +0,0 @@
-/*
-Copyright 2014 The Kubernetes Authors.
-
-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
-
-import (
- "k8s.io/kubernetes/pkg/api/resource"
- "k8s.io/kubernetes/pkg/api/unversioned"
- "k8s.io/kubernetes/pkg/fields"
- "k8s.io/kubernetes/pkg/labels"
- "k8s.io/kubernetes/pkg/runtime"
- "k8s.io/kubernetes/pkg/types"
- "k8s.io/kubernetes/pkg/util/intstr"
-)
-
-// 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.
-
-// ObjectMeta is metadata that all persisted resources must have, which includes all objects
-// users must create.
-type ObjectMeta struct {
- // Name is unique within a namespace. Name 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.
- Name string `json:"name,omitempty"`
-
- // GenerateName indicates that the name should be made unique by the server prior to persisting
- // it. A non-empty value for the field indicates the name will be made unique (and the name
- // returned to the client will be different than the name passed). The value of this field will
- // be combined with a unique suffix on the server if the Name field has not been provided.
- // The provided value must be valid within the rules for Name, 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 Name is not present, the server will NOT return a 409 if the
- // generated name exists - 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).
- GenerateName string `json:"generateName,omitempty"`
-
- // Namespace defines the space within which 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.
- Namespace string `json:"namespace,omitempty"`
-
- // SelfLink is a URL representing this object.
- 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.
- UID types.UID `json:"uid,omitempty"`
-
- // An opaque value that represents the version of this resource. 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 values may only be valid for a particular
- // resource or set of resources. Only servers will generate resource versions.
- ResourceVersion string `json:"resourceVersion,omitempty"`
-
- // A sequence number representing a specific generation of the desired state.
- // 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.
- CreationTimestamp unversioned.Time `json:"creationTimestamp,omitempty"`
-
- // DeletionTimestamp is the time after 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.
- DeletionTimestamp *unversioned.Time `json:"deletionTimestamp,omitempty"`
-
- // DeletionGracePeriodSeconds records the graceful deletion value set when graceful deletion
- // was requested. Represents the most recent grace period, and may only be shortened once set.
- DeletionGracePeriodSeconds *int64 `json:"deletionGracePeriodSeconds,omitempty"`
-
- // Labels are key value pairs that may be used to scope and select individual resources.
- // Label keys are of the form:
- // label-key ::= prefixed-name | name
- // prefixed-name ::= prefix '/' name
- // prefix ::= DNS_SUBDOMAIN
- // name ::= DNS_LABEL
- // The prefix is optional. If the prefix is not specified, the key is assumed to be private
- // to the user. Other system components that wish to use labels must specify a prefix. The
- // "kubernetes.io/" prefix is reserved for use by kubernetes components.
- // TODO: replace map[string]string with labels.LabelSet type
- Labels map[string]string `json:"labels,omitempty"`
-
- // Annotations are unstructured key value data stored with a resource that may be set by
- // external tooling. They are not queryable and should be preserved when modifying
- // objects. Annotation keys have the same formatting restrictions as Label keys. See the
- // comments on Labels for details.
- Annotations map[string]string `json:"annotations,omitempty"`
-
- // List of objects depended by this object. If ALL objects in the list have
- // been deleted, this object will be garbage collected. If this object is managed by a controller,
- // then an entry in this list will point to this controller, with the controller field set to true.
- // There cannot be more than one managing controller.
- OwnerReferences []OwnerReference `json:"ownerReferences,omitempty"`
-
- // Must be empty before the object is deleted from the registry. Each entry
- // is an identifier for the responsible component that will remove the entry
- // from the list. If the deletionTimestamp of the object is non-nil, entries
- // in this list can only be removed.
- Finalizers []string `json:"finalizers,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 = ""
- // NamespaceNone is the argument for a context when there is no namespace.
- NamespaceNone string = ""
- // NamespaceSystem is the system namespace where we place system components.
- NamespaceSystem string = "kube-system"
- // TerminationMessagePathDefault means the default path to capture the application termination message running in a container
- TerminationMessagePathDefault string = "/dev/termination-log"
-)
-
-// Volume represents a named volume in a pod that may be accessed by any containers in the pod.
-type Volume struct {
- // Required: This must be a DNS_LABEL. Each volume in a pod must have
- // a unique name.
- Name string `json:"name"`
- // The VolumeSource represents the location and type of a volume to mount.
- // This is optional for now. If not specified, the Volume is implied to be an EmptyDir.
- // This implied behavior is deprecated and will be removed in a future version.
- VolumeSource `json:",inline,omitempty"`
-}
-
-// VolumeSource represents the source location of a volume to mount.
-// Only one of its members may be specified.
-type VolumeSource struct {
- // HostPath represents 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.
- // ---
- // 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.
- 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.
- GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"`
- // AWSElasticBlockStore represents an AWS EBS disk that is attached to a
- // kubelet's host machine and then exposed to the pod.
- 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.
- Secret *SecretVolumeSource `json:"secret,omitempty"`
- // NFS represents an NFS mount on the host that shares a pod's lifetime
- NFS *NFSVolumeSource `json:"nfs,omitempty"`
- // ISCSIVolumeSource represents an ISCSI Disk resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"`
- // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime
- Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"`
- // PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace
- PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty"`
- // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime
- RBD *RBDVolumeSource `json:"rbd,omitempty"`
- // FlexVolume represents a generic volume resource that is
- // provisioned/attached using a exec based plugin. This is an alpha feature and may change in future.
- FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty"`
-
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- Cinder *CinderVolumeSource `json:"cinder,omitempty"`
-
- // CephFS represents a Cephfs mount on the host that shares a pod's lifetime
- CephFS *CephFSVolumeSource `json:"cephfs,omitempty"`
-
- // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
- Flocker *FlockerVolumeSource `json:"flocker,omitempty"`
-
- // DownwardAPI represents metadata about the pod that should populate this volume
- DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty"`
- // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
- FC *FCVolumeSource `json:"fc,omitempty"`
- // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
- AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty"`
- // ConfigMap represents a configMap that should populate this volume
- ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty"`
- // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
- VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty"`
-}
-
-// 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.
- GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty"`
- // AWSElasticBlockStore represents an AWS EBS disk that is attached to a
- // kubelet's host machine and then exposed to the pod.
- AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty"`
- // HostPath represents a directory on the host.
- // Provisioned by a developer or tester.
- // This is useful for single-node development and testing only!
- // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
- HostPath *HostPathVolumeSource `json:"hostPath,omitempty"`
- // Glusterfs represents a Glusterfs volume that is attached to a host and exposed to the pod
- Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty"`
- // NFS represents an NFS mount on the host that shares a pod's lifetime
- NFS *NFSVolumeSource `json:"nfs,omitempty"`
- // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime
- RBD *RBDVolumeSource `json:"rbd,omitempty"`
- // ISCSIVolumeSource represents an ISCSI resource that is attached to a
- // kubelet's host machine and then exposed to the pod.
- ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty"`
- // FlexVolume represents a generic volume resource that is
- // provisioned/attached using a exec based plugin. This is an alpha feature and may change in future.
- FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty"`
- // Cinder represents a cinder volume attached and mounted on kubelets host machine
- 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"`
- // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
- FC *FCVolumeSource `json:"fc,omitempty"`
- // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
- Flocker *FlockerVolumeSource `json:"flocker,omitempty"`
- // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
- AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty"`
- // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
- VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty"`
-}
-
-type PersistentVolumeClaimVolumeSource struct {
- // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume
- ClaimName string `json:"claimName"`
- // Optional: Defaults to false (read/write). ReadOnly here
- // will force the ReadOnly setting in VolumeMounts
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// +genclient=true
-// +nonNamespaced=true
-
-type PersistentVolume struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- //Spec defines a persistent volume owned by the cluster
- Spec PersistentVolumeSpec `json:"spec,omitempty"`
-
- // Status represents the current information about persistent volume.
- Status PersistentVolumeStatus `json:"status,omitempty"`
-}
-
-type PersistentVolumeSpec struct {
- // Resources represents the actual resources of the volume
- Capacity ResourceList `json:"capacity"`
- // Source represents the location and type of a volume to mount.
- PersistentVolumeSource `json:",inline"`
- // AccessModes contains all ways the volume can be mounted
- AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"`
- // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
- // ClaimRef is expected to be non-nil when bound.
- // claim.VolumeName is the authoritative bind between PV and PVC.
- // When set to non-nil value, PVC.Spec.Selector of the referenced PVC is
- // ignored, i.e. labels of this PV do not need to match PVC selector.
- ClaimRef *ObjectReference `json:"claimRef,omitempty"`
- // Optional: what happens to a persistent volume when released from its claim.
- 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.
- PersistentVolumeReclaimDelete PersistentVolumeReclaimPolicy = "Delete"
- // PersistentVolumeReclaimRetain means the volume will be left in its current phase (Released) for manual reclamation by the administrator.
- // The default policy is Retain.
- PersistentVolumeReclaimRetain PersistentVolumeReclaimPolicy = "Retain"
-)
-
-type PersistentVolumeStatus struct {
- // Phase indicates if a volume is available, bound to a claim, or released by a claim
- 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"`
-}
-
-type PersistentVolumeList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
- Items []PersistentVolume `json:"items"`
-}
-
-// +genclient=true
-
-// PersistentVolumeClaim is a user's request for and claim to a persistent volume
-type PersistentVolumeClaim struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the volume requested by a pod author
- Spec PersistentVolumeClaimSpec `json:"spec,omitempty"`
-
- // Status represents the current information about a claim
- Status PersistentVolumeClaimStatus `json:"status,omitempty"`
-}
-
-type PersistentVolumeClaimList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
- Items []PersistentVolumeClaim `json:"items"`
-}
-
-// PersistentVolumeClaimSpec describes the common attributes of storage devices
-// and allows a Source for provider-specific attributes
-type PersistentVolumeClaimSpec struct {
- // Contains the types of access modes required
- AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty"`
- // A label query over volumes to consider for binding. This selector is
- // ignored when VolumeName is set
- Selector *unversioned.LabelSelector `json:"selector,omitempty"`
- // Resources represents the minimum resources required
- Resources ResourceRequirements `json:"resources,omitempty"`
- // VolumeName is the binding reference to the PersistentVolume backing this
- // claim. When set to non-empty value Selector is not evaluated
- VolumeName string `json:"volumeName,omitempty"`
-}
-
-type PersistentVolumeClaimStatus struct {
- // Phase represents the current phase of PersistentVolumeClaim
- Phase PersistentVolumeClaimPhase `json:"phase,omitempty"`
- // AccessModes contains all ways the volume backing the PVC can be mounted
- 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"
- // used for PersistentVolumeClaims that lost their underlying
- // PersistentVolume. The claim was bound to a PersistentVolume and this
- // volume does not exist any longer and all data on it was lost.
- ClaimLost PersistentVolumeClaimPhase = "Lost"
-)
-
-// Represents a host path mapped into a pod.
-// Host path volumes do not support ownership management or SELinux relabeling.
-type HostPathVolumeSource struct {
- Path string `json:"path"`
-}
-
-// Represents an empty directory for a pod.
-// Empty directory volumes support ownership management and SELinux relabeling.
-type EmptyDirVolumeSource struct {
- // TODO: Longer term we want to represent the selection of underlying
- // media more like a scheduling problem - user says what traits they
- // need, we give them a backing store that satisfies that. For now
- // this will cover the most common needs.
- // Optional: what type of storage medium should back this directory.
- // The default is "" which means to use the node's default medium.
- Medium StorageMedium `json:"medium,omitempty"`
-}
-
-// StorageMedium defines ways that storage can be allocated to a volume.
-type StorageMedium string
-
-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"
-)
-
-// Represents a Persistent Disk resource in Google Compute Engine.
-//
-// A GCE PD must exist 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 or read-only many times. GCE
-// PDs support ownership management and SELinux relabeling.
-type GCEPersistentDiskVolumeSource struct {
- // Unique name of the PD resource. Used to identify the disk in GCE
- PDName string `json:"pdName"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- FSType string `json:"fsType,omitempty"`
- // Optional: Partition on the disk to mount.
- // If omitted, kubelet will attempt to mount the device name.
- // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty.
- Partition int32 `json:"partition,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents an ISCSI disk.
-// ISCSI volumes can only be mounted as read/write once.
-// ISCSI volumes support ownership management and SELinux relabeling.
-type ISCSIVolumeSource struct {
- // Required: iSCSI target portal
- // the portal is either an IP or ip_addr:port if port is other than default (typically TCP ports 860 and 3260)
- TargetPortal string `json:"targetPortal,omitempty"`
- // Required: target iSCSI Qualified Name
- IQN string `json:"iqn,omitempty"`
- // Required: iSCSI target lun number
- Lun int32 `json:"lun,omitempty"`
- // Optional: Defaults to 'default' (tcp). iSCSI interface name that uses an iSCSI transport.
- ISCSIInterface string `json:"iscsiInterface,omitempty"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- FSType string `json:"fsType,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a Fibre Channel volume.
-// Fibre Channel volumes can only be mounted as read/write once.
-// Fibre Channel volumes support ownership management and SELinux relabeling.
-type FCVolumeSource struct {
- // Required: FC target world wide names (WWNs)
- TargetWWNs []string `json:"targetWWNs"`
- // Required: FC target lun number
- Lun *int32 `json:"lun"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- FSType string `json:"fsType,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// FlexVolume represents a generic volume resource that is
-// provisioned/attached using a exec based plugin. This is an alpha feature and may change in future.
-type FlexVolumeSource struct {
- // Driver is the name of the driver to use for this volume.
- Driver string `json:"driver"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
- FSType string `json:"fsType,omitempty"`
- // Optional: SecretRef is reference to the secret object containing
- // sensitive information to pass to the plugin scripts. This may be
- // empty if no secret object is specified. If the secret object
- // contains more than one secret, all secrets are passed to the plugin
- // scripts.
- SecretRef *LocalObjectReference `json:"secretRef,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
- // Optional: Extra driver options if any.
- Options map[string]string `json:"options,omitempty"`
-}
-
-// Represents a Persistent Disk resource in AWS.
-//
-// An AWS EBS disk must exist before mounting to a container. The disk
-// must also be in the same AWS zone as the kubelet. A AWS EBS disk
-// can only be mounted as read/write once. AWS EBS volumes support
-// ownership management and SELinux relabeling.
-type AWSElasticBlockStoreVolumeSource struct {
- // Unique id of the persistent disk resource. Used to identify the disk in AWS
- VolumeID string `json:"volumeID"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- FSType string `json:"fsType,omitempty"`
- // Optional: Partition on the disk to mount.
- // If omitted, kubelet will attempt to mount the device name.
- // Ex. For /dev/sda1, this field is "1", for /dev/sda, this field is 0 or empty.
- Partition int32 `json:"partition,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a volume that is populated with the contents of a git repository.
-// Git repo volumes do not support ownership management.
-// Git repo volumes support SELinux relabeling.
-type GitRepoVolumeSource struct {
- // Repository URL
- Repository string `json:"repository"`
- // Commit hash, this is optional
- Revision string `json:"revision,omitempty"`
- // Clone target, this is optional
- // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the
- // git repository. Otherwise, if specified, the volume will contain the git repository in
- // the subdirectory with the given name.
- Directory string `json:"directory,omitempty"`
- // TODO: Consider credentials here.
-}
-
-// Adapts a Secret into a volume.
-//
-// The contents of the target Secret's Data field will be presented in a volume
-// as files using the keys in the Data field as the file names.
-// Secret volumes support ownership management and SELinux relabeling.
-type SecretVolumeSource struct {
- // Name of the secret in the pod's namespace to use.
- SecretName string `json:"secretName,omitempty"`
- // If unspecified, each key-value pair in the Data field of the referenced
- // Secret will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the Secret,
- // the volume setup will error. Paths must be relative and may not contain
- // the '..' path or start with '..'.
- Items []KeyToPath `json:"items,omitempty"`
-}
-
-// Represents an NFS mount that lasts the lifetime of a pod.
-// NFS volumes do not support ownership management or SELinux relabeling.
-type NFSVolumeSource struct {
- // Server is the hostname or IP address of the NFS server
- Server string `json:"server"`
-
- // Path is the exported NFS share
- Path string `json:"path"`
-
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the NFS export to be mounted with read-only permissions
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a Glusterfs mount that lasts the lifetime of a pod.
-// Glusterfs volumes do not support ownership management or SELinux relabeling.
-type GlusterfsVolumeSource struct {
- // Required: EndpointsName is the endpoint name that details Glusterfs topology
- EndpointsName string `json:"endpoints"`
-
- // Required: Path is the Glusterfs volume path
- Path string `json:"path"`
-
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the Glusterfs to be mounted with read-only permissions
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a Rados Block Device mount that lasts the lifetime of a pod.
-// RBD volumes support ownership management and SELinux relabeling.
-type RBDVolumeSource struct {
- // Required: CephMonitors is a collection of Ceph monitors
- CephMonitors []string `json:"monitors"`
- // Required: RBDImage is the rados image name
- RBDImage string `json:"image"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- // TODO: how do we prevent errors in the filesystem from compromising the machine
- FSType string `json:"fsType,omitempty"`
- // Optional: RadosPool is the rados pool name,default is rbd
- RBDPool string `json:"pool,omitempty"`
- // Optional: RBDUser is the rados user name, default is admin
- RadosUser string `json:"user,omitempty"`
- // Optional: Keyring is the path to key ring for RBDUser, default is /etc/ceph/keyring
- Keyring string `json:"keyring,omitempty"`
- // Optional: SecretRef is name of the authentication secret for RBDUser, default is nil.
- SecretRef *LocalObjectReference `json:"secretRef,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// 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. Cinder volumes support ownership
-// management and SELinux relabeling.
-type CinderVolumeSource struct {
- // Unique id of the volume used to identify the cinder volume
- VolumeID string `json:"volumeID"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- FSType string `json:"fsType,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a Ceph Filesystem mount that lasts the lifetime of a pod
-// Cephfs volumes do not support ownership management or SELinux relabeling.
-type CephFSVolumeSource struct {
- // Required: Monitors is a collection of Ceph monitors
- Monitors []string `json:"monitors"`
- // Optional: Used as the mounted root, rather than the full Ceph tree, default is /
- Path string `json:"path,omitempty"`
- // Optional: User is the rados user name, default is admin
- User string `json:"user,omitempty"`
- // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
- SecretFile string `json:"secretFile,omitempty"`
- // Optional: SecretRef is reference to the authentication secret for User, default is empty.
- SecretRef *LocalObjectReference `json:"secretRef,omitempty"`
- // Optional: Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a Flocker volume mounted by the Flocker agent.
-// Flocker volumes do not support ownership management or SELinux relabeling.
-type FlockerVolumeSource struct {
- // Required: the volume name. This is going to be store on metadata -> name on the payload for Flocker
- DatasetName string `json:"datasetName"`
-}
-
-// Represents a volume containing downward API info.
-// Downward API volumes support ownership management and SELinux relabeling.
-type DownwardAPIVolumeSource struct {
- // Items is a list of DownwardAPIVolume file
- Items []DownwardAPIVolumeFile `json:"items,omitempty"`
-}
-
-// Represents a single file containing information from the downward API
-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,omitempty"`
- // Selects a resource of the container: only resources limits and requests
- // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
- ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty"`
-}
-
-// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
-type AzureFileVolumeSource struct {
- // the name of secret that contains Azure Storage Account Name and Key
- SecretName string `json:"secretName"`
- // Share Name
- ShareName string `json:"shareName"`
- // Defaults to false (read/write). ReadOnly here will force
- // the ReadOnly setting in VolumeMounts.
- ReadOnly bool `json:"readOnly,omitempty"`
-}
-
-// Represents a vSphere volume resource.
-type VsphereVirtualDiskVolumeSource struct {
- // Path that identifies vSphere volume vmdk
- VolumePath string `json:"volumePath"`
- // Filesystem type to mount.
- // Must be a filesystem type supported by the host operating system.
- // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
- FSType string `json:"fsType,omitempty"`
-}
-
-// Adapts a ConfigMap into a volume.
-//
-// The contents of the target ConfigMap's Data field will be presented in a
-// volume as files using the keys in the Data field as the file names, unless
-// the items element is populated with specific mappings of keys to paths.
-// ConfigMap volumes support ownership management and SELinux relabeling.
-type ConfigMapVolumeSource struct {
- LocalObjectReference `json:",inline"`
- // If unspecified, each key-value pair in the Data field of the referenced
- // ConfigMap will be projected into the volume as a file whose name is the
- // key and content is the value. If specified, the listed keys will be
- // projected into the specified paths, and unlisted keys will not be
- // present. If a key is specified which is not present in the ConfigMap,
- // the volume setup will error. Paths must be relative and may not contain
- // the '..' path or start with '..'.
- Items []KeyToPath `json:"items,omitempty"`
-}
-
-// Maps a string key to a path within a volume.
-type KeyToPath struct {
- // The key to project.
- Key string `json:"key"`
-
- // The relative path of the file to map the key to.
- // May not be an absolute path.
- // May not contain the path element '..'.
- // May not start with the string '..'.
- Path string `json:"path"`
-}
-
-// ContainerPort represents a network port in a single container
-type ContainerPort struct {
- // Optional: If specified, this must be an IANA_SVC_NAME Each named port
- // in a pod must have a unique name.
- Name string `json:"name,omitempty"`
- // Optional: If specified, this must be a valid port number, 0 < x < 65536.
- // If HostNetwork is specified, this must match ContainerPort.
- HostPort int32 `json:"hostPort,omitempty"`
- // Required: This must be a valid port number, 0 < x < 65536.
- ContainerPort int32 `json:"containerPort"`
- // Required: Supports "TCP" and "UDP".
- Protocol Protocol `json:"protocol,omitempty"`
- // Optional: 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 {
- // Required: This must match the Name of a Volume [above].
- Name string `json:"name"`
- // Optional: Defaults to false (read-write).
- ReadOnly bool `json:"readOnly,omitempty"`
- // Required. Must not contain ':'.
- MountPath string `json:"mountPath"`
- // Path within the volume from which the container's volume should be mounted.
- // Defaults to "" (volume's root).
- SubPath string `json:"subPath,omitempty"`
-}
-
-// EnvVar represents an environment variable present in a Container.
-type EnvVar struct {
- // Required: This must be a C_IDENTIFIER.
- Name string `json:"name"`
- // Optional: no more than one of the following may be specified.
- // Optional: Defaults to ""; 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.
- Value string `json:"value,omitempty"`
- // Optional: Specifies a source the value of this var should come from.
- ValueFrom *EnvVarSource `json:"valueFrom,omitempty"`
-}
-
-// EnvVarSource represents a source for the value of an EnvVar.
-// Only one of its fields may be set.
-type EnvVarSource struct {
- // Selects a field of the pod; only name and namespace are supported.
- FieldRef *ObjectFieldSelector `json:"fieldRef,omitempty"`
- // Selects a resource of the container: only resources limits and requests
- // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
- ResourceFieldRef *ResourceFieldSelector `json:"resourceFieldRef,omitempty"`
- // Selects a key of a ConfigMap.
- ConfigMapKeyRef *ConfigMapKeySelector `json:"configMapKeyRef,omitempty"`
- // Selects a key of a secret in the pod's namespace.
- SecretKeyRef *SecretKeySelector `json:"secretKeyRef,omitempty"`
-}
-
-// ObjectFieldSelector selects an APIVersioned field of an object.
-type ObjectFieldSelector struct {
- // Required: Version of the schema the FieldPath is written in terms of.
- // If no value is specified, it will be defaulted to the APIVersion of the
- // enclosing object.
- APIVersion string `json:"apiVersion"`
- // Required: Path of the field to select in the specified API version
- FieldPath string `json:"fieldPath"`
-}
-
-// ResourceFieldSelector represents container resources (cpu, memory) and their output format
-type ResourceFieldSelector struct {
- // Container name: required for volumes, optional for env vars
- ContainerName string `json:"containerName,omitempty"`
- // Required: resource to select
- Resource string `json:"resource"`
- // Specifies the output format of the exposed resources, defaults to "1"
- Divisor resource.Quantity `json:"divisor,omitempty"`
-}
-
-// Selects a key from a ConfigMap.
-type ConfigMapKeySelector struct {
- // The ConfigMap to select from.
- LocalObjectReference `json:",inline"`
- // The key to select.
- Key string `json:"key"`
-}
-
-// SecretKeySelector selects a key of a Secret.
-type SecretKeySelector struct {
- // The name of the secret in the pod's namespace to select from.
- LocalObjectReference `json:",inline"`
- // The key of the secret to select from. Must be a valid secret key.
- Key string `json:"key"`
-}
-
-// HTTPHeader describes a custom header to be used in HTTP probes
-type HTTPHeader struct {
- // The header field name
- Name string `json:"name"`
- // The header field value
- Value string `json:"value"`
-}
-
-// HTTPGetAction describes an action based on HTTP Get requests.
-type HTTPGetAction struct {
- // Optional: Path to access on the HTTP server.
- Path string `json:"path,omitempty"`
- // Required: Name or number of the port to access on the container.
- Port intstr.IntOrString `json:"port,omitempty"`
- // Optional: Host name to connect to, defaults to the pod IP. You
- // probably want to set "Host" in httpHeaders instead.
- Host string `json:"host,omitempty"`
- // Optional: Scheme to use for connecting to the host, defaults to HTTP.
- Scheme URIScheme `json:"scheme,omitempty"`
- // Optional: Custom headers to set in the request. HTTP allows repeated headers.
- HTTPHeaders []HTTPHeader `json:"httpHeaders,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 {
- // Required: Port to connect to.
- Port intstr.IntOrString `json:"port,omitempty"`
-}
-
-// 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.
- Command []string `json:"command,omitempty"`
-}
-
-// Probe describes a health check to be performed against a container to determine whether it is
-// alive or ready to receive traffic.
-type Probe struct {
- // The action taken to determine the health of a container
- Handler `json:",inline"`
- // Length of time before health checking is activated. In seconds.
- InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
- // Length of time before health checking times out. In seconds.
- TimeoutSeconds int32 `json:"timeoutSeconds,omitempty"`
- // How often (in seconds) to perform the probe.
- PeriodSeconds int32 `json:"periodSeconds,omitempty"`
- // Minimum consecutive successes for the probe to be considered successful after having failed.
- // Must be 1 for liveness.
- SuccessThreshold int32 `json:"successThreshold,omitempty"`
- // Minimum consecutive failures for the probe to be considered failed after having succeeded.
- FailureThreshold int32 `json:"failureThreshold,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
-
-// Capabilities represent POSIX capabilities that can be added or removed to a running container.
-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.
- Limits ResourceList `json:"limits,omitempty"`
- // Requests describes the minimum amount of compute resources required.
- // If Request is omitted for a container, it defaults to Limits if that is explicitly specified,
- // otherwise to an implementation-defined value
- Requests ResourceList `json:"requests,omitempty"`
-}
-
-// Container represents a single container that is expected to be run on the host.
-type Container struct {
- // Required: This must be a DNS_LABEL. Each container in a pod must
- // have a unique name.
- Name string `json:"name"`
- // Required.
- Image string `json:"image"`
- // Optional: The docker image's entrypoint is used if this is not provided; cannot be updated.
- // 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.
- Command []string `json:"command,omitempty"`
- // Optional: The docker image's cmd is used if this is not provided; cannot be updated.
- // 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.
- Args []string `json:"args,omitempty"`
- // Optional: Defaults to Docker's default.
- WorkingDir string `json:"workingDir,omitempty"`
- Ports []ContainerPort `json:"ports,omitempty"`
- Env []EnvVar `json:"env,omitempty"`
- // Compute resource requirements.
- Resources ResourceRequirements `json:"resources,omitempty"`
- VolumeMounts []VolumeMount `json:"volumeMounts,omitempty"`
- LivenessProbe *Probe `json:"livenessProbe,omitempty"`
- ReadinessProbe *Probe `json:"readinessProbe,omitempty"`
- Lifecycle *Lifecycle `json:"lifecycle,omitempty"`
- // Required.
- TerminationMessagePath string `json:"terminationMessagePath,omitempty"`
- // Required: Policy for pulling images for this container
- ImagePullPolicy PullPolicy `json:"imagePullPolicy"`
- // Optional: SecurityContext defines the security options the container should be run with.
- // If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
- 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.
- Stdin bool `json:"stdin,omitempty"`
- StdinOnce bool `json:"stdinOnce,omitempty"`
- 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.
- // 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.
- PostStart *Handler `json:"postStart,omitempty"`
- // PreStop is called immediately before a container is terminated. The reason for termination is
- // passed to the handler. Regardless of the outcome of the handler, the container is eventually terminated.
- PreStop *Handler `json:"preStop,omitempty"`
-}
-
-// The below types are used by kube_client and api_server.
-
-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"
-)
-
-type ContainerStateWaiting struct {
- // A brief CamelCase string indicating details about why the container is in waiting state.
- Reason string `json:"reason,omitempty"`
- // A human-readable message indicating details about why the container is in waiting state.
- Message string `json:"message,omitempty"`
-}
-
-type ContainerStateRunning struct {
- StartedAt unversioned.Time `json:"startedAt,omitempty"`
-}
-
-type ContainerStateTerminated struct {
- ExitCode int32 `json:"exitCode"`
- Signal int32 `json:"signal,omitempty"`
- Reason string `json:"reason,omitempty"`
- Message string `json:"message,omitempty"`
- StartedAt unversioned.Time `json:"startedAt,omitempty"`
- FinishedAt unversioned.Time `json:"finishedAt,omitempty"`
- 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 {
- Waiting *ContainerStateWaiting `json:"waiting,omitempty"`
- Running *ContainerStateRunning `json:"running,omitempty"`
- Terminated *ContainerStateTerminated `json:"terminated,omitempty"`
-}
-
-type ContainerStatus struct {
- // Each container in a pod must have a unique name.
- Name string `json:"name"`
- State ContainerState `json:"state,omitempty"`
- LastTerminationState ContainerState `json:"lastState,omitempty"`
- // Ready specifies whether the container has passed its readiness check.
- Ready bool `json:"ready"`
- // 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 int32 `json:"restartCount"`
- Image string `json:"image"`
- ImageID string `json:"imageID"`
- 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"
-)
-
-type PodConditionType string
-
-// These are valid conditions of pod.
-const (
- // PodScheduled represents status of the scheduling process for this pod.
- PodScheduled PodConditionType = "PodScheduled"
- // 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"
- // PodInitialized means that all init containers in the pod have started successfully.
- PodInitialized PodConditionType = "Initialized"
-)
-
-type PodCondition struct {
- Type PodConditionType `json:"type"`
- Status ConditionStatus `json:"status"`
- LastProbeTime unversioned.Time `json:"lastProbeTime,omitempty"`
- LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty"`
- Reason string `json:"reason,omitempty"`
- Message string `json:"message,omitempty"`
-}
-
-// 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"
-)
-
-// PodList is a list of Pods.
-type PodList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []Pod `json:"items"`
-}
-
-// 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"
-)
-
-// A node selector represents the union of the results of one or more label queries
-// over a set of nodes; that is, it represents the OR of the selectors represented
-// by the node selector terms.
-type NodeSelector struct {
- //Required. A list of node selector terms. The terms are ORed.
- NodeSelectorTerms []NodeSelectorTerm `json:"nodeSelectorTerms"`
-}
-
-// A null or empty node selector term matches no objects.
-type NodeSelectorTerm struct {
- //Required. A list of node selector requirements. The requirements are ANDed.
- MatchExpressions []NodeSelectorRequirement `json:"matchExpressions"`
-}
-
-// A node selector requirement is a selector that contains values, a key, and an operator
-// that relates the key and values.
-type NodeSelectorRequirement struct {
- // The label key that the selector applies to.
- Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key"`
- // Represents a key's relationship to a set of values.
- // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
- Operator NodeSelectorOperator `json:"operator"`
- // An array of string values. If the operator is In or NotIn,
- // the values array must be non-empty. If the operator is Exists or DoesNotExist,
- // the values array must be empty. If the operator is Gt or Lt, the values
- // array must have a single element, which will be interpreted as an integer.
- // This array is replaced during a strategic merge patch.
- Values []string `json:"values,omitempty"`
-}
-
-// A node selector operator is the set of operators that can be used in
-// a node selector requirement.
-type NodeSelectorOperator string
-
-const (
- NodeSelectorOpIn NodeSelectorOperator = "In"
- NodeSelectorOpNotIn NodeSelectorOperator = "NotIn"
- NodeSelectorOpExists NodeSelectorOperator = "Exists"
- NodeSelectorOpDoesNotExist NodeSelectorOperator = "DoesNotExist"
- NodeSelectorOpGt NodeSelectorOperator = "Gt"
- NodeSelectorOpLt NodeSelectorOperator = "Lt"
-)
-
-// Affinity is a group of affinity scheduling rules.
-type Affinity struct {
- // Describes node affinity scheduling rules for the pod.
- NodeAffinity *NodeAffinity `json:"nodeAffinity,omitempty"`
- // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
- PodAffinity *PodAffinity `json:"podAffinity,omitempty"`
- // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
- PodAntiAffinity *PodAntiAffinity `json:"podAntiAffinity,omitempty"`
-}
-
-// Pod affinity is a group of inter pod affinity scheduling rules.
-type PodAffinity struct {
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system will try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"`
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system may or may not try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
- // node(s) with the highest sum are the most preferred.
- PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
-}
-
-// Pod anti affinity is a group of inter pod anti affinity scheduling rules.
-type PodAntiAffinity struct {
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // If the anti-affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the anti-affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system will try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- // RequiredDuringSchedulingRequiredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"`
- // If the anti-affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the anti-affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to a pod label update), the
- // system may or may not try to eventually evict the pod from its node.
- // When there are multiple elements, the lists of nodes corresponding to each
- // podAffinityTerm are intersected, i.e. all terms must be satisfied.
- RequiredDuringSchedulingIgnoredDuringExecution []PodAffinityTerm `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the anti-affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling anti-affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
- // node(s) with the highest sum are the most preferred.
- PreferredDuringSchedulingIgnoredDuringExecution []WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
-}
-
-// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
-type WeightedPodAffinityTerm struct {
- // weight associated with matching the corresponding podAffinityTerm,
- // in the range 1-100.
- Weight int `json:"weight"`
- // Required. A pod affinity term, associated with the corresponding weight.
- PodAffinityTerm PodAffinityTerm `json:"podAffinityTerm"`
-}
-
-// Defines a set of pods (namely those matching the labelSelector
-// relative to the given namespace(s)) that this pod should be
-// co-located (affinity) or not co-located (anti-affinity) with,
-// where co-located is defined as running on a node whose value of
-// the label with key <topologyKey> matches that of any node on which
-// a pod of the set of pods is running.
-type PodAffinityTerm struct {
- // A label query over a set of resources, in this case pods.
- LabelSelector *unversioned.LabelSelector `json:"labelSelector,omitempty"`
- // namespaces specifies which namespaces the labelSelector applies to (matches against);
- // nil list means "this pod's namespace," empty list means "all namespaces"
- // The json tag here is not "omitempty" since we need to distinguish nil and empty.
- // See https://golang.org/pkg/encoding/json/#Marshal for more details.
- Namespaces []string `json:"namespaces"`
- // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
- // the labelSelector in the specified namespaces, where co-located is defined as running on a node
- // whose value of the label with key topologyKey matches that of any node on which any of the
- // selected pods is running.
- // For PreferredDuringScheduling pod anti-affinity, empty topologyKey is interpreted as "all topologies"
- // ("all topologies" here means all the topologyKeys indicated by scheduler command-line argument --failure-domains);
- // for affinity and for RequiredDuringScheduling pod anti-affinity, empty topologyKey is not allowed.
- TopologyKey string `json:"topologyKey,omitempty"`
-}
-
-// Node affinity is a group of node affinity scheduling rules.
-type NodeAffinity struct {
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to an update), the system
- // will try to eventually evict the pod from its node.
- // RequiredDuringSchedulingRequiredDuringExecution *NodeSelector `json:"requiredDuringSchedulingRequiredDuringExecution,omitempty"`
-
- // If the affinity requirements specified by this field are not met at
- // scheduling time, the pod will not be scheduled onto the node.
- // If the affinity requirements specified by this field cease to be met
- // at some point during pod execution (e.g. due to an update), the system
- // may or may not try to eventually evict the pod from its node.
- RequiredDuringSchedulingIgnoredDuringExecution *NodeSelector `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
- // The scheduler will prefer to schedule pods to nodes that satisfy
- // the affinity expressions specified by this field, but it may choose
- // a node that violates one or more of the expressions. The node that is
- // most preferred is the one with the greatest sum of weights, i.e.
- // for each node that meets all of the scheduling requirements (resource
- // request, requiredDuringScheduling affinity expressions, etc.),
- // compute a sum by iterating through the elements of this field and adding
- // "weight" to the sum if the node matches the corresponding matchExpressions; the
- // node(s) with the highest sum are the most preferred.
- PreferredDuringSchedulingIgnoredDuringExecution []PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
-}
-
-// An empty preferred scheduling term matches all objects with implicit weight 0
-// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
-type PreferredSchedulingTerm struct {
- // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
- Weight int32 `json:"weight"`
- // A node selector term, associated with the corresponding weight.
- Preference NodeSelectorTerm `json:"preference"`
-}
-
-// The node this Taint is attached to has the effect "effect" on
-// any pod that that does not tolerate the Taint.
-type Taint struct {
- // Required. The taint key to be applied to a node.
- Key string `json:"key" patchStrategy:"merge" patchMergeKey:"key"`
- // Required. The taint value corresponding to the taint key.
- Value string `json:"value,omitempty"`
- // Required. The effect of the taint on pods
- // that do not tolerate the taint.
- // Valid effects are NoSchedule and PreferNoSchedule.
- Effect TaintEffect `json:"effect"`
-}
-
-type TaintEffect string
-
-const (
- // Do not allow new pods to schedule onto the node unless they tolerate the taint,
- // but allow all pods submitted to Kubelet without going through the scheduler
- // to start, and allow all already-running pods to continue running.
- // Enforced by the scheduler.
- TaintEffectNoSchedule TaintEffect = "NoSchedule"
- // Like TaintEffectNoSchedule, but the scheduler tries not to schedule
- // new pods onto the node, rather than prohibiting new pods from scheduling
- // onto the node entirely. Enforced by the scheduler.
- TaintEffectPreferNoSchedule TaintEffect = "PreferNoSchedule"
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // Do not allow new pods to schedule onto the node unless they tolerate the taint,
- // do not allow pods to start on Kubelet unless they tolerate the taint,
- // but allow all already-running pods to continue running.
- // Enforced by the scheduler and Kubelet.
- // TaintEffectNoScheduleNoAdmit TaintEffect = "NoScheduleNoAdmit"
- // NOT YET IMPLEMENTED. TODO: Uncomment field once it is implemented.
- // Do not allow new pods to schedule onto the node unless they tolerate the taint,
- // do not allow pods to start on Kubelet unless they tolerate the taint,
- // and evict any already-running pods that do not tolerate the taint.
- // Enforced by the scheduler and Kubelet.
- // TaintEffectNoScheduleNoAdmitNoExecute = "NoScheduleNoAdmitNoExecute"
-)
-
-// The pod this Toleration is attached to tolerates any taint that matches
-// the triple <key,value,effect> using the matching operator <operator>.
-type Toleration struct {
- // Required. Key is the taint key that the toleration applies to.
- Key string `json:"key,omitempty" patchStrategy:"merge" patchMergeKey:"key"`
- // operator represents a key's relationship to the value.
- // Valid operators are Exists and Equal. Defaults to Equal.
- // Exists is equivalent to wildcard for value, so that a pod can
- // tolerate all taints of a particular category.
- Operator TolerationOperator `json:"operator,omitempty"`
- // Value is the taint value the toleration matches to.
- // If the operator is Exists, the value should be empty, otherwise just a regular string.
- Value string `json:"value,omitempty"`
- // Effect indicates the taint effect to match. Empty means match all taint effects.
- // When specified, allowed values are NoSchedule and PreferNoSchedule.
- Effect TaintEffect `json:"effect,omitempty"`
- // TODO: For forgiveness (#1574), we'd eventually add at least a grace period
- // here, and possibly an occurrence threshold and period.
-}
-
-// A toleration operator is the set of operators that can be used in a toleration.
-type TolerationOperator string
-
-const (
- TolerationOpExists TolerationOperator = "Exists"
- TolerationOpEqual TolerationOperator = "Equal"
-)
-
-// PodSpec is a description of a pod
-type PodSpec struct {
- Volumes []Volume `json:"volumes"`
- // List of initialization containers belonging to the pod.
- InitContainers []Container `json:"-"`
- // List of containers belonging to the pod.
- Containers []Container `json:"containers"`
- 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.
- TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
- // Optional duration in seconds relative to the StartTime that the pod may be active on a node
- // before the system actively tries to terminate the pod; value must be positive integer
- ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"`
- // Required: Set DNS policy.
- DNSPolicy DNSPolicy `json:"dnsPolicy,omitempty"`
- // NodeSelector is a selector which must be true for the pod to fit on a node
- NodeSelector map[string]string `json:"nodeSelector,omitempty"`
-
- // ServiceAccountName is the name of the ServiceAccount to use to run this pod
- // The pod will be allowed to use secrets referenced by the ServiceAccount
- ServiceAccountName string `json:"serviceAccountName"`
-
- // 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"`
- // SecurityContext holds pod-level security attributes and common container settings.
- // Optional: Defaults to empty. See type description for default values of each field.
- SecurityContext *PodSecurityContext `json:"securityContext,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.
- ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty"`
- // Specifies the hostname of the Pod.
- // If not specified, the pod's hostname will be set to a system-defined value.
- Hostname string `json:"hostname,omitempty"`
- // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
- // If not specified, the pod will not have a domainname at all.
- Subdomain string `json:"subdomain,omitempty"`
-}
-
-// PodSecurityContext holds pod-level security attributes and common container settings.
-// Some fields are also present in container.securityContext. Field values of
-// container.securityContext take precedence over field values of PodSecurityContext.
-type PodSecurityContext struct {
- // Use the host's network namespace. If this option is set, the ports that will be
- // used must be specified.
- // Optional: Default to false
- // +k8s:conversion-gen=false
- HostNetwork bool `json:"hostNetwork,omitempty"`
- // Use the host's pid namespace.
- // Optional: Default to false.
- // +k8s:conversion-gen=false
- HostPID bool `json:"hostPID,omitempty"`
- // Use the host's ipc namespace.
- // Optional: Default to false.
- // +k8s:conversion-gen=false
- HostIPC bool `json:"hostIPC,omitempty"`
- // The SELinux context to be applied to all containers.
- // If unspecified, the container runtime will allocate a random SELinux context for each
- // container. May also be set in SecurityContext. If set in
- // both SecurityContext and PodSecurityContext, the value specified in SecurityContext
- // takes precedence for that container.
- SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty"`
- // The UID to run the entrypoint of the container process.
- // Defaults to user specified in image metadata if unspecified.
- // May also be set in SecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence
- // for that container.
- RunAsUser *int64 `json:"runAsUser,omitempty"`
- // Indicates that the container must run as a non-root user.
- // If true, the Kubelet will validate the image at runtime to ensure that it
- // does not run as UID 0 (root) and fail to start the container if it does.
- // If unset or false, no such validation will be performed.
- // May also be set in SecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"`
- // A list of groups applied to the first process run in each container, in addition
- // to the container's primary GID. If unspecified, no groups will be added to
- // any container.
- SupplementalGroups []int64 `json:"supplementalGroups,omitempty"`
- // A special supplemental group that applies to all containers in a pod.
- // Some volume types allow the Kubelet to change the ownership of that volume
- // to be owned by the pod:
- //
- // 1. The owning GID will be the FSGroup
- // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
- // 3. The permission bits are OR'd with rw-rw----
- //
- // If unset, the Kubelet will not modify the ownership and permissions of any volume.
- FSGroup *int64 `json:"fsGroup,omitempty"`
-}
-
-// PodStatus represents information about the status of a pod. Status may trail the actual
-// state of a system.
-type PodStatus struct {
- Phase PodPhase `json:"phase,omitempty"`
- Conditions []PodCondition `json:"conditions,omitempty"`
- // A human readable message indicating details about why the pod is in this state.
- 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"`
-
- HostIP string `json:"hostIP,omitempty"`
- PodIP string `json:"podIP,omitempty"`
-
- // 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 *unversioned.Time `json:"startTime,omitempty"`
-
- // The list has one entry per init container in the manifest. The most recent successful
- // init container will have ready = true, the most recently started container will have
- // startTime set.
- // More info: http://releases.k8s.io/HEAD/docs/user-guide/pod-states.md#container-statuses
- InitContainerStatuses []ContainerStatus `json:"-"`
- // The list has one entry per container in the manifest. Each entry is
- // currently the output of `docker inspect`. This output format is *not*
- // final and should not be relied upon.
- // TODO: Make real decisions about what our info should look like. Re-enable fuzz test
- // when we have done this.
- ContainerStatuses []ContainerStatus `json:"containerStatuses,omitempty"`
-}
-
-// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
-type PodStatusResult struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
- // Status represents the current information about a pod. This data may not be up
- // to date.
- Status PodStatus `json:"status,omitempty"`
-}
-
-// +genclient=true
-
-// Pod is a collection of containers, used as either input (create, update) or as output (list, get).
-type Pod struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the behavior of a pod.
- Spec PodSpec `json:"spec,omitempty"`
-
- // Status represents the current information about a pod. This data may not be up
- // to date.
- Status PodStatus `json:"status,omitempty"`
-}
-
-// PodTemplateSpec describes the data a pod should have when created from a template
-type PodTemplateSpec struct {
- // Metadata of the pods created from this template.
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the behavior of a pod.
- Spec PodSpec `json:"spec,omitempty"`
-}
-
-// +genclient=true
-
-// PodTemplate describes a template for creating copies of a predefined pod.
-type PodTemplate struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Template defines the pods that will be created from this pod template
- Template PodTemplateSpec `json:"template,omitempty"`
-}
-
-// PodTemplateList is a list of PodTemplates.
-type PodTemplateList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []PodTemplate `json:"items"`
-}
-
-// ReplicationControllerSpec is the specification of a replication controller.
-// As the internal representation of a replication controller, it may have either
-// a TemplateRef or a Template set.
-type ReplicationControllerSpec struct {
- // Replicas is the number of desired replicas.
- Replicas int32 `json:"replicas"`
-
- // Selector is a label query over pods that should match the Replicas count.
- Selector map[string]string `json:"selector"`
-
- // TemplateRef is a reference to an object that describes the pod that will be created if
- // insufficient replicas are detected. This reference is ignored if a Template is set.
- // Must be set before converting to a versioned API object
- //TemplateRef *ObjectReference `json:"templateRef,omitempty"`
-
- // Template is the object that describes the pod that will be created if
- // insufficient replicas are detected. Internally, this takes precedence over a
- // TemplateRef.
- Template *PodTemplateSpec `json:"template,omitempty"`
-}
-
-// ReplicationControllerStatus represents the current status of a replication
-// controller.
-type ReplicationControllerStatus struct {
- // Replicas is the number of actual replicas.
- Replicas int32 `json:"replicas"`
-
- // The number of pods that have labels matching the labels of the pod template of the replication controller.
- FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty"`
-
- // ObservedGeneration is the most recent generation observed by the controller.
- ObservedGeneration int64 `json:"observedGeneration,omitempty"`
-}
-
-// +genclient=true
-
-// ReplicationController represents the configuration of a replication controller.
-type ReplicationController struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the desired behavior of this replication controller.
- Spec ReplicationControllerSpec `json:"spec,omitempty"`
-
- // Status is the current status of this replication controller. This data may be
- // out of date by some window of time.
- Status ReplicationControllerStatus `json:"status,omitempty"`
-}
-
-// ReplicationControllerList is a collection of replication controllers.
-type ReplicationControllerList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []ReplicationController `json:"items"`
-}
-
-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 {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []Service `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 ClusterIP.
- 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 {
- // Type determines how the service will be exposed. Valid options: ClusterIP, NodePort, LoadBalancer
- Type ServiceType `json:"type,omitempty"`
-
- // Required: The list of ports that are exposed by this service.
- Ports []ServicePort `json:"ports"`
-
- // This service will route traffic to pods having labels matching this selector. If empty or not present,
- // the service is assumed to have endpoints set by an external process and Kubernetes will not modify
- // those endpoints.
- Selector map[string]string `json:"selector"`
-
- // ClusterIP is usually assigned by the master. If specified by the user
- // we will try to respect it or else fail the request. This field can
- // not be changed by updates.
- // Valid values are None, empty string (""), or a valid IP address
- // None can be specified for headless services when proxying is not required
- ClusterIP string `json:"clusterIP,omitempty"`
-
- // ExternalIPs are used by external load balancers, or can be set by
- // users to handle external traffic that arrives at a node.
- ExternalIPs []string `json:"externalIPs,omitempty"`
-
- // Only applies to Service Type: LoadBalancer
- // LoadBalancer will get created with the IP specified in this field.
- // This feature depends on whether the underlying cloud-provider supports specifying
- // the loadBalancerIP when a load balancer is created.
- // This field will be ignored if the cloud-provider does not support the feature.
- LoadBalancerIP string `json:"loadBalancerIP,omitempty"`
-
- // Optional: Supports "ClientIP" and "None". Used to maintain session affinity.
- SessionAffinity ServiceAffinity `json:"sessionAffinity,omitempty"`
-
- // Optional: If specified and supported by the platform, this will restrict traffic through the cloud-provider
- // load-balancer will be restricted to the specified client IPs. This field will be ignored if the
- // cloud-provider does not support the feature."
- LoadBalancerSourceRanges []string `json:"loadBalancerSourceRanges,omitempty"`
-}
-
-type ServicePort struct {
- // Optional if only one ServicePort is defined on this service: 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.
- Name string `json:"name"`
-
- // The IP protocol for this port. Supports "TCP" and "UDP".
- Protocol Protocol `json:"protocol"`
-
- // The port that will be exposed on the service.
- Port int32 `json:"port"`
-
- // Optional: The target port on pods selected by this service. 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 the 'port' field is used (an identity map).
- // This field is ignored for services with clusterIP=None, and should be
- // omitted or set equal to the 'port' field.
- TargetPort intstr.IntOrString `json:"targetPort"`
-
- // The port on each node on which this service is exposed.
- // Default is to auto-allocate a port if the ServiceType of this Service requires one.
- NodePort int32 `json:"nodePort"`
-}
-
-// +genclient=true
-
-// 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 {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the behavior of a service.
- Spec ServiceSpec `json:"spec,omitempty"`
-
- // Status represents the current status of a service.
- Status ServiceStatus `json:"status,omitempty"`
-}
-
-// +genclient=true
-
-// 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 {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount
- Secrets []ObjectReference `json:"secrets"`
-
- // 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.
- ImagePullSecrets []LocalObjectReference `json:"imagePullSecrets,omitempty"`
-}
-
-// ServiceAccountList is a list of ServiceAccount objects
-type ServiceAccountList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []ServiceAccount `json:"items"`
-}
-
-// +genclient=true
-
-// 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 {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // The set of all endpoints is the union of all subsets.
- Subsets []EndpointSubset
-}
-
-// 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 {
- Addresses []EndpointAddress
- NotReadyAddresses []EndpointAddress
- Ports []EndpointPort
-}
-
-// EndpointAddress is a tuple that describes single IP address.
-type EndpointAddress struct {
- // The IP of this endpoint.
- // IPv6 is also accepted but not fully supported on all platforms. Also, certain
- // kubernetes components, like kube-proxy, are not IPv6 ready.
- // TODO: This should allow hostname or IP, see #4447.
- IP string
- // Optional: Hostname of this endpoint
- // Meant to be used by DNS servers etc.
- Hostname string `json:"hostname,omitempty"`
- // Optional: The kubernetes object related to the entry point.
- TargetRef *ObjectReference
-}
-
-// EndpointPort is a tuple that describes a single port.
-type EndpointPort struct {
- // The name of this port (corresponds to ServicePort.Name). Optional
- // if only one port is defined. Must be a DNS_LABEL.
- Name string
-
- // The port number.
- Port int32
-
- // The IP protocol for this port.
- Protocol Protocol
-}
-
-// EndpointsList is a list of endpoints.
-type EndpointsList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- 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
- // Note: assigning IP ranges to nodes might need to be revisited when we support migratable IPs.
- PodCIDR string `json:"podCIDR,omitempty"`
-
- // External ID of the node assigned by some machine database (e.g. a cloud provider)
- ExternalID string `json:"externalID,omitempty"`
-
- // ID of the node assigned by the cloud provider
- // Note: format is "<ProviderName>://<ProviderSpecificNodeID>"
- ProviderID string `json:"providerID,omitempty"`
-
- // Unschedulable controls node schedulability of new pods. By default node is schedulable.
- Unschedulable bool `json:"unschedulable,omitempty"`
-}
-
-// DaemonEndpoint contains information about a single Daemon endpoint.
-type DaemonEndpoint struct {
- /*
- The port tag was not properly in quotes in earlier releases, so it must be
- uppercased for backwards compat (since it was falling back to var name of
- 'Port').
- */
-
- // Port number of the given endpoint.
- Port int32 `json:"Port"`
-}
-
-// NodeDaemonEndpoints lists ports opened by daemons running on the Node.
-type NodeDaemonEndpoints struct {
- // Endpoint on which Kubelet is listening.
- KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty"`
-}
-
-// NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
-type NodeSystemInfo struct {
- // Machine ID reported by the node.
- MachineID string `json:"machineID"`
- // System UUID reported by the node.
- SystemUUID string `json:"systemUUID"`
- // Boot ID reported by the node.
- BootID string `json:"bootID"`
- // Kernel Version reported by the node.
- KernelVersion string `json:"kernelVersion"`
- // OS Image reported by the node.
- OSImage string `json:"osImage"`
- // ContainerRuntime Version reported by the node.
- ContainerRuntimeVersion string `json:"containerRuntimeVersion"`
- // Kubelet Version reported by the node.
- KubeletVersion string `json:"kubeletVersion"`
- // KubeProxy Version reported by the node.
- KubeProxyVersion string `json:"kubeProxyVersion"`
- // The Operating System reported by the node
- OperatingSystem string `json:"operatingSystem"`
- // The Architecture reported by the node
- Architecture string `json:"architecture"`
-}
-
-// NodeStatus is information about the current status of a node.
-type NodeStatus struct {
- // Capacity represents the total resources of a node.
- Capacity ResourceList `json:"capacity,omitempty"`
- // Allocatable represents the resources of a node that are available for scheduling.
- Allocatable ResourceList `json:"allocatable,omitempty"`
- // NodePhase is the current lifecycle phase of the node.
- Phase NodePhase `json:"phase,omitempty"`
- // Conditions is an array of current node conditions.
- Conditions []NodeCondition `json:"conditions,omitempty"`
- // Queried from cloud provider, if available.
- Addresses []NodeAddress `json:"addresses,omitempty"`
- // Endpoints of daemons running on the Node.
- DaemonEndpoints NodeDaemonEndpoints `json:"daemonEndpoints,omitempty"`
- // Set of ids/uuids to uniquely identify the node.
- NodeInfo NodeSystemInfo `json:"nodeInfo,omitempty"`
- // List of container images on this node
- Images []ContainerImage `json:"images,omitempty"`
- // List of attachable volumes in use (mounted) by the node.
- VolumesInUse []UniqueVolumeName `json:"volumesInUse,omitempty"`
- // List of volumes that are attached to the node.
- VolumesAttached []AttachedVolume `json:"volumesAttached,omitempty"`
-}
-
-type UniqueVolumeName string
-
-// AttachedVolume describes a volume attached to a node
-type AttachedVolume struct {
- // Name of the attached volume
- Name UniqueVolumeName `json:"name"`
-
- // DevicePath represents the device path where the volume should be available
- DevicePath string `json:"devicePath"`
-}
-
-// Describe a container image
-type ContainerImage struct {
- // Names by which this image is known.
- Names []string `json:"names"`
- // The size of the image in bytes.
- SizeBytes int64 `json:"sizeBytes,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:
-// NodeReady, NodeReachable
-const (
- // NodeReady means kubelet is healthy and ready to accept pods.
- NodeReady NodeConditionType = "Ready"
- // NodeOutOfDisk means the kubelet will not accept new pods due to insufficient free disk
- // space on the node.
- NodeOutOfDisk NodeConditionType = "OutOfDisk"
- // NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory.
- NodeMemoryPressure NodeConditionType = "MemoryPressure"
- // NodeNetworkUnavailable means that network for the node is not correctly configured.
- NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable"
-)
-
-type NodeCondition struct {
- Type NodeConditionType `json:"type"`
- Status ConditionStatus `json:"status"`
- LastHeartbeatTime unversioned.Time `json:"lastHeartbeatTime,omitempty"`
- LastTransitionTime unversioned.Time `json:"lastTransitionTime,omitempty"`
- Reason string `json:"reason,omitempty"`
- Message string `json:"message,omitempty"`
-}
-
-type NodeAddressType string
-
-// These are valid address types of node. NodeLegacyHostIP is used to transit
-// from out-dated HostIP field to NodeAddress.
-const (
- NodeLegacyHostIP NodeAddressType = "LegacyHostIP"
- NodeHostName NodeAddressType = "Hostname"
- NodeExternalIP NodeAddressType = "ExternalIP"
- NodeInternalIP NodeAddressType = "InternalIP"
-)
-
-type NodeAddress struct {
- Type NodeAddressType `json:"type"`
- Address string `json:"address"`
-}
-
-// NodeResources is an object for conveying resource information about a node.
-// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.
-type NodeResources struct {
- // Capacity represents the available resources of a node
- Capacity ResourceList `json:"capacity,omitempty"`
-}
-
-// ResourceName is the name identifying various resources in a ResourceList.
-type ResourceName string
-
-// Resource names must be not more than 63 characters, consisting of upper- or lower-case alphanumeric characters,
-// with the -, _, and . characters allowed anywhere, except the first or last character.
-// The default convention, matching that for annotations, is to use lower-case names, with dashes, rather than
-// camel case, separating compound words.
-// Fully-qualified resource typenames are constructed from a DNS-style subdomain, followed by a slash `/` and a name.
-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"
- // NVIDIA GPU, in devices. Alpha, might change: although fractional and allowing values >1, only one whole device per node is assigned.
- ResourceNvidiaGPU ResourceName = "alpha.kubernetes.io/nvidia-gpu"
- // Number of Pods that may be running on this Node: see ResourcePods
-)
-
-// ResourceList is a set of (resource name, quantity) pairs.
-type ResourceList map[ResourceName]resource.Quantity
-
-// +genclient=true
-// +nonNamespaced=true
-
-// Node is a worker node in Kubernetes
-// The name of the node according to etcd is in ObjectMeta.Name.
-type Node struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the behavior of a node.
- Spec NodeSpec `json:"spec,omitempty"`
-
- // Status describes the current status of a Node
- Status NodeStatus `json:"status,omitempty"`
-}
-
-// NodeList is a list of nodes.
-type NodeList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []Node `json:"items"`
-}
-
-// 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
- Finalizers []FinalizerName
-}
-
-type FinalizerName string
-
-// These are internal finalizer values to Kubernetes, must be qualified name unless defined here
-const (
- FinalizerKubernetes FinalizerName = "kubernetes"
- FinalizerOrphan string = "orphan"
-)
-
-// NamespaceStatus is information about the current status of a Namespace.
-type NamespaceStatus struct {
- // Phase is the current lifecycle phase of the namespace.
- 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"
-)
-
-// +genclient=true
-// +nonNamespaced=true
-
-// A namespace provides a scope for Names.
-// Use of multiple namespaces is optional
-type Namespace struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the behavior of the Namespace.
- Spec NamespaceSpec `json:"spec,omitempty"`
-
- // Status describes the current status of a Namespace
- Status NamespaceStatus `json:"status,omitempty"`
-}
-
-// NamespaceList is a list of Namespaces.
-type NamespaceList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- 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 {
- unversioned.TypeMeta `json:",inline"`
- // ObjectMeta describes the object that is being bound.
- ObjectMeta `json:"metadata,omitempty"`
-
- // Target is the object to bind to.
- Target ObjectReference `json:"target"`
-}
-
-// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
-type Preconditions struct {
- // Specifies the target UID.
- UID *types.UID `json:"uid,omitempty"`
-}
-
-// DeleteOptions may be provided when deleting an API object
-type DeleteOptions struct {
- unversioned.TypeMeta `json:",inline"`
-
- // Optional 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.
- GracePeriodSeconds *int64 `json:"gracePeriodSeconds,omitempty"`
-
- // Must be fulfilled before a deletion is carried out. If not possible, a 409 Conflict status will be
- // returned.
- Preconditions *Preconditions `json:"preconditions,omitempty"`
-
- // Should the dependent objects be orphaned. If true/false, the "orphan"
- // finalizer will be added to/removed from the object's finalizers list.
- OrphanDependents *bool `json:"orphanDependents,omitempty"`
-}
-
-// ExportOptions is the query options to the standard REST get call.
-type ExportOptions struct {
- unversioned.TypeMeta `json:",inline"`
- // Should this value be exported. Export strips fields that a user can not specify.
- Export bool `json:"export"`
- // Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'
- Exact bool `json:"exact"`
-}
-
-// ListOptions is the query options to a standard REST list call, and has future support for
-// watch calls.
-type ListOptions struct {
- unversioned.TypeMeta `json:",inline"`
-
- // A selector based on labels
- LabelSelector labels.Selector
- // A selector based on fields
- FieldSelector fields.Selector
- // If true, watch for changes to this list
- Watch bool
- // The resource version to watch (no effect on list yet)
- ResourceVersion string
- // Timeout for the list/watch call.
- TimeoutSeconds *int64
-}
-
-// PodLogOptions is the query options for a Pod's logs REST call
-type PodLogOptions struct {
- unversioned.TypeMeta
-
- // Container for which to return logs
- Container string
- // If true, follow the logs for the pod
- Follow bool
- // If true, return previous terminated container logs
- Previous bool
- // A relative time in seconds before the current time from which to show logs. If this value
- // precedes the time a pod was started, only logs since the pod start will be returned.
- // If this value is in the future, no logs will be returned.
- // Only one of sinceSeconds or sinceTime may be specified.
- SinceSeconds *int64
- // An RFC3339 timestamp from which to show logs. If this value
- // precedes the time a pod was started, only logs since the pod start will be returned.
- // If this value is in the future, no logs will be returned.
- // Only one of sinceSeconds or sinceTime may be specified.
- SinceTime *unversioned.Time
- // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
- // of log output.
- Timestamps bool
- // If set, the number of lines from the end of the logs to show. If not specified,
- // logs are shown from the creation of the container or sinceSeconds or sinceTime
- TailLines *int64
- // If set, the number of bytes to read from the server before terminating the
- // log output. This may not display a complete final line of logging, and may return
- // slightly more or slightly less than the specified limit.
- LimitBytes *int64
-}
-
-// PodAttachOptions is the query options to a Pod's remote attach call
-// TODO: merge w/ PodExecOptions below for stdin, stdout, etc
-type PodAttachOptions struct {
- unversioned.TypeMeta `json:",inline"`
-
- // Stdin if true indicates that stdin is to be redirected for the attach call
- Stdin bool `json:"stdin,omitempty"`
-
- // Stdout if true indicates that stdout is to be redirected for the attach call
- Stdout bool `json:"stdout,omitempty"`
-
- // Stderr if true indicates that stderr is to be redirected for the attach call
- Stderr bool `json:"stderr,omitempty"`
-
- // TTY if true indicates that a tty will be allocated for the attach call
- TTY bool `json:"tty,omitempty"`
-
- // Container to attach to.
- Container string `json:"container,omitempty"`
-}
-
-// PodExecOptions is the query options to a Pod's remote exec call
-type PodExecOptions struct {
- unversioned.TypeMeta
-
- // Stdin if true indicates that stdin is to be redirected for the exec call
- Stdin bool
-
- // Stdout if true indicates that stdout is to be redirected for the exec call
- Stdout bool
-
- // Stderr if true indicates that stderr is to be redirected for the exec call
- Stderr bool
-
- // TTY if true indicates that a tty will be allocated for the exec call
- TTY bool
-
- // Container in which to execute the command.
- Container string
-
- // Command is the remote command to execute; argv array; not executed within a shell.
- Command []string
-}
-
-// PodProxyOptions is the query options to a Pod's proxy call
-type PodProxyOptions struct {
- unversioned.TypeMeta
-
- // Path is the URL path to use for the current proxy request
- Path string
-}
-
-// NodeProxyOptions is the query options to a Node's proxy call
-type NodeProxyOptions struct {
- unversioned.TypeMeta
-
- // Path is the URL path to use for the current proxy request
- Path string
-}
-
-// ServiceProxyOptions is the query options to a Service's proxy call.
-type ServiceProxyOptions struct {
- unversioned.TypeMeta
-
- // Path is the part of URLs that include service endpoints, suffixes,
- // and parameters to use for the current proxy request to service.
- // For example, the whole request URL is
- // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
- // Path is _search?q=user:kimchy.
- Path string
-}
-
-// OwnerReference contains enough information to let you identify an owning
-// object. Currently, an owning object must be in the same namespace, so there
-// is no namespace field.
-type OwnerReference struct {
- // API version of the referent.
- APIVersion string `json:"apiVersion"`
- // Kind of the referent.
- // More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
- Kind string `json:"kind"`
- // Name of the referent.
- // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names
- Name string `json:"name"`
- // UID of the referent.
- // More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#uids
- UID types.UID `json:"uid"`
- // If true, this reference points to the managing controller.
- Controller *bool `json:"controller,omitempty"`
-}
-
-// ObjectReference contains enough information to let you inspect or modify the referred object.
-type ObjectReference struct {
- Kind string `json:"kind,omitempty"`
- Namespace string `json:"namespace,omitempty"`
- Name string `json:"name,omitempty"`
- UID types.UID `json:"uid,omitempty"`
- APIVersion string `json:"apiVersion,omitempty"`
- ResourceVersion string `json:"resourceVersion,omitempty"`
-
- // Optional. If referring to a piece of an object instead of an entire object, this string
- // should contain information to identify the sub-object. 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 {
- //TODO: Add other useful fields. apiVersion, kind, uid?
- Name string
-}
-
-type SerializedReference struct {
- unversioned.TypeMeta `json:",inline"`
- Reference ObjectReference `json:"reference,omitempty"`
-}
-
-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"`
-}
-
-// Valid values for event types (new types could be added in future)
-const (
- // Information only and will not cause any problems
- EventTypeNormal string = "Normal"
- // These events are to warn that something might go wrong
- EventTypeWarning string = "Warning"
-)
-
-// +genclient=true
-
-// 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 {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Required. The object that this event is about.
- InvolvedObject ObjectReference `json:"involvedObject,omitempty"`
-
- // Optional; this should be a short, machine understandable string that gives the reason
- // for this event being generated. For example, if the event is reporting that a container
- // can't start, the Reason might be "ImageNotFound".
- // TODO: provide exact specification for format.
- Reason string `json:"reason,omitempty"`
-
- // Optional. A human-readable description of the status of this operation.
- // TODO: decide on maximum length.
- Message string `json:"message,omitempty"`
-
- // Optional. 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 unversioned.Time `json:"firstTimestamp,omitempty"`
-
- // The time at which the most recent occurrence of this event was recorded.
- LastTimestamp unversioned.Time `json:"lastTimestamp,omitempty"`
-
- // The number of times this event has occurred.
- Count int32 `json:"count,omitempty"`
-
- // Type of this event (Normal, Warning), new types could be added in the future.
- Type string `json:"type,omitempty"`
-}
-
-// EventList is a list of events.
-type EventList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []Event `json:"items"`
-}
-
-// List holds a list of objects, which may not be known by the server.
-type List struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []runtime.Object `json:"items"`
-}
-
-// 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.
- Default ResourceList `json:"default,omitempty"`
- // DefaultRequest resource requirement request value by resource name.
- DefaultRequest ResourceList `json:"defaultRequest,omitempty"`
- // MaxLimitRequestRatio represents the max burst value 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"`
-}
-
-// +genclient=true
-
-// LimitRange sets resource usage limits for each kind of resource in a Namespace
-type LimitRange struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the limits enforced
- Spec LimitRangeSpec `json:"spec,omitempty"`
-}
-
-// LimitRangeList is a list of LimitRange items.
-type LimitRangeList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- // Items is a list of LimitRange objects
- 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"
- // ResourceConfigMaps, number
- ResourceConfigMaps ResourceName = "configmaps"
- // ResourcePersistentVolumeClaims, number
- ResourcePersistentVolumeClaims ResourceName = "persistentvolumeclaims"
- // ResourceServicesNodePorts, number
- ResourceServicesNodePorts ResourceName = "services.nodeports"
- // ResourceServicesLoadBalancers, number
- ResourceServicesLoadBalancers ResourceName = "services.loadbalancers"
- // CPU request, in cores. (500m = .5 cores)
- ResourceRequestsCPU ResourceName = "requests.cpu"
- // Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
- ResourceRequestsMemory ResourceName = "requests.memory"
- // CPU limit, in cores. (500m = .5 cores)
- ResourceLimitsCPU ResourceName = "limits.cpu"
- // Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
- ResourceLimitsMemory ResourceName = "limits.memory"
-)
-
-// A ResourceQuotaScope defines a filter that must match each object tracked by a quota
-type ResourceQuotaScope string
-
-const (
- // Match all pod objects where spec.activeDeadlineSeconds
- ResourceQuotaScopeTerminating ResourceQuotaScope = "Terminating"
- // Match all pod objects where !spec.activeDeadlineSeconds
- ResourceQuotaScopeNotTerminating ResourceQuotaScope = "NotTerminating"
- // Match all pod objects that have best effort quality of service
- ResourceQuotaScopeBestEffort ResourceQuotaScope = "BestEffort"
- // Match all pod objects that do not have best effort quality of service
- ResourceQuotaScopeNotBestEffort ResourceQuotaScope = "NotBestEffort"
-)
-
-// 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
- Hard ResourceList `json:"hard,omitempty"`
- // A collection of filters that must match each object tracked by a quota.
- // If not specified, the quota matches all objects.
- Scopes []ResourceQuotaScope `json:"scopes,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
- Hard ResourceList `json:"hard,omitempty"`
- // Used is the current observed total usage of the resource in the namespace
- Used ResourceList `json:"used,omitempty"`
-}
-
-// +genclient=true
-
-// ResourceQuota sets aggregate quota restrictions enforced per namespace
-type ResourceQuota struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Spec defines the desired quota
- Spec ResourceQuotaSpec `json:"spec,omitempty"`
-
- // Status defines the actual enforced quota and its current usage
- Status ResourceQuotaStatus `json:"status,omitempty"`
-}
-
-// ResourceQuotaList is a list of ResourceQuota items
-type ResourceQuotaList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- // Items is a list of ResourceQuota objects
- Items []ResourceQuota `json:"items"`
-}
-
-// +genclient=true
-
-// 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 {
- unversioned.TypeMeta `json:",inline"`
- 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.
- 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"
- // ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls
- ServiceAccountNamespaceKey = "namespace"
-
- // 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"
-
- // SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json
- //
- // Required fields:
- // - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file
- SecretTypeDockerConfigJson SecretType = "kubernetes.io/dockerconfigjson"
-
- // DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets
- DockerConfigJsonKey = ".dockerconfigjson"
-
- // SecretTypeBasicAuth contains data needed for basic authentication.
- //
- // Required at least one of fields:
- // - Secret.Data["username"] - username used for authentication
- // - Secret.Data["password"] - password or token needed for authentication
- SecretTypeBasicAuth SecretType = "kubernetes.io/basic-auth"
-
- // BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets
- BasicAuthUsernameKey = "username"
- // BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets
- BasicAuthPasswordKey = "password"
-
- // SecretTypeSSHAuth contains data needed for SSH authetication.
- //
- // Required field:
- // - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication
- SecretTypeSSHAuth SecretType = "kubernetes.io/ssh-auth"
-
- // SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets
- SSHAuthPrivateKey = "ssh-privatekey"
-
- // SecretTypeTLS contains information about a TLS client or server secret. It
- // is primarily used with TLS termination of the Ingress resource, but may be
- // used in other types.
- //
- // Required fields:
- // - Secret.Data["tls.key"] - TLS private key.
- // Secret.Data["tls.crt"] - TLS certificate.
- // TODO: Consider supporting different formats, specifying CA/destinationCA.
- SecretTypeTLS SecretType = "kubernetes.io/tls"
-
- // TLSCertKey is the key for tls certificates in a TLS secret.
- TLSCertKey = "tls.crt"
- // TLSPrivateKeyKey is the key for the private key field in a TLS secret.
- TLSPrivateKeyKey = "tls.key"
-)
-
-type SecretList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []Secret `json:"items"`
-}
-
-// +genclient=true
-
-// ConfigMap holds configuration data for components or applications to consume.
-type ConfigMap struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- // Data contains the configuration data.
- // Each key must be a valid DNS_SUBDOMAIN with an optional leading dot.
- Data map[string]string `json:"data,omitempty"`
-}
-
-// ConfigMapList is a resource containing a list of ConfigMap objects.
-type ConfigMapList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- // Items is the list of ConfigMaps.
- Items []ConfigMap `json:"items"`
-}
-
-// These constants are for remote command execution and port forwarding and are
-// used by both the client side and server side components.
-//
-// This is probably not the ideal place for them, but it didn't seem worth it
-// to create pkg/exec and pkg/portforward just to contain a single file with
-// constants in it. Suggestions for more appropriate alternatives are
-// definitely welcome!
-const (
- // Enable stdin for remote command execution
- ExecStdinParam = "input"
- // Enable stdout for remote command execution
- ExecStdoutParam = "output"
- // Enable stderr for remote command execution
- ExecStderrParam = "error"
- // Enable TTY for remote command execution
- ExecTTYParam = "tty"
- // Command to run for remote command execution
- ExecCommandParamm = "command"
-
- // Name of header that specifies stream type
- StreamType = "streamType"
- // Value for streamType header for stdin stream
- StreamTypeStdin = "stdin"
- // Value for streamType header for stdout stream
- StreamTypeStdout = "stdout"
- // Value for streamType header for stderr stream
- StreamTypeStderr = "stderr"
- // Value for streamType header for data stream
- StreamTypeData = "data"
- // Value for streamType header for error stream
- StreamTypeError = "error"
-
- // Name of header that specifies the port being forwarded
- PortHeader = "port"
- // Name of header that specifies a request ID used to associate the error
- // and data streams for a single forwarded connection
- PortForwardRequestIDHeader = "requestID"
-)
-
-// Similarly to above, these are constants to support HTTP PATCH utilized by
-// both the client and server that didn't make sense for a whole package to be
-// dedicated to.
-type PatchType string
-
-const (
- JSONPatchType PatchType = "application/json-patch+json"
- MergePatchType PatchType = "application/merge-patch+json"
- StrategicMergePatchType PatchType = "application/strategic-merge-patch+json"
-)
-
-// Type and constants for component health validation.
-type ComponentConditionType string
-
-// These are the valid conditions for the component.
-const (
- ComponentHealthy ComponentConditionType = "Healthy"
-)
-
-type ComponentCondition struct {
- Type ComponentConditionType `json:"type"`
- Status ConditionStatus `json:"status"`
- Message string `json:"message,omitempty"`
- Error string `json:"error,omitempty"`
-}
-
-// +genclient=true
-// +nonNamespaced=true
-
-// ComponentStatus (and ComponentStatusList) holds the cluster validation info.
-type ComponentStatus struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
-
- Conditions []ComponentCondition `json:"conditions,omitempty"`
-}
-
-type ComponentStatusList struct {
- unversioned.TypeMeta `json:",inline"`
- unversioned.ListMeta `json:"metadata,omitempty"`
-
- Items []ComponentStatus `json:"items"`
-}
-
-// SecurityContext holds security configuration that will be applied to a container.
-// Some fields are present in both SecurityContext and PodSecurityContext. When both
-// are set, the values in SecurityContext take precedence.
-type SecurityContext struct {
- // The capabilities to add/drop when running containers.
- // Defaults to the default set of capabilities granted by the container runtime.
- Capabilities *Capabilities `json:"capabilities,omitempty"`
- // Run container in privileged mode.
- // Processes in privileged containers are essentially equivalent to root on the host.
- // Defaults to false.
- Privileged *bool `json:"privileged,omitempty"`
- // The SELinux context to be applied to the container.
- // If unspecified, the container runtime will allocate a random SELinux context for each
- // container. May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty"`
- // The UID to run the entrypoint of the container process.
- // Defaults to user specified in image metadata if unspecified.
- // May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- RunAsUser *int64 `json:"runAsUser,omitempty"`
- // Indicates that the container must run as a non-root user.
- // If true, the Kubelet will validate the image at runtime to ensure that it
- // does not run as UID 0 (root) and fail to start the container if it does.
- // If unset or false, no such validation will be performed.
- // May also be set in PodSecurityContext. If set in both SecurityContext and
- // PodSecurityContext, the value specified in SecurityContext takes precedence.
- RunAsNonRoot *bool `json:"runAsNonRoot,omitempty"`
- // The read-only root filesystem allows you to restrict the locations that an application can write
- // files to, ensuring the persistent data can only be written to mounts.
- ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty"`
-}
-
-// SELinuxOptions are the labels to be applied to the container.
-type SELinuxOptions struct {
- // SELinux user label
- User string `json:"user,omitempty"`
- // SELinux role label
- Role string `json:"role,omitempty"`
- // SELinux type label
- Type string `json:"type,omitempty"`
- // SELinux level label.
- Level string `json:"level,omitempty"`
-}
-
-// RangeAllocation is an opaque API object (not exposed to end users) that can be persisted to record
-// the global allocation state of the cluster. The schema of Range and Data generic, in that Range
-// should be a string representation of the inputs to a range (for instance, for IP allocation it
-// might be a CIDR) and Data is an opaque blob understood by an allocator which is typically a
-// binary range. Consumers should use annotations to record additional information (schema version,
-// data encoding hints). A range allocation should *ALWAYS* be recreatable at any time by observation
-// of the cluster, thus the object is less strongly typed than most.
-type RangeAllocation struct {
- unversioned.TypeMeta `json:",inline"`
- ObjectMeta `json:"metadata,omitempty"`
- // A string representing a unique label for a range of resources, such as a CIDR "10.0.0.0/8" or
- // port range "10000-30000". Range is not strongly schema'd here. The Range is expected to define
- // a start and end unless there is an implicit end.
- Range string `json:"range"`
- // A byte array representing the serialized state of a range allocation. Additional clarifiers on
- // the type or format of data should be represented with annotations. For IP allocations, this is
- // represented as a bit array starting at the base IP of the CIDR in Range, with each bit representing
- // a single allocated address (the fifth bit on CIDR 10.0.0.0/8 is 10.0.0.4).
- Data []byte `json:"data"`
-}
-
-const (
- // "default-scheduler" is the name of default scheduler.
- DefaultSchedulerName = "default-scheduler"
-
- // RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
- // corresponding to every RequiredDuringScheduling affinity rule.
- // When the --hard-pod-affinity-weight scheduler flag is not specified,
- // DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule.
- DefaultHardPodAffinitySymmetricWeight int = 1
-
- // When the --failure-domains scheduler flag is not specified,
- // DefaultFailureDomains defines the set of label keys used when TopologyKey is empty in PreferredDuringScheduling anti-affinity.
- DefaultFailureDomains string = unversioned.LabelHostname + "," + unversioned.LabelZoneFailureDomain + "," + unversioned.LabelZoneRegion
-)