Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Davanum Srinivas <davanum@gmail.com> Kubernetes-commit: 50bea1dad89930ad565526910aadc314b9e9f38b
6615 lines (6011 sloc)
341 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Copyright 2015 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 v1 | |
import ( | |
"k8s.io/apimachinery/pkg/api/resource" | |
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | |
"k8s.io/apimachinery/pkg/types" | |
"k8s.io/apimachinery/pkg/util/intstr" | |
) | |
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 = "" | |
// NamespaceNodeLease is the namespace where we place node lease objects (used for node heartbeats) | |
NamespaceNodeLease string = "kube-node-lease" | |
) | |
// Volume represents a named volume in a pod that may be accessed by any container in the pod. | |
type Volume struct { | |
// name of the volume. | |
// Must be a DNS_LABEL and unique within the pod. | |
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names | |
Name string `json:"name" protobuf:"bytes,1,opt,name=name"` | |
// volumeSource represents the location and type of the mounted volume. | |
// If not specified, the Volume is implied to be an EmptyDir. | |
// This implied behavior is deprecated and will be removed in a future version. | |
VolumeSource `json:",inline" protobuf:"bytes,2,opt,name=volumeSource"` | |
} | |
// Represents the source of a volume to mount. | |
// Only one of its members may be specified. | |
type VolumeSource struct { | |
// hostPath represents a pre-existing file or directory on the host | |
// machine that is directly exposed to the container. This is generally | |
// used for system agents or other privileged things that are allowed | |
// to see the host machine. Most containers will NOT need this. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | |
// --- | |
// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not | |
// mount host directories as read/write. | |
// +optional | |
HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,1,opt,name=hostPath"` | |
// emptyDir represents a temporary directory that shares a pod's lifetime. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir | |
// +optional | |
EmptyDir *EmptyDirVolumeSource `json:"emptyDir,omitempty" protobuf:"bytes,2,opt,name=emptyDir"` | |
// gcePersistentDisk represents a GCE Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
// +optional | |
GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,3,opt,name=gcePersistentDisk"` | |
// awsElasticBlockStore represents an AWS Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore | |
// +optional | |
AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,4,opt,name=awsElasticBlockStore"` | |
// gitRepo represents a git repository at a particular revision. | |
// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an | |
// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir | |
// into the Pod's container. | |
// +optional | |
GitRepo *GitRepoVolumeSource `json:"gitRepo,omitempty" protobuf:"bytes,5,opt,name=gitRepo"` | |
// secret represents a secret that should populate this volume. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret | |
// +optional | |
Secret *SecretVolumeSource `json:"secret,omitempty" protobuf:"bytes,6,opt,name=secret"` | |
// nfs represents an NFS mount on the host that shares a pod's lifetime | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | |
// +optional | |
NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,7,opt,name=nfs"` | |
// iscsi represents an ISCSI Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. | |
// More info: https://examples.k8s.io/volumes/iscsi/README.md | |
// +optional | |
ISCSI *ISCSIVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,8,opt,name=iscsi"` | |
// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md | |
// +optional | |
Glusterfs *GlusterfsVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,9,opt,name=glusterfs"` | |
// persistentVolumeClaimVolumeSource represents a reference to a | |
// PersistentVolumeClaim in the same namespace. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims | |
// +optional | |
PersistentVolumeClaim *PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaim"` | |
// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md | |
// +optional | |
RBD *RBDVolumeSource `json:"rbd,omitempty" protobuf:"bytes,11,opt,name=rbd"` | |
// flexVolume represents a generic volume resource that is | |
// provisioned/attached using an exec based plugin. | |
// +optional | |
FlexVolume *FlexVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` | |
// cinder represents a cinder volume attached and mounted on kubelets host machine. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
Cinder *CinderVolumeSource `json:"cinder,omitempty" protobuf:"bytes,13,opt,name=cinder"` | |
// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime | |
// +optional | |
CephFS *CephFSVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,14,opt,name=cephfs"` | |
// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running | |
// +optional | |
Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,15,opt,name=flocker"` | |
// downwardAPI represents downward API about the pod that should populate this volume | |
// +optional | |
DownwardAPI *DownwardAPIVolumeSource `json:"downwardAPI,omitempty" protobuf:"bytes,16,opt,name=downwardAPI"` | |
// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. | |
// +optional | |
FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,17,opt,name=fc"` | |
// azureFile represents an Azure File Service mount on the host and bind mount to the pod. | |
// +optional | |
AzureFile *AzureFileVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,18,opt,name=azureFile"` | |
// configMap represents a configMap that should populate this volume | |
// +optional | |
ConfigMap *ConfigMapVolumeSource `json:"configMap,omitempty" protobuf:"bytes,19,opt,name=configMap"` | |
// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine | |
// +optional | |
VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,20,opt,name=vsphereVolume"` | |
// quobyte represents a Quobyte mount on the host that shares a pod's lifetime | |
// +optional | |
Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,21,opt,name=quobyte"` | |
// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. | |
// +optional | |
AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,22,opt,name=azureDisk"` | |
// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine | |
PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,23,opt,name=photonPersistentDisk"` | |
// projected items for all in one resources secrets, configmaps, and downward API | |
Projected *ProjectedVolumeSource `json:"projected,omitempty" protobuf:"bytes,26,opt,name=projected"` | |
// portworxVolume represents a portworx volume attached and mounted on kubelets host machine | |
// +optional | |
PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,24,opt,name=portworxVolume"` | |
// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. | |
// +optional | |
ScaleIO *ScaleIOVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,25,opt,name=scaleIO"` | |
// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. | |
// +optional | |
StorageOS *StorageOSVolumeSource `json:"storageos,omitempty" protobuf:"bytes,27,opt,name=storageos"` | |
// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). | |
// +optional | |
CSI *CSIVolumeSource `json:"csi,omitempty" protobuf:"bytes,28,opt,name=csi"` | |
// ephemeral represents a volume that is handled by a cluster storage driver. | |
// The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, | |
// and deleted when the pod is removed. | |
// | |
// Use this if: | |
// a) the volume is only needed while the pod runs, | |
// b) features of normal volumes like restoring from snapshot or capacity | |
// tracking are needed, | |
// c) the storage driver is specified through a storage class, and | |
// d) the storage driver supports dynamic volume provisioning through | |
// a PersistentVolumeClaim (see EphemeralVolumeSource for more | |
// information on the connection between this volume type | |
// and PersistentVolumeClaim). | |
// | |
// Use PersistentVolumeClaim or one of the vendor-specific | |
// APIs for volumes that persist for longer than the lifecycle | |
// of an individual pod. | |
// | |
// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to | |
// be used that way - see the documentation of the driver for | |
// more information. | |
// | |
// A pod can use both types of ephemeral volumes and | |
// persistent volumes at the same time. | |
// | |
// +optional | |
Ephemeral *EphemeralVolumeSource `json:"ephemeral,omitempty" protobuf:"bytes,29,opt,name=ephemeral"` | |
} | |
// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. | |
// This volume finds the bound PV and mounts that volume for the pod. A | |
// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another | |
// type of volume that is owned by someone else (the system). | |
type PersistentVolumeClaimVolumeSource struct { | |
// claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims | |
ClaimName string `json:"claimName" protobuf:"bytes,1,opt,name=claimName"` | |
// readOnly Will force the ReadOnly setting in VolumeMounts. | |
// Default false. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,2,opt,name=readOnly"` | |
} | |
// PersistentVolumeSource is similar to VolumeSource but meant for the | |
// administrator who creates PVs. Exactly one of its members must be set. | |
type PersistentVolumeSource struct { | |
// gcePersistentDisk represents a GCE Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. Provisioned by an admin. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
// +optional | |
GCEPersistentDisk *GCEPersistentDiskVolumeSource `json:"gcePersistentDisk,omitempty" protobuf:"bytes,1,opt,name=gcePersistentDisk"` | |
// awsElasticBlockStore represents an AWS Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore | |
// +optional | |
AWSElasticBlockStore *AWSElasticBlockStoreVolumeSource `json:"awsElasticBlockStore,omitempty" protobuf:"bytes,2,opt,name=awsElasticBlockStore"` | |
// 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. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | |
// +optional | |
HostPath *HostPathVolumeSource `json:"hostPath,omitempty" protobuf:"bytes,3,opt,name=hostPath"` | |
// glusterfs represents a Glusterfs volume that is attached to a host and | |
// exposed to the pod. Provisioned by an admin. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md | |
// +optional | |
Glusterfs *GlusterfsPersistentVolumeSource `json:"glusterfs,omitempty" protobuf:"bytes,4,opt,name=glusterfs"` | |
// nfs represents an NFS mount on the host. Provisioned by an admin. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | |
// +optional | |
NFS *NFSVolumeSource `json:"nfs,omitempty" protobuf:"bytes,5,opt,name=nfs"` | |
// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md | |
// +optional | |
RBD *RBDPersistentVolumeSource `json:"rbd,omitempty" protobuf:"bytes,6,opt,name=rbd"` | |
// iscsi represents an ISCSI Disk resource that is attached to a | |
// kubelet's host machine and then exposed to the pod. Provisioned by an admin. | |
// +optional | |
ISCSI *ISCSIPersistentVolumeSource `json:"iscsi,omitempty" protobuf:"bytes,7,opt,name=iscsi"` | |
// cinder represents a cinder volume attached and mounted on kubelets host machine. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
Cinder *CinderPersistentVolumeSource `json:"cinder,omitempty" protobuf:"bytes,8,opt,name=cinder"` | |
// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime | |
// +optional | |
CephFS *CephFSPersistentVolumeSource `json:"cephfs,omitempty" protobuf:"bytes,9,opt,name=cephfs"` | |
// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. | |
// +optional | |
FC *FCVolumeSource `json:"fc,omitempty" protobuf:"bytes,10,opt,name=fc"` | |
// flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running | |
// +optional | |
Flocker *FlockerVolumeSource `json:"flocker,omitempty" protobuf:"bytes,11,opt,name=flocker"` | |
// flexVolume represents a generic volume resource that is | |
// provisioned/attached using an exec based plugin. | |
// +optional | |
FlexVolume *FlexPersistentVolumeSource `json:"flexVolume,omitempty" protobuf:"bytes,12,opt,name=flexVolume"` | |
// azureFile represents an Azure File Service mount on the host and bind mount to the pod. | |
// +optional | |
AzureFile *AzureFilePersistentVolumeSource `json:"azureFile,omitempty" protobuf:"bytes,13,opt,name=azureFile"` | |
// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine | |
// +optional | |
VsphereVolume *VsphereVirtualDiskVolumeSource `json:"vsphereVolume,omitempty" protobuf:"bytes,14,opt,name=vsphereVolume"` | |
// quobyte represents a Quobyte mount on the host that shares a pod's lifetime | |
// +optional | |
Quobyte *QuobyteVolumeSource `json:"quobyte,omitempty" protobuf:"bytes,15,opt,name=quobyte"` | |
// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. | |
// +optional | |
AzureDisk *AzureDiskVolumeSource `json:"azureDisk,omitempty" protobuf:"bytes,16,opt,name=azureDisk"` | |
// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine | |
PhotonPersistentDisk *PhotonPersistentDiskVolumeSource `json:"photonPersistentDisk,omitempty" protobuf:"bytes,17,opt,name=photonPersistentDisk"` | |
// portworxVolume represents a portworx volume attached and mounted on kubelets host machine | |
// +optional | |
PortworxVolume *PortworxVolumeSource `json:"portworxVolume,omitempty" protobuf:"bytes,18,opt,name=portworxVolume"` | |
// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. | |
// +optional | |
ScaleIO *ScaleIOPersistentVolumeSource `json:"scaleIO,omitempty" protobuf:"bytes,19,opt,name=scaleIO"` | |
// local represents directly-attached storage with node affinity | |
// +optional | |
Local *LocalVolumeSource `json:"local,omitempty" protobuf:"bytes,20,opt,name=local"` | |
// storageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod | |
// More info: https://examples.k8s.io/volumes/storageos/README.md | |
// +optional | |
StorageOS *StorageOSPersistentVolumeSource `json:"storageos,omitempty" protobuf:"bytes,21,opt,name=storageos"` | |
// csi represents storage that is handled by an external CSI driver (Beta feature). | |
// +optional | |
CSI *CSIPersistentVolumeSource `json:"csi,omitempty" protobuf:"bytes,22,opt,name=csi"` | |
} | |
const ( | |
// BetaStorageClassAnnotation represents the beta/previous StorageClass annotation. | |
// It's currently still used and will be held for backwards compatibility | |
BetaStorageClassAnnotation = "volume.beta.kubernetes.io/storage-class" | |
// MountOptionAnnotation defines mount option annotation used in PVs | |
MountOptionAnnotation = "volume.beta.kubernetes.io/mount-options" | |
) | |
// +genclient | |
// +genclient:nonNamespaced | |
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
// PersistentVolume (PV) is a storage resource provisioned by an administrator. | |
// It is analogous to a node. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes | |
type PersistentVolume struct { | |
metav1.TypeMeta `json:",inline"` | |
// Standard object's metadata. | |
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
// +optional | |
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` | |
// spec defines a specification of a persistent volume owned by the cluster. | |
// Provisioned by an administrator. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes | |
// +optional | |
Spec PersistentVolumeSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` | |
// status represents the current information/status for the persistent volume. | |
// Populated by the system. | |
// Read-only. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes | |
// +optional | |
Status PersistentVolumeStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` | |
} | |
// PersistentVolumeSpec is the specification of a persistent volume. | |
type PersistentVolumeSpec struct { | |
// capacity is the description of the persistent volume's resources and capacity. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity | |
// +optional | |
Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` | |
// persistentVolumeSource is the actual volume backing the persistent volume. | |
PersistentVolumeSource `json:",inline" protobuf:"bytes,2,opt,name=persistentVolumeSource"` | |
// accessModes contains all ways the volume can be mounted. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes | |
// +optional | |
AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,3,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` | |
// claimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim. | |
// Expected to be non-nil when bound. | |
// claim.VolumeName is the authoritative bind between PV and PVC. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding | |
// +optional | |
ClaimRef *ObjectReference `json:"claimRef,omitempty" protobuf:"bytes,4,opt,name=claimRef"` | |
// persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. | |
// Valid options are Retain (default for manually created PersistentVolumes), Delete (default | |
// for dynamically provisioned PersistentVolumes), and Recycle (deprecated). | |
// Recycle must be supported by the volume plugin underlying this PersistentVolume. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming | |
// +optional | |
PersistentVolumeReclaimPolicy PersistentVolumeReclaimPolicy `json:"persistentVolumeReclaimPolicy,omitempty" protobuf:"bytes,5,opt,name=persistentVolumeReclaimPolicy,casttype=PersistentVolumeReclaimPolicy"` | |
// storageClassName is the name of StorageClass to which this persistent volume belongs. Empty value | |
// means that this volume does not belong to any StorageClass. | |
// +optional | |
StorageClassName string `json:"storageClassName,omitempty" protobuf:"bytes,6,opt,name=storageClassName"` | |
// mountOptions is the list of mount options, e.g. ["ro", "soft"]. Not validated - mount will | |
// simply fail if one is invalid. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options | |
// +optional | |
MountOptions []string `json:"mountOptions,omitempty" protobuf:"bytes,7,opt,name=mountOptions"` | |
// volumeMode defines if a volume is intended to be used with a formatted filesystem | |
// or to remain in raw block state. Value of Filesystem is implied when not included in spec. | |
// +optional | |
VolumeMode *PersistentVolumeMode `json:"volumeMode,omitempty" protobuf:"bytes,8,opt,name=volumeMode,casttype=PersistentVolumeMode"` | |
// nodeAffinity defines constraints that limit what nodes this volume can be accessed from. | |
// This field influences the scheduling of pods that use this volume. | |
// +optional | |
NodeAffinity *VolumeNodeAffinity `json:"nodeAffinity,omitempty" protobuf:"bytes,9,opt,name=nodeAffinity"` | |
} | |
// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from. | |
type VolumeNodeAffinity struct { | |
// required specifies hard node constraints that must be met. | |
Required *NodeSelector `json:"required,omitempty" protobuf:"bytes,1,opt,name=required"` | |
} | |
// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes. | |
// +enum | |
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" | |
) | |
// PersistentVolumeMode describes how a volume is intended to be consumed, either Block or Filesystem. | |
// +enum | |
type PersistentVolumeMode string | |
const ( | |
// PersistentVolumeBlock means the volume will not be formatted with a filesystem and will remain a raw block device. | |
PersistentVolumeBlock PersistentVolumeMode = "Block" | |
// PersistentVolumeFilesystem means the volume will be or is formatted with a filesystem. | |
PersistentVolumeFilesystem PersistentVolumeMode = "Filesystem" | |
) | |
// PersistentVolumeStatus is the current status of a persistent volume. | |
type PersistentVolumeStatus struct { | |
// phase indicates if a volume is available, bound to a claim, or released by a claim. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase | |
// +optional | |
Phase PersistentVolumePhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumePhase"` | |
// message is a human-readable message indicating details about why the volume is in this state. | |
// +optional | |
Message string `json:"message,omitempty" protobuf:"bytes,2,opt,name=message"` | |
// reason is a brief CamelCase string that describes any failure and is meant | |
// for machine parsing and tidy display in the CLI. | |
// +optional | |
Reason string `json:"reason,omitempty" protobuf:"bytes,3,opt,name=reason"` | |
} | |
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
// PersistentVolumeList is a list of PersistentVolume items. | |
type PersistentVolumeList struct { | |
metav1.TypeMeta `json:",inline"` | |
// Standard list metadata. | |
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | |
// +optional | |
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` | |
// items is a list of persistent volumes. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes | |
Items []PersistentVolume `json:"items" protobuf:"bytes,2,rep,name=items"` | |
} | |
// +genclient | |
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
// PersistentVolumeClaim is a user's request for and claim to a persistent volume | |
type PersistentVolumeClaim struct { | |
metav1.TypeMeta `json:",inline"` | |
// Standard object's metadata. | |
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata | |
// +optional | |
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` | |
// spec defines the desired characteristics of a volume requested by a pod author. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims | |
// +optional | |
Spec PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` | |
// status represents the current information/status of a persistent volume claim. | |
// Read-only. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims | |
// +optional | |
Status PersistentVolumeClaimStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` | |
} | |
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object | |
// PersistentVolumeClaimList is a list of PersistentVolumeClaim items. | |
type PersistentVolumeClaimList struct { | |
metav1.TypeMeta `json:",inline"` | |
// Standard list metadata. | |
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | |
// +optional | |
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` | |
// items is a list of persistent volume claims. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims | |
Items []PersistentVolumeClaim `json:"items" protobuf:"bytes,2,rep,name=items"` | |
} | |
// PersistentVolumeClaimSpec describes the common attributes of storage devices | |
// and allows a Source for provider-specific attributes | |
type PersistentVolumeClaimSpec struct { | |
// accessModes contains the desired access modes the volume should have. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 | |
// +optional | |
AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,1,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` | |
// selector is a label query over volumes to consider for binding. | |
// +optional | |
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,opt,name=selector"` | |
// resources represents the minimum resources the volume should have. | |
// If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements | |
// that are lower than previous value but must still be higher than capacity recorded in the | |
// status field of the claim. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources | |
// +optional | |
Resources ResourceRequirements `json:"resources,omitempty" protobuf:"bytes,2,opt,name=resources"` | |
// volumeName is the binding reference to the PersistentVolume backing this claim. | |
// +optional | |
VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,3,opt,name=volumeName"` | |
// storageClassName is the name of the StorageClass required by the claim. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 | |
// +optional | |
StorageClassName *string `json:"storageClassName,omitempty" protobuf:"bytes,5,opt,name=storageClassName"` | |
// volumeMode defines what type of volume is required by the claim. | |
// Value of Filesystem is implied when not included in claim spec. | |
// +optional | |
VolumeMode *PersistentVolumeMode `json:"volumeMode,omitempty" protobuf:"bytes,6,opt,name=volumeMode,casttype=PersistentVolumeMode"` | |
// dataSource field can be used to specify either: | |
// * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) | |
// * An existing PVC (PersistentVolumeClaim) | |
// If the provisioner or an external controller can support the specified data source, | |
// it will create a new volume based on the contents of the specified data source. | |
// If the AnyVolumeDataSource feature gate is enabled, this field will always have | |
// the same contents as the DataSourceRef field. | |
// +optional | |
DataSource *TypedLocalObjectReference `json:"dataSource,omitempty" protobuf:"bytes,7,opt,name=dataSource"` | |
// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty | |
// volume is desired. This may be any local object from a non-empty API group (non | |
// core object) or a PersistentVolumeClaim object. | |
// When this field is specified, volume binding will only succeed if the type of | |
// the specified object matches some installed volume populator or dynamic | |
// provisioner. | |
// This field will replace the functionality of the DataSource field and as such | |
// if both fields are non-empty, they must have the same value. For backwards | |
// compatibility, both fields (DataSource and DataSourceRef) will be set to the same | |
// value automatically if one of them is empty and the other is non-empty. | |
// There are two important differences between DataSource and DataSourceRef: | |
// * While DataSource only allows two specific types of objects, DataSourceRef | |
// allows any non-core object, as well as PersistentVolumeClaim objects. | |
// * While DataSource ignores disallowed values (dropping them), DataSourceRef | |
// preserves all values, and generates an error if a disallowed value is | |
// specified. | |
// (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. | |
// +optional | |
DataSourceRef *TypedLocalObjectReference `json:"dataSourceRef,omitempty" protobuf:"bytes,8,opt,name=dataSourceRef"` | |
} | |
// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type | |
type PersistentVolumeClaimConditionType string | |
const ( | |
// PersistentVolumeClaimResizing - a user trigger resize of pvc has been started | |
PersistentVolumeClaimResizing PersistentVolumeClaimConditionType = "Resizing" | |
// PersistentVolumeClaimFileSystemResizePending - controller resize is finished and a file system resize is pending on node | |
PersistentVolumeClaimFileSystemResizePending PersistentVolumeClaimConditionType = "FileSystemResizePending" | |
) | |
// +enum | |
type PersistentVolumeClaimResizeStatus string | |
const ( | |
// When expansion is complete, the empty string is set by resize controller or kubelet. | |
PersistentVolumeClaimNoExpansionInProgress PersistentVolumeClaimResizeStatus = "" | |
// State set when resize controller starts expanding the volume in control-plane | |
PersistentVolumeClaimControllerExpansionInProgress PersistentVolumeClaimResizeStatus = "ControllerExpansionInProgress" | |
// State set when expansion has failed in resize controller with a terminal error. | |
// Transient errors such as timeout should not set this status and should leave ResizeStatus | |
// unmodified, so as resize controller can resume the volume expansion. | |
PersistentVolumeClaimControllerExpansionFailed PersistentVolumeClaimResizeStatus = "ControllerExpansionFailed" | |
// State set when resize controller has finished expanding the volume but further expansion is needed on the node. | |
PersistentVolumeClaimNodeExpansionPending PersistentVolumeClaimResizeStatus = "NodeExpansionPending" | |
// State set when kubelet starts expanding the volume. | |
PersistentVolumeClaimNodeExpansionInProgress PersistentVolumeClaimResizeStatus = "NodeExpansionInProgress" | |
// State set when expansion has failed in kubelet with a terminal error. Transient errors don't set NodeExpansionFailed. | |
PersistentVolumeClaimNodeExpansionFailed PersistentVolumeClaimResizeStatus = "NodeExpansionFailed" | |
) | |
// PersistentVolumeClaimCondition contails details about state of pvc | |
type PersistentVolumeClaimCondition struct { | |
Type PersistentVolumeClaimConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=PersistentVolumeClaimConditionType"` | |
Status ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=ConditionStatus"` | |
// lastProbeTime is the time we probed the condition. | |
// +optional | |
LastProbeTime metav1.Time `json:"lastProbeTime,omitempty" protobuf:"bytes,3,opt,name=lastProbeTime"` | |
// lastTransitionTime is the time the condition transitioned from one status to another. | |
// +optional | |
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,4,opt,name=lastTransitionTime"` | |
// reason is a unique, this should be a short, machine understandable string that gives the reason | |
// for condition's last transition. If it reports "ResizeStarted" that means the underlying | |
// persistent volume is being resized. | |
// +optional | |
Reason string `json:"reason,omitempty" protobuf:"bytes,5,opt,name=reason"` | |
// message is the human-readable message indicating details about last transition. | |
// +optional | |
Message string `json:"message,omitempty" protobuf:"bytes,6,opt,name=message"` | |
} | |
// PersistentVolumeClaimStatus is the current status of a persistent volume claim. | |
type PersistentVolumeClaimStatus struct { | |
// phase represents the current phase of PersistentVolumeClaim. | |
// +optional | |
Phase PersistentVolumeClaimPhase `json:"phase,omitempty" protobuf:"bytes,1,opt,name=phase,casttype=PersistentVolumeClaimPhase"` | |
// accessModes contains the actual access modes the volume backing the PVC has. | |
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 | |
// +optional | |
AccessModes []PersistentVolumeAccessMode `json:"accessModes,omitempty" protobuf:"bytes,2,rep,name=accessModes,casttype=PersistentVolumeAccessMode"` | |
// capacity represents the actual resources of the underlying volume. | |
// +optional | |
Capacity ResourceList `json:"capacity,omitempty" protobuf:"bytes,3,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` | |
// conditions is the current Condition of persistent volume claim. If underlying persistent volume is being | |
// resized then the Condition will be set to 'ResizeStarted'. | |
// +optional | |
// +patchMergeKey=type | |
// +patchStrategy=merge | |
Conditions []PersistentVolumeClaimCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,4,rep,name=conditions"` | |
// allocatedResources is the storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may | |
// be larger than the actual capacity when a volume expansion operation is requested. | |
// For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. | |
// If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. | |
// If a volume expansion capacity request is lowered, allocatedResources is only | |
// lowered if there are no expansion operations in progress and if the actual volume capacity | |
// is equal or lower than the requested capacity. | |
// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. | |
// +featureGate=RecoverVolumeExpansionFailure | |
// +optional | |
AllocatedResources ResourceList `json:"allocatedResources,omitempty" protobuf:"bytes,5,rep,name=allocatedResources,casttype=ResourceList,castkey=ResourceName"` | |
// resizeStatus stores status of resize operation. | |
// ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty | |
// string by resize controller or kubelet. | |
// This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature. | |
// +featureGate=RecoverVolumeExpansionFailure | |
// +optional | |
ResizeStatus *PersistentVolumeClaimResizeStatus `json:"resizeStatus,omitempty" protobuf:"bytes,6,opt,name=resizeStatus,casttype=PersistentVolumeClaimResizeStatus"` | |
} | |
// +enum | |
type PersistentVolumeAccessMode string | |
const ( | |
// can be mounted in 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" | |
// can be mounted in read/write mode to exactly 1 pod | |
// cannot be used in combination with other access modes | |
ReadWriteOncePod PersistentVolumeAccessMode = "ReadWriteOncePod" | |
) | |
// +enum | |
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" | |
) | |
// +enum | |
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" | |
) | |
// +enum | |
type HostPathType string | |
const ( | |
// For backwards compatible, leave it empty if unset | |
HostPathUnset HostPathType = "" | |
// If nothing exists at the given path, an empty directory will be created there | |
// as needed with file mode 0755, having the same group and ownership with Kubelet. | |
HostPathDirectoryOrCreate HostPathType = "DirectoryOrCreate" | |
// A directory must exist at the given path | |
HostPathDirectory HostPathType = "Directory" | |
// If nothing exists at the given path, an empty file will be created there | |
// as needed with file mode 0644, having the same group and ownership with Kubelet. | |
HostPathFileOrCreate HostPathType = "FileOrCreate" | |
// A file must exist at the given path | |
HostPathFile HostPathType = "File" | |
// A UNIX socket must exist at the given path | |
HostPathSocket HostPathType = "Socket" | |
// A character device must exist at the given path | |
HostPathCharDev HostPathType = "CharDevice" | |
// A block device must exist at the given path | |
HostPathBlockDev HostPathType = "BlockDevice" | |
) | |
// Represents a host path mapped into a pod. | |
// Host path volumes do not support ownership management or SELinux relabeling. | |
type HostPathVolumeSource struct { | |
// path of the directory on the host. | |
// If the path is a symlink, it will follow the link to the real path. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | |
Path string `json:"path" protobuf:"bytes,1,opt,name=path"` | |
// type for HostPath Volume | |
// Defaults to "" | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath | |
// +optional | |
Type *HostPathType `json:"type,omitempty" protobuf:"bytes,2,opt,name=type"` | |
} | |
// Represents an empty directory for a pod. | |
// Empty directory volumes support ownership management and SELinux relabeling. | |
type EmptyDirVolumeSource struct { | |
// medium represents what type of storage medium should back this directory. | |
// The default is "" which means to use the node's default medium. | |
// Must be an empty string (default) or Memory. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir | |
// +optional | |
Medium StorageMedium `json:"medium,omitempty" protobuf:"bytes,1,opt,name=medium,casttype=StorageMedium"` | |
// sizeLimit is the total amount of local storage required for this EmptyDir volume. | |
// The size limit is also applicable for memory medium. | |
// The maximum usage on memory medium EmptyDir would be the minimum value between | |
// the SizeLimit specified here and the sum of memory limits of all containers in a pod. | |
// The default is nil which means that the limit is undefined. | |
// More info: http://kubernetes.io/docs/user-guide/volumes#emptydir | |
// +optional | |
SizeLimit *resource.Quantity `json:"sizeLimit,omitempty" protobuf:"bytes,2,opt,name=sizeLimit"` | |
} | |
// Represents a Glusterfs mount that lasts the lifetime of a pod. | |
// Glusterfs volumes do not support ownership management or SELinux relabeling. | |
type GlusterfsVolumeSource struct { | |
// endpoints is the endpoint name that details Glusterfs topology. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
EndpointsName string `json:"endpoints" protobuf:"bytes,1,opt,name=endpoints"` | |
// path is the Glusterfs volume path. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
Path string `json:"path" protobuf:"bytes,2,opt,name=path"` | |
// readOnly here will force the Glusterfs volume to be mounted with read-only permissions. | |
// Defaults to false. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
} | |
// Represents a Glusterfs mount that lasts the lifetime of a pod. | |
// Glusterfs volumes do not support ownership management or SELinux relabeling. | |
type GlusterfsPersistentVolumeSource struct { | |
// endpoints is the endpoint name that details Glusterfs topology. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
EndpointsName string `json:"endpoints" protobuf:"bytes,1,opt,name=endpoints"` | |
// path is the Glusterfs volume path. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
Path string `json:"path" protobuf:"bytes,2,opt,name=path"` | |
// readOnly here will force the Glusterfs volume to be mounted with read-only permissions. | |
// Defaults to false. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
// endpointsNamespace is the namespace that contains Glusterfs endpoint. | |
// If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC. | |
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod | |
// +optional | |
EndpointsNamespace *string `json:"endpointsNamespace,omitempty" protobuf:"bytes,4,opt,name=endpointsNamespace"` | |
} | |
// Represents a Rados Block Device mount that lasts the lifetime of a pod. | |
// RBD volumes support ownership management and SELinux relabeling. | |
type RBDVolumeSource struct { | |
// monitors is a collection of Ceph monitors. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` | |
// image is the rados image name. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
RBDImage string `json:"image" protobuf:"bytes,2,opt,name=image"` | |
// fsType is the filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` | |
// pool is the rados pool name. | |
// Default is rbd. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"` | |
// user is the rados user name. | |
// Default is admin. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"` | |
// keyring is the path to key ring for RBDUser. | |
// Default is /etc/ceph/keyring. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"` | |
// secretRef is name of the authentication secret for RBDUser. If provided | |
// overrides keyring. | |
// Default is nil. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,7,opt,name=secretRef"` | |
// readOnly here will force the ReadOnly setting in VolumeMounts. | |
// Defaults to false. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,8,opt,name=readOnly"` | |
} | |
// Represents a Rados Block Device mount that lasts the lifetime of a pod. | |
// RBD volumes support ownership management and SELinux relabeling. | |
type RBDPersistentVolumeSource struct { | |
// monitors is a collection of Ceph monitors. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
CephMonitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` | |
// image is the rados image name. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
RBDImage string `json:"image" protobuf:"bytes,2,opt,name=image"` | |
// fsType is the filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` | |
// pool is the rados pool name. | |
// Default is rbd. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
RBDPool string `json:"pool,omitempty" protobuf:"bytes,4,opt,name=pool"` | |
// user is the rados user name. | |
// Default is admin. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
RadosUser string `json:"user,omitempty" protobuf:"bytes,5,opt,name=user"` | |
// keyring is the path to key ring for RBDUser. | |
// Default is /etc/ceph/keyring. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
Keyring string `json:"keyring,omitempty" protobuf:"bytes,6,opt,name=keyring"` | |
// secretRef is name of the authentication secret for RBDUser. If provided | |
// overrides keyring. | |
// Default is nil. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
SecretRef *SecretReference `json:"secretRef,omitempty" protobuf:"bytes,7,opt,name=secretRef"` | |
// readOnly here will force the ReadOnly setting in VolumeMounts. | |
// Defaults to false. | |
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,8,opt,name=readOnly"` | |
} | |
// 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 { | |
// volumeID used to identify the volume in cinder. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` | |
// fsType is the filesystem type to mount. | |
// Must be a filesystem type supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
// secretRef is optional: points to a secret object containing parameters used to connect | |
// to OpenStack. | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,4,opt,name=secretRef"` | |
} | |
// 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 CinderPersistentVolumeSource struct { | |
// volumeID used to identify the volume in cinder. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` | |
// fsType Filesystem type to mount. | |
// Must be a filesystem type supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
// secretRef is Optional: points to a secret object containing parameters used to connect | |
// to OpenStack. | |
// +optional | |
SecretRef *SecretReference `json:"secretRef,omitempty" protobuf:"bytes,4,opt,name=secretRef"` | |
} | |
// 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 { | |
// monitors is Required: Monitors is a collection of Ceph monitors | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` | |
// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / | |
// +optional | |
Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` | |
// user is optional: User is the rados user name, default is admin | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` | |
// secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
SecretFile string `json:"secretFile,omitempty" protobuf:"bytes,4,opt,name=secretFile"` | |
// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` | |
// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` | |
} | |
// SecretReference represents a Secret Reference. It has enough information to retrieve secret | |
// in any namespace | |
// +structType=atomic | |
type SecretReference struct { | |
// name is unique within a namespace to reference a secret resource. | |
// +optional | |
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"` | |
// namespace defines the space within which the secret name must be unique. | |
// +optional | |
Namespace string `json:"namespace,omitempty" protobuf:"bytes,2,opt,name=namespace"` | |
} | |
// Represents a Ceph Filesystem mount that lasts the lifetime of a pod | |
// Cephfs volumes do not support ownership management or SELinux relabeling. | |
type CephFSPersistentVolumeSource struct { | |
// monitors is Required: Monitors is a collection of Ceph monitors | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
Monitors []string `json:"monitors" protobuf:"bytes,1,rep,name=monitors"` | |
// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / | |
// +optional | |
Path string `json:"path,omitempty" protobuf:"bytes,2,opt,name=path"` | |
// user is Optional: User is the rados user name, default is admin | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
User string `json:"user,omitempty" protobuf:"bytes,3,opt,name=user"` | |
// secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
SecretFile string `json:"secretFile,omitempty" protobuf:"bytes,4,opt,name=secretFile"` | |
// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
SecretRef *SecretReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` | |
// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` | |
} | |
// Represents a Flocker volume mounted by the Flocker agent. | |
// One and only one of datasetName and datasetUUID should be set. | |
// Flocker volumes do not support ownership management or SELinux relabeling. | |
type FlockerVolumeSource struct { | |
// datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker | |
// should be considered as deprecated | |
// +optional | |
DatasetName string `json:"datasetName,omitempty" protobuf:"bytes,1,opt,name=datasetName"` | |
// datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset | |
// +optional | |
DatasetUUID string `json:"datasetUUID,omitempty" protobuf:"bytes,2,opt,name=datasetUUID"` | |
} | |
// 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, assume anything we don't explicitly handle is this | |
StorageMediumMemory StorageMedium = "Memory" // use memory (e.g. tmpfs on linux) | |
StorageMediumHugePages StorageMedium = "HugePages" // use hugepages | |
StorageMediumHugePagesPrefix StorageMedium = "HugePages-" // prefix for full medium notation HugePages-<size> | |
) | |
// Protocol defines network protocols supported for things like container ports. | |
// +enum | |
type Protocol string | |
const ( | |
// ProtocolTCP is the TCP protocol. | |
ProtocolTCP Protocol = "TCP" | |
// ProtocolUDP is the UDP protocol. | |
ProtocolUDP Protocol = "UDP" | |
// ProtocolSCTP is the SCTP protocol. | |
ProtocolSCTP Protocol = "SCTP" | |
) | |
// 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 { | |
// pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
PDName string `json:"pdName" protobuf:"bytes,1,opt,name=pdName"` | |
// fsType is filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// partition is the partition in the volume that you want to mount. | |
// If omitted, the default is to mount by volume name. | |
// Examples: For volume /dev/sda1, you specify the partition as "1". | |
// Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
// +optional | |
Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` | |
// readOnly here will force the ReadOnly setting in VolumeMounts. | |
// Defaults to false. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
} | |
// Represents a Quobyte mount that lasts the lifetime of a pod. | |
// Quobyte volumes do not support ownership management or SELinux relabeling. | |
type QuobyteVolumeSource struct { | |
// registry represents a single or multiple Quobyte Registry services | |
// specified as a string as host:port pair (multiple entries are separated with commas) | |
// which acts as the central registry for volumes | |
Registry string `json:"registry" protobuf:"bytes,1,opt,name=registry"` | |
// volume is a string that references an already created Quobyte volume by name. | |
Volume string `json:"volume" protobuf:"bytes,2,opt,name=volume"` | |
// readOnly here will force the Quobyte volume to be mounted with read-only permissions. | |
// Defaults to false. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
// user to map volume access to | |
// Defaults to serivceaccount user | |
// +optional | |
User string `json:"user,omitempty" protobuf:"bytes,4,opt,name=user"` | |
// group to map volume access to | |
// Default is no group | |
// +optional | |
Group string `json:"group,omitempty" protobuf:"bytes,5,opt,name=group"` | |
// tenant owning the given Quobyte volume in the Backend | |
// Used with dynamically provisioned Quobyte volumes, value is set by the plugin | |
// +optional | |
Tenant string `json:"tenant,omitempty" protobuf:"bytes,6,opt,name=tenant"` | |
} | |
// FlexPersistentVolumeSource represents a generic persistent volume resource that is | |
// provisioned/attached using an exec based plugin. | |
type FlexPersistentVolumeSource struct { | |
// driver is the name of the driver to use for this volume. | |
Driver string `json:"driver" protobuf:"bytes,1,opt,name=driver"` | |
// fsType is the 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. | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// secretRef is 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. | |
// +optional | |
SecretRef *SecretReference `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` | |
// readOnly is Optional: defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
// options is Optional: this field holds extra command options if any. | |
// +optional | |
Options map[string]string `json:"options,omitempty" protobuf:"bytes,5,rep,name=options"` | |
} | |
// FlexVolume represents a generic volume resource that is | |
// provisioned/attached using an exec based plugin. | |
type FlexVolumeSource struct { | |
// driver is the name of the driver to use for this volume. | |
Driver string `json:"driver" protobuf:"bytes,1,opt,name=driver"` | |
// fsType is the 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. | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// secretRef is 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. | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,3,opt,name=secretRef"` | |
// readOnly is Optional: defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
// options is Optional: this field holds extra command options if any. | |
// +optional | |
Options map[string]string `json:"options,omitempty" protobuf:"bytes,5,rep,name=options"` | |
} | |
// 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. An AWS EBS disk | |
// can only be mounted as read/write once. AWS EBS volumes support | |
// ownership management and SELinux relabeling. | |
type AWSElasticBlockStoreVolumeSource struct { | |
// volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore | |
VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` | |
// fsType is the filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// partition is the partition in the volume that you want to mount. | |
// If omitted, the default is to mount by volume name. | |
// Examples: For volume /dev/sda1, you specify the partition as "1". | |
// Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). | |
// +optional | |
Partition int32 `json:"partition,omitempty" protobuf:"varint,3,opt,name=partition"` | |
// readOnly value true will force the readOnly setting in VolumeMounts. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
} | |
// 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. | |
// | |
// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an | |
// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir | |
// into the Pod's container. | |
type GitRepoVolumeSource struct { | |
// repository is the URL | |
Repository string `json:"repository" protobuf:"bytes,1,opt,name=repository"` | |
// revision is the commit hash for the specified revision. | |
// +optional | |
Revision string `json:"revision,omitempty" protobuf:"bytes,2,opt,name=revision"` | |
// directory is the target directory name. | |
// 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. | |
// +optional | |
Directory string `json:"directory,omitempty" protobuf:"bytes,3,opt,name=directory"` | |
} | |
// 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 { | |
// secretName is the name of the secret in the pod's namespace to use. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret | |
// +optional | |
SecretName string `json:"secretName,omitempty" protobuf:"bytes,1,opt,name=secretName"` | |
// items 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 unless it is marked optional. Paths must be | |
// relative and may not contain the '..' path or start with '..'. | |
// +optional | |
Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` | |
// defaultMode is Optional: mode bits used to set permissions on created files by default. | |
// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. | |
// YAML accepts both octal and decimal values, JSON requires decimal values | |
// for mode bits. Defaults to 0644. | |
// Directories within the path are not affected by this setting. | |
// This might be in conflict with other options that affect the file | |
// mode, like fsGroup, and the result can be other mode bits set. | |
// +optional | |
DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"bytes,3,opt,name=defaultMode"` | |
// optional field specify whether the Secret or its keys must be defined | |
// +optional | |
Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` | |
} | |
const ( | |
SecretVolumeSourceDefaultMode int32 = 0644 | |
) | |
// Adapts a secret into a projected volume. | |
// | |
// The contents of the target Secret's Data field will be presented in a | |
// projected volume as files using the keys in the Data field as the file names. | |
// Note that this is identical to a secret volume source without the default | |
// mode. | |
type SecretProjection struct { | |
LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` | |
// items 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 unless it is marked optional. Paths must be | |
// relative and may not contain the '..' path or start with '..'. | |
// +optional | |
Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` | |
// optional field specify whether the Secret or its key must be defined | |
// +optional | |
Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` | |
} | |
// 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. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | |
Server string `json:"server" protobuf:"bytes,1,opt,name=server"` | |
// path that is exported by the NFS server. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | |
Path string `json:"path" protobuf:"bytes,2,opt,name=path"` | |
// readOnly here will force the NFS export to be mounted with read-only permissions. | |
// Defaults to false. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
} | |
// 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 { | |
// targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port | |
// is other than default (typically TCP ports 860 and 3260). | |
TargetPortal string `json:"targetPortal" protobuf:"bytes,1,opt,name=targetPortal"` | |
// iqn is the target iSCSI Qualified Name. | |
IQN string `json:"iqn" protobuf:"bytes,2,opt,name=iqn"` | |
// lun represents iSCSI Target Lun number. | |
Lun int32 `json:"lun" protobuf:"varint,3,opt,name=lun"` | |
// iscsiInterface is the interface Name that uses an iSCSI transport. | |
// Defaults to 'default' (tcp). | |
// +optional | |
ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"` | |
// fsType is the filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,5,opt,name=fsType"` | |
// readOnly here will force the ReadOnly setting in VolumeMounts. | |
// Defaults to false. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` | |
// portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port | |
// is other than default (typically TCP ports 860 and 3260). | |
// +optional | |
Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"` | |
// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication | |
// +optional | |
DiscoveryCHAPAuth bool `json:"chapAuthDiscovery,omitempty" protobuf:"varint,8,opt,name=chapAuthDiscovery"` | |
// chapAuthSession defines whether support iSCSI Session CHAP authentication | |
// +optional | |
SessionCHAPAuth bool `json:"chapAuthSession,omitempty" protobuf:"varint,11,opt,name=chapAuthSession"` | |
// secretRef is the CHAP Secret for iSCSI target and initiator authentication | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,10,opt,name=secretRef"` | |
// initiatorName is the custom iSCSI Initiator Name. | |
// If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface | |
// <target portal>:<volume name> will be created for the connection. | |
// +optional | |
InitiatorName *string `json:"initiatorName,omitempty" protobuf:"bytes,12,opt,name=initiatorName"` | |
} | |
// ISCSIPersistentVolumeSource represents an ISCSI disk. | |
// ISCSI volumes can only be mounted as read/write once. | |
// ISCSI volumes support ownership management and SELinux relabeling. | |
type ISCSIPersistentVolumeSource struct { | |
// targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port | |
// is other than default (typically TCP ports 860 and 3260). | |
TargetPortal string `json:"targetPortal" protobuf:"bytes,1,opt,name=targetPortal"` | |
// iqn is Target iSCSI Qualified Name. | |
IQN string `json:"iqn" protobuf:"bytes,2,opt,name=iqn"` | |
// lun is iSCSI Target Lun number. | |
Lun int32 `json:"lun" protobuf:"varint,3,opt,name=lun"` | |
// iscsiInterface is the interface Name that uses an iSCSI transport. | |
// Defaults to 'default' (tcp). | |
// +optional | |
ISCSIInterface string `json:"iscsiInterface,omitempty" protobuf:"bytes,4,opt,name=iscsiInterface"` | |
// fsType is the filesystem type of the volume that you want to mount. | |
// Tip: Ensure that the filesystem type is supported by the host operating system. | |
// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. | |
// More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi | |
// TODO: how do we prevent errors in the filesystem from compromising the machine | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,5,opt,name=fsType"` | |
// readOnly here will force the ReadOnly setting in VolumeMounts. | |
// Defaults to false. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,6,opt,name=readOnly"` | |
// portals is the iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port | |
// is other than default (typically TCP ports 860 and 3260). | |
// +optional | |
Portals []string `json:"portals,omitempty" protobuf:"bytes,7,opt,name=portals"` | |
// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication | |
// +optional | |
DiscoveryCHAPAuth bool `json:"chapAuthDiscovery,omitempty" protobuf:"varint,8,opt,name=chapAuthDiscovery"` | |
// chapAuthSession defines whether support iSCSI Session CHAP authentication | |
// +optional | |
SessionCHAPAuth bool `json:"chapAuthSession,omitempty" protobuf:"varint,11,opt,name=chapAuthSession"` | |
// secretRef is the CHAP Secret for iSCSI target and initiator authentication | |
// +optional | |
SecretRef *SecretReference `json:"secretRef,omitempty" protobuf:"bytes,10,opt,name=secretRef"` | |
// initiatorName is the custom iSCSI Initiator Name. | |
// If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface | |
// <target portal>:<volume name> will be created for the connection. | |
// +optional | |
InitiatorName *string `json:"initiatorName,omitempty" protobuf:"bytes,12,opt,name=initiatorName"` | |
} | |
// 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 { | |
// targetWWNs is Optional: FC target worldwide names (WWNs) | |
// +optional | |
TargetWWNs []string `json:"targetWWNs,omitempty" protobuf:"bytes,1,rep,name=targetWWNs"` | |
// lun is Optional: FC target lun number | |
// +optional | |
Lun *int32 `json:"lun,omitempty" protobuf:"varint,2,opt,name=lun"` | |
// fsType is the 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 | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` | |
// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
// wwids Optional: FC volume world wide identifiers (wwids) | |
// Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. | |
// +optional | |
WWIDs []string `json:"wwids,omitempty" protobuf:"bytes,5,rep,name=wwids"` | |
} | |
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. | |
type AzureFileVolumeSource struct { | |
// secretName is the name of secret that contains Azure Storage Account Name and Key | |
SecretName string `json:"secretName" protobuf:"bytes,1,opt,name=secretName"` | |
// shareName is the azure share Name | |
ShareName string `json:"shareName" protobuf:"bytes,2,opt,name=shareName"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
} | |
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod. | |
type AzureFilePersistentVolumeSource struct { | |
// secretName is the name of secret that contains Azure Storage Account Name and Key | |
SecretName string `json:"secretName" protobuf:"bytes,1,opt,name=secretName"` | |
// shareName is the azure Share Name | |
ShareName string `json:"shareName" protobuf:"bytes,2,opt,name=shareName"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
// secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key | |
// default is the same as the Pod | |
// +optional | |
SecretNamespace *string `json:"secretNamespace" protobuf:"bytes,4,opt,name=secretNamespace"` | |
} | |
// Represents a vSphere volume resource. | |
type VsphereVirtualDiskVolumeSource struct { | |
// volumePath is the path that identifies vSphere volume vmdk | |
VolumePath string `json:"volumePath" protobuf:"bytes,1,opt,name=volumePath"` | |
// fsType is 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. | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// storagePolicyName is the storage Policy Based Management (SPBM) profile name. | |
// +optional | |
StoragePolicyName string `json:"storagePolicyName,omitempty" protobuf:"bytes,3,opt,name=storagePolicyName"` | |
// storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. | |
// +optional | |
StoragePolicyID string `json:"storagePolicyID,omitempty" protobuf:"bytes,4,opt,name=storagePolicyID"` | |
} | |
// Represents a Photon Controller persistent disk resource. | |
type PhotonPersistentDiskVolumeSource struct { | |
// pdID is the ID that identifies Photon Controller persistent disk | |
PdID string `json:"pdID" protobuf:"bytes,1,opt,name=pdID"` | |
// fsType is the 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" protobuf:"bytes,2,opt,name=fsType"` | |
} | |
// +enum | |
type AzureDataDiskCachingMode string | |
// +enum | |
type AzureDataDiskKind string | |
const ( | |
AzureDataDiskCachingNone AzureDataDiskCachingMode = "None" | |
AzureDataDiskCachingReadOnly AzureDataDiskCachingMode = "ReadOnly" | |
AzureDataDiskCachingReadWrite AzureDataDiskCachingMode = "ReadWrite" | |
AzureSharedBlobDisk AzureDataDiskKind = "Shared" | |
AzureDedicatedBlobDisk AzureDataDiskKind = "Dedicated" | |
AzureManagedDisk AzureDataDiskKind = "Managed" | |
) | |
// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. | |
type AzureDiskVolumeSource struct { | |
// diskName is the Name of the data disk in the blob storage | |
DiskName string `json:"diskName" protobuf:"bytes,1,opt,name=diskName"` | |
// diskURI is the URI of data disk in the blob storage | |
DataDiskURI string `json:"diskURI" protobuf:"bytes,2,opt,name=diskURI"` | |
// cachingMode is the Host Caching mode: None, Read Only, Read Write. | |
// +optional | |
CachingMode *AzureDataDiskCachingMode `json:"cachingMode,omitempty" protobuf:"bytes,3,opt,name=cachingMode,casttype=AzureDataDiskCachingMode"` | |
// fsType is 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. | |
// +optional | |
FSType *string `json:"fsType,omitempty" protobuf:"bytes,4,opt,name=fsType"` | |
// readOnly Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly *bool `json:"readOnly,omitempty" protobuf:"varint,5,opt,name=readOnly"` | |
// kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared | |
Kind *AzureDataDiskKind `json:"kind,omitempty" protobuf:"bytes,6,opt,name=kind,casttype=AzureDataDiskKind"` | |
} | |
// PortworxVolumeSource represents a Portworx volume resource. | |
type PortworxVolumeSource struct { | |
// volumeID uniquely identifies a Portworx volume | |
VolumeID string `json:"volumeID" protobuf:"bytes,1,opt,name=volumeID"` | |
// fSType represents the filesystem type to mount | |
// Must be a filesystem type supported by the host operating system. | |
// Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,2,opt,name=fsType"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,3,opt,name=readOnly"` | |
} | |
// ScaleIOVolumeSource represents a persistent ScaleIO volume | |
type ScaleIOVolumeSource struct { | |
// gateway is the host address of the ScaleIO API Gateway. | |
Gateway string `json:"gateway" protobuf:"bytes,1,opt,name=gateway"` | |
// system is the name of the storage system as configured in ScaleIO. | |
System string `json:"system" protobuf:"bytes,2,opt,name=system"` | |
// secretRef references to the secret for ScaleIO user and other | |
// sensitive information. If this is not provided, Login operation will fail. | |
SecretRef *LocalObjectReference `json:"secretRef" protobuf:"bytes,3,opt,name=secretRef"` | |
// sslEnabled Flag enable/disable SSL communication with Gateway, default false | |
// +optional | |
SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` | |
// protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. | |
// +optional | |
ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` | |
// storagePool is the ScaleIO Storage Pool associated with the protection domain. | |
// +optional | |
StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` | |
// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. | |
// Default is ThinProvisioned. | |
// +optional | |
StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` | |
// volumeName is the name of a volume already created in the ScaleIO system | |
// that is associated with this volume source. | |
VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` | |
// fsType is the filesystem type to mount. | |
// Must be a filesystem type supported by the host operating system. | |
// Ex. "ext4", "xfs", "ntfs". | |
// Default is "xfs". | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` | |
// readOnly Defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,10,opt,name=readOnly"` | |
} | |
// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume | |
type ScaleIOPersistentVolumeSource struct { | |
// gateway is the host address of the ScaleIO API Gateway. | |
Gateway string `json:"gateway" protobuf:"bytes,1,opt,name=gateway"` | |
// system is the name of the storage system as configured in ScaleIO. | |
System string `json:"system" protobuf:"bytes,2,opt,name=system"` | |
// secretRef references to the secret for ScaleIO user and other | |
// sensitive information. If this is not provided, Login operation will fail. | |
SecretRef *SecretReference `json:"secretRef" protobuf:"bytes,3,opt,name=secretRef"` | |
// sslEnabled is the flag to enable/disable SSL communication with Gateway, default false | |
// +optional | |
SSLEnabled bool `json:"sslEnabled,omitempty" protobuf:"varint,4,opt,name=sslEnabled"` | |
// protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. | |
// +optional | |
ProtectionDomain string `json:"protectionDomain,omitempty" protobuf:"bytes,5,opt,name=protectionDomain"` | |
// storagePool is the ScaleIO Storage Pool associated with the protection domain. | |
// +optional | |
StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` | |
// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. | |
// Default is ThinProvisioned. | |
// +optional | |
StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` | |
// volumeName is the name of a volume already created in the ScaleIO system | |
// that is associated with this volume source. | |
VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` | |
// fsType is the filesystem type to mount. | |
// Must be a filesystem type supported by the host operating system. | |
// Ex. "ext4", "xfs", "ntfs". | |
// Default is "xfs" | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,10,opt,name=readOnly"` | |
} | |
// Represents a StorageOS persistent volume resource. | |
type StorageOSVolumeSource struct { | |
// volumeName is the human-readable name of the StorageOS volume. Volume | |
// names are only unique within a namespace. | |
VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` | |
// volumeNamespace specifies the scope of the volume within StorageOS. If no | |
// namespace is specified then the Pod's namespace will be used. This allows the | |
// Kubernetes name scoping to be mirrored within StorageOS for tighter integration. | |
// Set VolumeName to any name to override the default behaviour. | |
// Set to "default" if you are not using namespaces within StorageOS. | |
// Namespaces that do not pre-exist within StorageOS will be created. | |
// +optional | |
VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` | |
// fsType is the 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. | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
// secretRef specifies the secret to use for obtaining the StorageOS API | |
// credentials. If not specified, default values will be attempted. | |
// +optional | |
SecretRef *LocalObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` | |
} | |
// Represents a StorageOS persistent volume resource. | |
type StorageOSPersistentVolumeSource struct { | |
// volumeName is the human-readable name of the StorageOS volume. Volume | |
// names are only unique within a namespace. | |
VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,1,opt,name=volumeName"` | |
// volumeNamespace specifies the scope of the volume within StorageOS. If no | |
// namespace is specified then the Pod's namespace will be used. This allows the | |
// Kubernetes name scoping to be mirrored within StorageOS for tighter integration. | |
// Set VolumeName to any name to override the default behaviour. | |
// Set to "default" if you are not using namespaces within StorageOS. | |
// Namespaces that do not pre-exist within StorageOS will be created. | |
// +optional | |
VolumeNamespace string `json:"volumeNamespace,omitempty" protobuf:"bytes,2,opt,name=volumeNamespace"` | |
// fsType is the 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. | |
// +optional | |
FSType string `json:"fsType,omitempty" protobuf:"bytes,3,opt,name=fsType"` | |
// readOnly defaults to false (read/write). ReadOnly here will force | |
// the ReadOnly setting in VolumeMounts. | |
// +optional | |
ReadOnly bool `json:"readOnly,omitempty" protobuf:"varint,4,opt,name=readOnly"` | |
// secretRef specifies the secret to use for obtaining the StorageOS API | |
// credentials. If not specified, default values will be attempted. | |
// +optional | |
SecretRef *ObjectReference `json:"secretRef,omitempty" protobuf:"bytes,5,opt,name=secretRef"` | |
} | |
// 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" protobuf:"bytes,1,opt,name=localObjectReference"` | |
// items 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 unless it is marked optional. Paths must be | |
// relative and may not contain the '..' path or start with '..'. | |
// +optional | |
Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` | |
// defaultMode is optional: mode bits used to set permissions on created files by default. | |
// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. | |
// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. | |
// Defaults to 0644. | |
// Directories within the path are not affected by this setting. | |
// This might be in conflict with other options that affect the file | |
// mode, like fsGroup, and the result can be other mode bits set. | |
// +optional | |
DefaultMode *int32 `json:"defaultMode,omitempty" protobuf:"varint,3,opt,name=defaultMode"` | |
// optional specify whether the ConfigMap or its keys must be defined | |
// +optional | |
Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` | |
} | |
const ( | |
ConfigMapVolumeSourceDefaultMode int32 = 0644 | |
) | |
// Adapts a ConfigMap into a projected volume. | |
// | |
// The contents of the target ConfigMap's Data field will be presented in a | |
// projected 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. | |
// Note that this is identical to a configmap volume source without the default | |
// mode. | |
type ConfigMapProjection struct { | |
LocalObjectReference `json:",inline" protobuf:"bytes,1,opt,name=localObjectReference"` | |
// items 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 unless it is marked optional. Paths must be | |
// relative and may not contain the '..' path or start with '..'. | |
// +optional | |
Items []KeyToPath `json:"items,omitempty" protobuf:"bytes,2,rep,name=items"` | |
// optional specify whether the ConfigMap or its keys must be defined | |
// +optional | |
Optional *bool `json:"optional,omitempty" protobuf:"varint,4,opt,name=optional"` | |
} | |
// ServiceAccountTokenProjection represents a projected service account token | |
// volume. This projection can be used to insert a service account token into | |
// the pods runtime filesystem for use against APIs (Kubernetes API Server or | |
// otherwise). | |
type ServiceAccountTokenProjection struct { | |
// audience is the intended audience of the token. A recipient of a token | |
// must identify itself with an identifier specified in the audience of the | |
// token, and otherwise should reject the token. The audience defaults to the | |
// identifier of the apiserver. | |
//+optional | |
Audience string `json:"audience,omitempty" protobuf:"bytes,1,rep,name=audience"` | |
// expirationSeconds is the requested duration of validity of the service | |
// account token. As the token approaches expiration, the kubelet volume | |
// plugin will proactively rotate the service account token. The kubelet will | |
// start trying to rotate the token if the token is older than 80 percent of | |
// its time to live or if the token is older than 24 hours.Defaults to 1 hour | |
// and must be at least 10 minutes. | |
//+optional | |
ExpirationSeconds *int64 `json:"expirationSeconds,omitempty" protobuf:"varint,2,opt,name=expirationSeconds"` | |
// path is the path relative to the mount point of the file to project the | |
// token into. | |
Path string `json:"path" protobuf:"bytes,3,opt,name=path"` | |
} | |