blob: da9047c9ef64ee1c0a2a737ea9bcde597169f564 [file] [log] [blame]
// Code generated by cue get go. DO NOT EDIT.
//cue:generate cue get go k8s.io/api/core/v1
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"
)
// NamespaceDefault means the object is in the default namespace which is applied when not specified by clients
NamespaceDefault :: "default"
// NamespaceAll is the default argument to specify on a context when you want to list or filter resources across all namespaces
NamespaceAll :: ""
// NamespaceNodeLease is the namespace where we place node lease objects (used for node heartbeats)
NamespaceNodeLease :: "kube-node-lease"
// Volume represents a named volume in a pod that may be accessed by any container in the pod.
Volume :: {
// Volume's name.
// 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 @go(Name) @protobuf(1,bytes,opt)
VolumeSource
}
// Represents the source of a volume to mount.
// Only one of its members may be specified.
VolumeSource :: {
// 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?: null | HostPathVolumeSource @go(HostPath,*HostPathVolumeSource) @protobuf(1,bytes,opt)
// EmptyDir represents a temporary directory that shares a pod's lifetime.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
// +optional
emptyDir?: null | EmptyDirVolumeSource @go(EmptyDir,*EmptyDirVolumeSource) @protobuf(2,bytes,opt)
// 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?: null | GCEPersistentDiskVolumeSource @go(GCEPersistentDisk,*GCEPersistentDiskVolumeSource) @protobuf(3,bytes,opt)
// 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?: null | AWSElasticBlockStoreVolumeSource @go(AWSElasticBlockStore,*AWSElasticBlockStoreVolumeSource) @protobuf(4,bytes,opt)
// 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?: null | GitRepoVolumeSource @go(GitRepo,*GitRepoVolumeSource) @protobuf(5,bytes,opt)
// Secret represents a secret that should populate this volume.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
// +optional
secret?: null | SecretVolumeSource @go(Secret,*SecretVolumeSource) @protobuf(6,bytes,opt)
// 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?: null | NFSVolumeSource @go(NFS,*NFSVolumeSource) @protobuf(7,bytes,opt)
// 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?: null | ISCSIVolumeSource @go(ISCSI,*ISCSIVolumeSource) @protobuf(8,bytes,opt)
// 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?: null | GlusterfsVolumeSource @go(Glusterfs,*GlusterfsVolumeSource) @protobuf(9,bytes,opt)
// PersistentVolumeClaimVolumeSource represents a reference to a
// PersistentVolumeClaim in the same namespace.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
// +optional
persistentVolumeClaim?: null | PersistentVolumeClaimVolumeSource @go(PersistentVolumeClaim,*PersistentVolumeClaimVolumeSource) @protobuf(10,bytes,opt)
// 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?: null | RBDVolumeSource @go(RBD,*RBDVolumeSource) @protobuf(11,bytes,opt)
// FlexVolume represents a generic volume resource that is
// provisioned/attached using an exec based plugin.
// +optional
flexVolume?: null | FlexVolumeSource @go(FlexVolume,*FlexVolumeSource) @protobuf(12,bytes,opt)
// 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?: null | CinderVolumeSource @go(Cinder,*CinderVolumeSource) @protobuf(13,bytes,opt)
// CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
// +optional
cephfs?: null | CephFSVolumeSource @go(CephFS,*CephFSVolumeSource) @protobuf(14,bytes,opt)
// Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
// +optional
flocker?: null | FlockerVolumeSource @go(Flocker,*FlockerVolumeSource) @protobuf(15,bytes,opt)
// DownwardAPI represents downward API about the pod that should populate this volume
// +optional
downwardAPI?: null | DownwardAPIVolumeSource @go(DownwardAPI,*DownwardAPIVolumeSource) @protobuf(16,bytes,opt)
// FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
// +optional
fc?: null | FCVolumeSource @go(FC,*FCVolumeSource) @protobuf(17,bytes,opt)
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
// +optional
azureFile?: null | AzureFileVolumeSource @go(AzureFile,*AzureFileVolumeSource) @protobuf(18,bytes,opt)
// ConfigMap represents a configMap that should populate this volume
// +optional
configMap?: null | ConfigMapVolumeSource @go(ConfigMap,*ConfigMapVolumeSource) @protobuf(19,bytes,opt)
// VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
// +optional
vsphereVolume?: null | VsphereVirtualDiskVolumeSource @go(VsphereVolume,*VsphereVirtualDiskVolumeSource) @protobuf(20,bytes,opt)
// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
// +optional
quobyte?: null | QuobyteVolumeSource @go(Quobyte,*QuobyteVolumeSource) @protobuf(21,bytes,opt)
// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
// +optional
azureDisk?: null | AzureDiskVolumeSource @go(AzureDisk,*AzureDiskVolumeSource) @protobuf(22,bytes,opt)
// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
photonPersistentDisk?: null | PhotonPersistentDiskVolumeSource @go(PhotonPersistentDisk,*PhotonPersistentDiskVolumeSource) @protobuf(23,bytes,opt)
// Items for all in one resources secrets, configmaps, and downward API
projected?: null | ProjectedVolumeSource @go(Projected,*ProjectedVolumeSource) @protobuf(26,bytes,opt)
// PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
// +optional
portworxVolume?: null | PortworxVolumeSource @go(PortworxVolume,*PortworxVolumeSource) @protobuf(24,bytes,opt)
// ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
// +optional
scaleIO?: null | ScaleIOVolumeSource @go(ScaleIO,*ScaleIOVolumeSource) @protobuf(25,bytes,opt)
// StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
// +optional
storageos?: null | StorageOSVolumeSource @go(StorageOS,*StorageOSVolumeSource) @protobuf(27,bytes,opt)
// CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature).
// +optional
csi?: null | CSIVolumeSource @go(CSI,*CSIVolumeSource) @protobuf(28,bytes,opt)
}
// 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).
PersistentVolumeClaimVolumeSource :: {
// 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 @go(ClaimName) @protobuf(1,bytes,opt)
// Will force the ReadOnly setting in VolumeMounts.
// Default false.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(2,varint,opt)
}
// PersistentVolumeSource is similar to VolumeSource but meant for the
// administrator who creates PVs. Exactly one of its members must be set.
PersistentVolumeSource :: {
// 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?: null | GCEPersistentDiskVolumeSource @go(GCEPersistentDisk,*GCEPersistentDiskVolumeSource) @protobuf(1,bytes,opt)
// 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?: null | AWSElasticBlockStoreVolumeSource @go(AWSElasticBlockStore,*AWSElasticBlockStoreVolumeSource) @protobuf(2,bytes,opt)
// 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?: null | HostPathVolumeSource @go(HostPath,*HostPathVolumeSource) @protobuf(3,bytes,opt)
// 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?: null | GlusterfsPersistentVolumeSource @go(Glusterfs,*GlusterfsPersistentVolumeSource) @protobuf(4,bytes,opt)
// NFS represents an NFS mount on the host. Provisioned by an admin.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
// +optional
nfs?: null | NFSVolumeSource @go(NFS,*NFSVolumeSource) @protobuf(5,bytes,opt)
// 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?: null | RBDPersistentVolumeSource @go(RBD,*RBDPersistentVolumeSource) @protobuf(6,bytes,opt)
// 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?: null | ISCSIPersistentVolumeSource @go(ISCSI,*ISCSIPersistentVolumeSource) @protobuf(7,bytes,opt)
// 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?: null | CinderPersistentVolumeSource @go(Cinder,*CinderPersistentVolumeSource) @protobuf(8,bytes,opt)
// CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
// +optional
cephfs?: null | CephFSPersistentVolumeSource @go(CephFS,*CephFSPersistentVolumeSource) @protobuf(9,bytes,opt)
// FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
// +optional
fc?: null | FCVolumeSource @go(FC,*FCVolumeSource) @protobuf(10,bytes,opt)
// 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?: null | FlockerVolumeSource @go(Flocker,*FlockerVolumeSource) @protobuf(11,bytes,opt)
// FlexVolume represents a generic volume resource that is
// provisioned/attached using an exec based plugin.
// +optional
flexVolume?: null | FlexPersistentVolumeSource @go(FlexVolume,*FlexPersistentVolumeSource) @protobuf(12,bytes,opt)
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
// +optional
azureFile?: null | AzureFilePersistentVolumeSource @go(AzureFile,*AzureFilePersistentVolumeSource) @protobuf(13,bytes,opt)
// VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
// +optional
vsphereVolume?: null | VsphereVirtualDiskVolumeSource @go(VsphereVolume,*VsphereVirtualDiskVolumeSource) @protobuf(14,bytes,opt)
// Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
// +optional
quobyte?: null | QuobyteVolumeSource @go(Quobyte,*QuobyteVolumeSource) @protobuf(15,bytes,opt)
// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
// +optional
azureDisk?: null | AzureDiskVolumeSource @go(AzureDisk,*AzureDiskVolumeSource) @protobuf(16,bytes,opt)
// PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
photonPersistentDisk?: null | PhotonPersistentDiskVolumeSource @go(PhotonPersistentDisk,*PhotonPersistentDiskVolumeSource) @protobuf(17,bytes,opt)
// PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
// +optional
portworxVolume?: null | PortworxVolumeSource @go(PortworxVolume,*PortworxVolumeSource) @protobuf(18,bytes,opt)
// ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
// +optional
scaleIO?: null | ScaleIOPersistentVolumeSource @go(ScaleIO,*ScaleIOPersistentVolumeSource) @protobuf(19,bytes,opt)
// Local represents directly-attached storage with node affinity
// +optional
local?: null | LocalVolumeSource @go(Local,*LocalVolumeSource) @protobuf(20,bytes,opt)
// 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?: null | StorageOSPersistentVolumeSource @go(StorageOS,*StorageOSPersistentVolumeSource) @protobuf(21,bytes,opt)
// CSI represents storage that is handled by an external CSI driver (Beta feature).
// +optional
csi?: null | CSIPersistentVolumeSource @go(CSI,*CSIPersistentVolumeSource) @protobuf(22,bytes,opt)
}
// 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"
// 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
PersistentVolume :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// 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 @go(Spec) @protobuf(2,bytes,opt)
// 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 @go(Status) @protobuf(3,bytes,opt)
}
// PersistentVolumeSpec is the specification of a persistent volume.
PersistentVolumeSpec :: {
// A description of the persistent volume's resources and capacity.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
// +optional
capacity?: ResourceList @go(Capacity) @protobuf(1,bytes,rep,casttype=ResourceList,castkey=ResourceName)
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] @go(AccessModes,[]PersistentVolumeAccessMode) @protobuf(3,bytes,rep,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?: null | ObjectReference @go(ClaimRef,*ObjectReference) @protobuf(4,bytes,opt)
// 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 @go(PersistentVolumeReclaimPolicy) @protobuf(5,bytes,opt,casttype=PersistentVolumeReclaimPolicy)
// Name of StorageClass to which this persistent volume belongs. Empty value
// means that this volume does not belong to any StorageClass.
// +optional
storageClassName?: string @go(StorageClassName) @protobuf(6,bytes,opt)
// A 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] @go(MountOptions,[]string) @protobuf(7,bytes,opt)
// 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.
// This is a beta feature.
// +optional
volumeMode?: null | PersistentVolumeMode @go(VolumeMode,*PersistentVolumeMode) @protobuf(8,bytes,opt,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?: null | VolumeNodeAffinity @go(NodeAffinity,*VolumeNodeAffinity) @protobuf(9,bytes,opt)
}
// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
VolumeNodeAffinity :: {
// Required specifies hard node constraints that must be met.
required?: null | NodeSelector @go(Required,*NodeSelector) @protobuf(1,bytes,opt)
}
// PersistentVolumeReclaimPolicy describes a policy for end-of-life maintenance of persistent volumes.
PersistentVolumeReclaimPolicy :: string // enumPersistentVolumeReclaimPolicy
enumPersistentVolumeReclaimPolicy ::
PersistentVolumeReclaimRecycle |
PersistentVolumeReclaimDelete |
PersistentVolumeReclaimRetain
// 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.
PersistentVolumeMode :: string // enumPersistentVolumeMode
enumPersistentVolumeMode ::
PersistentVolumeBlock |
PersistentVolumeFilesystem
// 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.
PersistentVolumeStatus :: {
// 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 @go(Phase) @protobuf(1,bytes,opt,casttype=PersistentVolumePhase)
// A human-readable message indicating details about why the volume is in this state.
// +optional
message?: string @go(Message) @protobuf(2,bytes,opt)
// 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 @go(Reason) @protobuf(3,bytes,opt)
}
// PersistentVolumeList is a list of PersistentVolume items.
PersistentVolumeList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of persistent volumes.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
items: [...PersistentVolume] @go(Items,[]PersistentVolume) @protobuf(2,bytes,rep)
}
// PersistentVolumeClaim is a user's request for and claim to a persistent volume
PersistentVolumeClaim :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// 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 @go(Spec) @protobuf(2,bytes,opt)
// 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 @go(Status) @protobuf(3,bytes,opt)
}
// PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
PersistentVolumeClaimList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// A list of persistent volume claims.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
items: [...PersistentVolumeClaim] @go(Items,[]PersistentVolumeClaim) @protobuf(2,bytes,rep)
}
// PersistentVolumeClaimSpec describes the common attributes of storage devices
// and allows a Source for provider-specific attributes
PersistentVolumeClaimSpec :: {
// 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] @go(AccessModes,[]PersistentVolumeAccessMode) @protobuf(1,bytes,rep,casttype=PersistentVolumeAccessMode)
// A label query over volumes to consider for binding.
// +optional
selector?: null | metav1.LabelSelector @go(Selector,*metav1.LabelSelector) @protobuf(4,bytes,opt)
// Resources represents the minimum resources the volume should have.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
// +optional
resources?: ResourceRequirements @go(Resources) @protobuf(2,bytes,opt)
// VolumeName is the binding reference to the PersistentVolume backing this claim.
// +optional
volumeName?: string @go(VolumeName) @protobuf(3,bytes,opt)
// Name of the StorageClass required by the claim.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
// +optional
storageClassName?: null | string @go(StorageClassName,*string) @protobuf(5,bytes,opt)
// volumeMode defines what type of volume is required by the claim.
// Value of Filesystem is implied when not included in claim spec.
// This is a beta feature.
// +optional
volumeMode?: null | PersistentVolumeMode @go(VolumeMode,*PersistentVolumeMode) @protobuf(6,bytes,opt,casttype=PersistentVolumeMode)
// This field requires the VolumeSnapshotDataSource alpha feature gate to be
// enabled and currently VolumeSnapshot is the only supported data source.
// If the provisioner can support VolumeSnapshot data source, it will create
// a new volume and data will be restored to the volume at the same time.
// If the provisioner does not support VolumeSnapshot data source, volume will
// not be created and the failure will be reported as an event.
// In the future, we plan to support more data source types and the behavior
// of the provisioner may change.
// +optional
dataSource?: null | TypedLocalObjectReference @go(DataSource,*TypedLocalObjectReference) @protobuf(7,bytes,opt)
}
// PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
PersistentVolumeClaimConditionType :: string // enumPersistentVolumeClaimConditionType
enumPersistentVolumeClaimConditionType ::
PersistentVolumeClaimResizing |
PersistentVolumeClaimFileSystemResizePending
// 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"
// PersistentVolumeClaimCondition contails details about state of pvc
PersistentVolumeClaimCondition :: {
type: PersistentVolumeClaimConditionType @go(Type) @protobuf(1,bytes,opt,casttype=PersistentVolumeClaimConditionType)
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// Last time we probed the condition.
// +optional
lastProbeTime?: metav1.Time @go(LastProbeTime) @protobuf(3,bytes,opt)
// Last time the condition transitioned from one status to another.
// +optional
lastTransitionTime?: metav1.Time @go(LastTransitionTime) @protobuf(4,bytes,opt)
// 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 @go(Reason) @protobuf(5,bytes,opt)
// Human-readable message indicating details about last transition.
// +optional
message?: string @go(Message) @protobuf(6,bytes,opt)
}
// PersistentVolumeClaimStatus is the current status of a persistent volume claim.
PersistentVolumeClaimStatus :: {
// Phase represents the current phase of PersistentVolumeClaim.
// +optional
phase?: PersistentVolumeClaimPhase @go(Phase) @protobuf(1,bytes,opt,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] @go(AccessModes,[]PersistentVolumeAccessMode) @protobuf(2,bytes,rep,casttype=PersistentVolumeAccessMode)
// Represents the actual resources of the underlying volume.
// +optional
capacity?: ResourceList @go(Capacity) @protobuf(3,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// 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] @go(Conditions,[]PersistentVolumeClaimCondition) @protobuf(4,bytes,rep)
}
PersistentVolumeAccessMode :: string // enumPersistentVolumeAccessMode
enumPersistentVolumeAccessMode ::
ReadWriteOnce |
ReadOnlyMany |
ReadWriteMany
// 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"
PersistentVolumePhase :: string // enumPersistentVolumePhase
enumPersistentVolumePhase ::
VolumePending |
VolumeAvailable |
VolumeBound |
VolumeReleased |
VolumeFailed
// 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"
PersistentVolumeClaimPhase :: string // enumPersistentVolumeClaimPhase
enumPersistentVolumeClaimPhase ::
ClaimPending |
ClaimBound |
ClaimLost
// 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"
HostPathType :: string // enumHostPathType
enumHostPathType ::
HostPathUnset |
HostPathDirectoryOrCreate |
HostPathDirectory |
HostPathFileOrCreate |
HostPathFile |
HostPathSocket |
HostPathCharDev |
HostPathBlockDev
// 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.
HostPathVolumeSource :: {
// 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 @go(Path) @protobuf(1,bytes,opt)
// Type for HostPath Volume
// Defaults to ""
// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
// +optional
type?: null | HostPathType @go(Type,*HostPathType) @protobuf(2,bytes,opt)
}
// Represents an empty directory for a pod.
// Empty directory volumes support ownership management and SELinux relabeling.
EmptyDirVolumeSource :: {
// 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 @go(Medium) @protobuf(1,bytes,opt,casttype=StorageMedium)
// 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?: null | resource.Quantity @go(SizeLimit,*resource.Quantity) @protobuf(2,bytes,opt)
}
// Represents a Glusterfs mount that lasts the lifetime of a pod.
// Glusterfs volumes do not support ownership management or SELinux relabeling.
GlusterfsVolumeSource :: {
// EndpointsName is the endpoint name that details Glusterfs topology.
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
endpoints: string @go(EndpointsName) @protobuf(1,bytes,opt)
// Path is the Glusterfs volume path.
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
path: string @go(Path) @protobuf(2,bytes,opt)
// 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 @go(ReadOnly) @protobuf(3,varint,opt)
}
// Represents a Glusterfs mount that lasts the lifetime of a pod.
// Glusterfs volumes do not support ownership management or SELinux relabeling.
GlusterfsPersistentVolumeSource :: {
// EndpointsName is the endpoint name that details Glusterfs topology.
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
endpoints: string @go(EndpointsName) @protobuf(1,bytes,opt)
// Path is the Glusterfs volume path.
// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
path: string @go(Path) @protobuf(2,bytes,opt)
// 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 @go(ReadOnly) @protobuf(3,varint,opt)
// 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?: null | string @go(EndpointsNamespace,*string) @protobuf(4,bytes,opt)
}
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
// RBD volumes support ownership management and SELinux relabeling.
RBDVolumeSource :: {
// A collection of Ceph monitors.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
monitors: [...string] @go(CephMonitors,[]string) @protobuf(1,bytes,rep)
// The rados image name.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
image: string @go(RBDImage) @protobuf(2,bytes,opt)
// 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 @go(FSType) @protobuf(3,bytes,opt)
// The rados pool name.
// Default is rbd.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
pool?: string @go(RBDPool) @protobuf(4,bytes,opt)
// The rados user name.
// Default is admin.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
user?: string @go(RadosUser) @protobuf(5,bytes,opt)
// 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 @go(Keyring) @protobuf(6,bytes,opt)
// 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?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(7,bytes,opt)
// 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 @go(ReadOnly) @protobuf(8,varint,opt)
}
// Represents a Rados Block Device mount that lasts the lifetime of a pod.
// RBD volumes support ownership management and SELinux relabeling.
RBDPersistentVolumeSource :: {
// A collection of Ceph monitors.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
monitors: [...string] @go(CephMonitors,[]string) @protobuf(1,bytes,rep)
// The rados image name.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
image: string @go(RBDImage) @protobuf(2,bytes,opt)
// 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 @go(FSType) @protobuf(3,bytes,opt)
// The rados pool name.
// Default is rbd.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
pool?: string @go(RBDPool) @protobuf(4,bytes,opt)
// The rados user name.
// Default is admin.
// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
// +optional
user?: string @go(RadosUser) @protobuf(5,bytes,opt)
// 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 @go(Keyring) @protobuf(6,bytes,opt)
// 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?: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(7,bytes,opt)
// 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 @go(ReadOnly) @protobuf(8,varint,opt)
}
// 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.
CinderVolumeSource :: {
// volume id used to identify the volume in cinder.
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md
volumeID: string @go(VolumeID) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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 @go(ReadOnly) @protobuf(3,varint,opt)
// Optional: points to a secret object containing parameters used to connect
// to OpenStack.
// +optional
secretRef?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(4,bytes,opt)
}
// 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.
CinderPersistentVolumeSource :: {
// volume id used to identify the volume in cinder.
// More info: https://examples.k8s.io/mysql-cinder-pd/README.md
volumeID: string @go(VolumeID) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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 @go(ReadOnly) @protobuf(3,varint,opt)
// Optional: points to a secret object containing parameters used to connect
// to OpenStack.
// +optional
secretRef?: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(4,bytes,opt)
}
// Represents a Ceph Filesystem mount that lasts the lifetime of a pod
// Cephfs volumes do not support ownership management or SELinux relabeling.
CephFSVolumeSource :: {
// Required: Monitors is a collection of Ceph monitors
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
monitors: [...string] @go(Monitors,[]string) @protobuf(1,bytes,rep)
// Optional: Used as the mounted root, rather than the full Ceph tree, default is /
// +optional
path?: string @go(Path) @protobuf(2,bytes,opt)
// 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 @go(User) @protobuf(3,bytes,opt)
// 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 @go(SecretFile) @protobuf(4,bytes,opt)
// 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?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(5,bytes,opt)
// 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 @go(ReadOnly) @protobuf(6,varint,opt)
}
// SecretReference represents a Secret Reference. It has enough information to retrieve secret
// in any namespace
SecretReference :: {
// Name is unique within a namespace to reference a secret resource.
// +optional
name?: string @go(Name) @protobuf(1,bytes,opt)
// Namespace defines the space within which the secret name must be unique.
// +optional
namespace?: string @go(Namespace) @protobuf(2,bytes,opt)
}
// Represents a Ceph Filesystem mount that lasts the lifetime of a pod
// Cephfs volumes do not support ownership management or SELinux relabeling.
CephFSPersistentVolumeSource :: {
// Required: Monitors is a collection of Ceph monitors
// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
monitors: [...string] @go(Monitors,[]string) @protobuf(1,bytes,rep)
// Optional: Used as the mounted root, rather than the full Ceph tree, default is /
// +optional
path?: string @go(Path) @protobuf(2,bytes,opt)
// 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 @go(User) @protobuf(3,bytes,opt)
// 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 @go(SecretFile) @protobuf(4,bytes,opt)
// 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?: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(5,bytes,opt)
// 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 @go(ReadOnly) @protobuf(6,varint,opt)
}
// 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.
FlockerVolumeSource :: {
// Name of the dataset stored as metadata -> name on the dataset for Flocker
// should be considered as deprecated
// +optional
datasetName?: string @go(DatasetName) @protobuf(1,bytes,opt)
// UUID of the dataset. This is unique identifier of a Flocker dataset
// +optional
datasetUUID?: string @go(DatasetUUID) @protobuf(2,bytes,opt)
}
// StorageMedium defines ways that storage can be allocated to a volume.
StorageMedium :: string // enumStorageMedium
enumStorageMedium ::
StorageMediumDefault |
StorageMediumMemory |
StorageMediumHugePages
StorageMediumDefault :: StorageMedium & ""
StorageMediumMemory :: StorageMedium & "Memory"
StorageMediumHugePages :: StorageMedium & "HugePages"
// Protocol defines network protocols supported for things like container ports.
Protocol :: string // enumProtocol
enumProtocol ::
ProtocolTCP |
ProtocolUDP |
ProtocolSCTP
// 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.
GCEPersistentDiskVolumeSource :: {
// 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 @go(PDName) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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 @go(Partition) @protobuf(3,varint,opt)
// 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 @go(ReadOnly) @protobuf(4,varint,opt)
}
// Represents a Quobyte mount that lasts the lifetime of a pod.
// Quobyte volumes do not support ownership management or SELinux relabeling.
QuobyteVolumeSource :: {
// 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 @go(Registry) @protobuf(1,bytes,opt)
// Volume is a string that references an already created Quobyte volume by name.
volume: string @go(Volume) @protobuf(2,bytes,opt)
// ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.
// Defaults to false.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(3,varint,opt)
// User to map volume access to
// Defaults to serivceaccount user
// +optional
user?: string @go(User) @protobuf(4,bytes,opt)
// Group to map volume access to
// Default is no group
// +optional
group?: string @go(Group) @protobuf(5,bytes,opt)
// Tenant owning the given Quobyte volume in the Backend
// Used with dynamically provisioned Quobyte volumes, value is set by the plugin
// +optional
tenant?: string @go(Tenant) @protobuf(6,bytes,opt)
}
// FlexPersistentVolumeSource represents a generic persistent volume resource that is
// provisioned/attached using an exec based plugin.
FlexPersistentVolumeSource :: {
// Driver is the name of the driver to use for this volume.
driver: string @go(Driver) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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?: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(3,bytes,opt)
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
// Optional: Extra command options if any.
// +optional
options?: {[string]: string} @go(Options,map[string]string) @protobuf(5,bytes,rep)
}
// FlexVolume represents a generic volume resource that is
// provisioned/attached using an exec based plugin.
FlexVolumeSource :: {
// Driver is the name of the driver to use for this volume.
driver: string @go(Driver) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(3,bytes,opt)
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
// Optional: Extra command options if any.
// +optional
options?: {[string]: string} @go(Options,map[string]string) @protobuf(5,bytes,rep)
}
// 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.
AWSElasticBlockStoreVolumeSource :: {
// Unique ID of the persistent disk resource in AWS (Amazon EBS volume).
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
volumeID: string @go(VolumeID) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// 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 @go(Partition) @protobuf(3,varint,opt)
// Specify "true" to force and set the ReadOnly property in VolumeMounts to "true".
// If omitted, the default is "false".
// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
}
// 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.
GitRepoVolumeSource :: {
// Repository URL
repository: string @go(Repository) @protobuf(1,bytes,opt)
// Commit hash for the specified revision.
// +optional
revision?: string @go(Revision) @protobuf(2,bytes,opt)
// 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 @go(Directory) @protobuf(3,bytes,opt)
}
// 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.
SecretVolumeSource :: {
// Name of the secret in the pod's namespace to use.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
// +optional
secretName?: string @go(SecretName) @protobuf(1,bytes,opt)
// 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] @go(Items,[]KeyToPath) @protobuf(2,bytes,rep)
// Optional: mode bits to use on created files by default. Must be a
// value between 0 and 0777. 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?: null | int32 @go(DefaultMode,*int32) @protobuf(3,bytes,opt)
// Specify whether the Secret or its keys must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(4,varint,opt)
}
SecretVolumeSourceDefaultMode :: int32 & 0o644
// 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.
SecretProjection :: {
LocalObjectReference
// 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] @go(Items,[]KeyToPath) @protobuf(2,bytes,rep)
// Specify whether the Secret or its key must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(4,varint,opt)
}
// Represents an NFS mount that lasts the lifetime of a pod.
// NFS volumes do not support ownership management or SELinux relabeling.
NFSVolumeSource :: {
// Server is the hostname or IP address of the NFS server.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
server: string @go(Server) @protobuf(1,bytes,opt)
// Path that is exported by the NFS server.
// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
path: string @go(Path) @protobuf(2,bytes,opt)
// 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 @go(ReadOnly) @protobuf(3,varint,opt)
}
// Represents an ISCSI disk.
// ISCSI volumes can only be mounted as read/write once.
// ISCSI volumes support ownership management and SELinux relabeling.
ISCSIVolumeSource :: {
// 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 @go(TargetPortal) @protobuf(1,bytes,opt)
// Target iSCSI Qualified Name.
iqn: string @go(IQN) @protobuf(2,bytes,opt)
// iSCSI Target Lun number.
lun: int32 @go(Lun) @protobuf(3,varint,opt)
// iSCSI Interface Name that uses an iSCSI transport.
// Defaults to 'default' (tcp).
// +optional
iscsiInterface?: string @go(ISCSIInterface) @protobuf(4,bytes,opt)
// 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 @go(FSType) @protobuf(5,bytes,opt)
// ReadOnly here will force the ReadOnly setting in VolumeMounts.
// Defaults to false.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(6,varint,opt)
// 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] @go(Portals,[]string) @protobuf(7,bytes,opt)
// whether support iSCSI Discovery CHAP authentication
// +optional
chapAuthDiscovery?: bool @go(DiscoveryCHAPAuth) @protobuf(8,varint,opt)
// whether support iSCSI Session CHAP authentication
// +optional
chapAuthSession?: bool @go(SessionCHAPAuth) @protobuf(11,varint,opt)
// CHAP Secret for iSCSI target and initiator authentication
// +optional
secretRef?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(10,bytes,opt)
// 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?: null | string @go(InitiatorName,*string) @protobuf(12,bytes,opt)
}
// ISCSIPersistentVolumeSource represents an ISCSI disk.
// ISCSI volumes can only be mounted as read/write once.
// ISCSI volumes support ownership management and SELinux relabeling.
ISCSIPersistentVolumeSource :: {
// 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 @go(TargetPortal) @protobuf(1,bytes,opt)
// Target iSCSI Qualified Name.
iqn: string @go(IQN) @protobuf(2,bytes,opt)
// iSCSI Target Lun number.
lun: int32 @go(Lun) @protobuf(3,varint,opt)
// iSCSI Interface Name that uses an iSCSI transport.
// Defaults to 'default' (tcp).
// +optional
iscsiInterface?: string @go(ISCSIInterface) @protobuf(4,bytes,opt)
// 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 @go(FSType) @protobuf(5,bytes,opt)
// ReadOnly here will force the ReadOnly setting in VolumeMounts.
// Defaults to false.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(6,varint,opt)
// 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] @go(Portals,[]string) @protobuf(7,bytes,opt)
// whether support iSCSI Discovery CHAP authentication
// +optional
chapAuthDiscovery?: bool @go(DiscoveryCHAPAuth) @protobuf(8,varint,opt)
// whether support iSCSI Session CHAP authentication
// +optional
chapAuthSession?: bool @go(SessionCHAPAuth) @protobuf(11,varint,opt)
// CHAP Secret for iSCSI target and initiator authentication
// +optional
secretRef?: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(10,bytes,opt)
// 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?: null | string @go(InitiatorName,*string) @protobuf(12,bytes,opt)
}
// 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.
FCVolumeSource :: {
// Optional: FC target worldwide names (WWNs)
// +optional
targetWWNs?: [...string] @go(TargetWWNs,[]string) @protobuf(1,bytes,rep)
// Optional: FC target lun number
// +optional
lun?: null | int32 @go(Lun,*int32) @protobuf(2,varint,opt)
// 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 @go(FSType) @protobuf(3,bytes,opt)
// Optional: Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
// 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] @go(WWIDs,[]string) @protobuf(5,bytes,rep)
}
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
AzureFileVolumeSource :: {
// the name of secret that contains Azure Storage Account Name and Key
secretName: string @go(SecretName) @protobuf(1,bytes,opt)
// Share Name
shareName: string @go(ShareName) @protobuf(2,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(3,varint,opt)
}
// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
AzureFilePersistentVolumeSource :: {
// the name of secret that contains Azure Storage Account Name and Key
secretName: string @go(SecretName) @protobuf(1,bytes,opt)
// Share Name
shareName: string @go(ShareName) @protobuf(2,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(3,varint,opt)
// the namespace of the secret that contains Azure Storage Account Name and Key
// default is the same as the Pod
// +optional
secretNamespace: null | string @go(SecretNamespace,*string) @protobuf(4,bytes,opt)
}
// Represents a vSphere volume resource.
VsphereVirtualDiskVolumeSource :: {
// Path that identifies vSphere volume vmdk
volumePath: string @go(VolumePath) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// Storage Policy Based Management (SPBM) profile name.
// +optional
storagePolicyName?: string @go(StoragePolicyName) @protobuf(3,bytes,opt)
// Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
// +optional
storagePolicyID?: string @go(StoragePolicyID) @protobuf(4,bytes,opt)
}
// Represents a Photon Controller persistent disk resource.
PhotonPersistentDiskVolumeSource :: {
// ID that identifies Photon Controller persistent disk
pdID: string @go(PdID) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
}
AzureDataDiskCachingMode :: string // enumAzureDataDiskCachingMode
enumAzureDataDiskCachingMode ::
AzureDataDiskCachingNone |
AzureDataDiskCachingReadOnly |
AzureDataDiskCachingReadWrite
AzureDataDiskKind :: string // enumAzureDataDiskKind
enumAzureDataDiskKind ::
AzureSharedBlobDisk |
AzureDedicatedBlobDisk |
AzureManagedDisk
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.
AzureDiskVolumeSource :: {
// The Name of the data disk in the blob storage
diskName: string @go(DiskName) @protobuf(1,bytes,opt)
// The URI the data disk in the blob storage
diskURI: string @go(DataDiskURI) @protobuf(2,bytes,opt)
// Host Caching mode: None, Read Only, Read Write.
// +optional
cachingMode?: null | AzureDataDiskCachingMode @go(CachingMode,*AzureDataDiskCachingMode) @protobuf(3,bytes,opt,casttype=AzureDataDiskCachingMode)
// 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?: null | string @go(FSType,*string) @protobuf(4,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: null | bool @go(ReadOnly,*bool) @protobuf(5,varint,opt)
// Expected values 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?: null | AzureDataDiskKind @go(Kind,*AzureDataDiskKind) @protobuf(6,bytes,opt,casttype=AzureDataDiskKind)
}
// PortworxVolumeSource represents a Portworx volume resource.
PortworxVolumeSource :: {
// VolumeID uniquely identifies a Portworx volume
volumeID: string @go(VolumeID) @protobuf(1,bytes,opt)
// 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 @go(FSType) @protobuf(2,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(3,varint,opt)
}
// ScaleIOVolumeSource represents a persistent ScaleIO volume
ScaleIOVolumeSource :: {
// The host address of the ScaleIO API Gateway.
gateway: string @go(Gateway) @protobuf(1,bytes,opt)
// The name of the storage system as configured in ScaleIO.
system: string @go(System) @protobuf(2,bytes,opt)
// SecretRef references to the secret for ScaleIO user and other
// sensitive information. If this is not provided, Login operation will fail.
secretRef: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(3,bytes,opt)
// Flag to enable/disable SSL communication with Gateway, default false
// +optional
sslEnabled?: bool @go(SSLEnabled) @protobuf(4,varint,opt)
// The name of the ScaleIO Protection Domain for the configured storage.
// +optional
protectionDomain?: string @go(ProtectionDomain) @protobuf(5,bytes,opt)
// The ScaleIO Storage Pool associated with the protection domain.
// +optional
storagePool?: string @go(StoragePool) @protobuf(6,bytes,opt)
// Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
// Default is ThinProvisioned.
// +optional
storageMode?: string @go(StorageMode) @protobuf(7,bytes,opt)
// The name of a volume already created in the ScaleIO system
// that is associated with this volume source.
volumeName?: string @go(VolumeName) @protobuf(8,bytes,opt)
// 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 @go(FSType) @protobuf(9,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(10,varint,opt)
}
// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume
ScaleIOPersistentVolumeSource :: {
// The host address of the ScaleIO API Gateway.
gateway: string @go(Gateway) @protobuf(1,bytes,opt)
// The name of the storage system as configured in ScaleIO.
system: string @go(System) @protobuf(2,bytes,opt)
// SecretRef references to the secret for ScaleIO user and other
// sensitive information. If this is not provided, Login operation will fail.
secretRef: null | SecretReference @go(SecretRef,*SecretReference) @protobuf(3,bytes,opt)
// Flag to enable/disable SSL communication with Gateway, default false
// +optional
sslEnabled?: bool @go(SSLEnabled) @protobuf(4,varint,opt)
// The name of the ScaleIO Protection Domain for the configured storage.
// +optional
protectionDomain?: string @go(ProtectionDomain) @protobuf(5,bytes,opt)
// The ScaleIO Storage Pool associated with the protection domain.
// +optional
storagePool?: string @go(StoragePool) @protobuf(6,bytes,opt)
// Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
// Default is ThinProvisioned.
// +optional
storageMode?: string @go(StorageMode) @protobuf(7,bytes,opt)
// The name of a volume already created in the ScaleIO system
// that is associated with this volume source.
volumeName?: string @go(VolumeName) @protobuf(8,bytes,opt)
// 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 @go(FSType) @protobuf(9,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(10,varint,opt)
}
// Represents a StorageOS persistent volume resource.
StorageOSVolumeSource :: {
// VolumeName is the human-readable name of the StorageOS volume. Volume
// names are only unique within a namespace.
volumeName?: string @go(VolumeName) @protobuf(1,bytes,opt)
// 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 @go(VolumeNamespace) @protobuf(2,bytes,opt)
// 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 @go(FSType) @protobuf(3,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
// SecretRef specifies the secret to use for obtaining the StorageOS API
// credentials. If not specified, default values will be attempted.
// +optional
secretRef?: null | LocalObjectReference @go(SecretRef,*LocalObjectReference) @protobuf(5,bytes,opt)
}
// Represents a StorageOS persistent volume resource.
StorageOSPersistentVolumeSource :: {
// VolumeName is the human-readable name of the StorageOS volume. Volume
// names are only unique within a namespace.
volumeName?: string @go(VolumeName) @protobuf(1,bytes,opt)
// 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 @go(VolumeNamespace) @protobuf(2,bytes,opt)
// 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 @go(FSType) @protobuf(3,bytes,opt)
// Defaults to false (read/write). ReadOnly here will force
// the ReadOnly setting in VolumeMounts.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(4,varint,opt)
// SecretRef specifies the secret to use for obtaining the StorageOS API
// credentials. If not specified, default values will be attempted.
// +optional
secretRef?: null | ObjectReference @go(SecretRef,*ObjectReference) @protobuf(5,bytes,opt)
}
// 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.
ConfigMapVolumeSource :: {
LocalObjectReference
// 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] @go(Items,[]KeyToPath) @protobuf(2,bytes,rep)
// Optional: mode bits to use on created files by default. Must be a
// value between 0 and 0777. 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?: null | int32 @go(DefaultMode,*int32) @protobuf(3,varint,opt)
// Specify whether the ConfigMap or its keys must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(4,varint,opt)
}
ConfigMapVolumeSourceDefaultMode :: int32 & 0o644
// 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.
ConfigMapProjection :: {
LocalObjectReference
// 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] @go(Items,[]KeyToPath) @protobuf(2,bytes,rep)
// Specify whether the ConfigMap or its keys must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(4,varint,opt)
}
// 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).
ServiceAccountTokenProjection :: {
// 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 @go(Audience) @protobuf(1,bytes,rep)
// 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?: null | int64 @go(ExpirationSeconds,*int64) @protobuf(2,varint,opt)
// Path is the path relative to the mount point of the file to project the
// token into.
path: string @go(Path) @protobuf(3,bytes,opt)
}
// Represents a projected volume source
ProjectedVolumeSource :: {
// list of volume projections
sources: [...VolumeProjection] @go(Sources,[]VolumeProjection) @protobuf(1,bytes,rep)
// Mode bits to use on created files by default. Must be a value between
// 0 and 0777.
// 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?: null | int32 @go(DefaultMode,*int32) @protobuf(2,varint,opt)
}
// Projection that may be projected along with other supported volume types
VolumeProjection :: {
// information about the secret data to project
// +optional
secret?: null | SecretProjection @go(Secret,*SecretProjection) @protobuf(1,bytes,opt)
// information about the downwardAPI data to project
// +optional
downwardAPI?: null | DownwardAPIProjection @go(DownwardAPI,*DownwardAPIProjection) @protobuf(2,bytes,opt)
// information about the configMap data to project
// +optional
configMap?: null | ConfigMapProjection @go(ConfigMap,*ConfigMapProjection) @protobuf(3,bytes,opt)
// information about the serviceAccountToken data to project
// +optional
serviceAccountToken?: null | ServiceAccountTokenProjection @go(ServiceAccountToken,*ServiceAccountTokenProjection) @protobuf(4,bytes,opt)
}
ProjectedVolumeSourceDefaultMode :: int32 & 0o644
// Maps a string key to a path within a volume.
KeyToPath :: {
// The key to project.
key: string @go(Key) @protobuf(1,bytes,opt)
// The relative path of the file to map the key to.
// May not be an absolute path.
// May not contain the path element '..'.
// May not start with the string '..'.
path: string @go(Path) @protobuf(2,bytes,opt)
// Optional: mode bits to use on this file, must be a value between 0
// and 0777. If not specified, the volume defaultMode will be used.
// 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
mode?: null | int32 @go(Mode,*int32) @protobuf(3,varint,opt)
}
// Local represents directly-attached storage with node affinity (Beta feature)
LocalVolumeSource :: {
// The full path to the volume on the node.
// It can be either a directory or block device (disk, partition, ...).
path: string @go(Path) @protobuf(1,bytes,opt)
// Filesystem type to mount.
// It applies only when the Path is a block device.
// Must be a filesystem type supported by the host operating system.
// Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.
// +optional
fsType?: null | string @go(FSType,*string) @protobuf(2,bytes,opt)
}
// Represents storage that is managed by an external CSI volume driver (Beta feature)
CSIPersistentVolumeSource :: {
// Driver is the name of the driver to use for this volume.
// Required.
driver: string @go(Driver) @protobuf(1,bytes,opt)
// VolumeHandle is the unique volume name returned by the CSI volume
// plugin’s CreateVolume to refer to the volume on all subsequent calls.
// Required.
volumeHandle: string @go(VolumeHandle) @protobuf(2,bytes,opt)
// Optional: The value to pass to ControllerPublishVolumeRequest.
// Defaults to false (read/write).
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(3,varint,opt)
// Filesystem type to mount.
// Must be a filesystem type supported by the host operating system.
// Ex. "ext4", "xfs", "ntfs".
// +optional
fsType?: string @go(FSType) @protobuf(4,bytes,opt)
// Attributes of the volume to publish.
// +optional
volumeAttributes?: {[string]: string} @go(VolumeAttributes,map[string]string) @protobuf(5,bytes,rep)
// ControllerPublishSecretRef is a reference to the secret object containing
// sensitive information to pass to the CSI driver to complete the CSI
// ControllerPublishVolume and ControllerUnpublishVolume calls.
// This field is optional, and may be empty if no secret is required. If the
// secret object contains more than one secret, all secrets are passed.
// +optional
controllerPublishSecretRef?: null | SecretReference @go(ControllerPublishSecretRef,*SecretReference) @protobuf(6,bytes,opt)
// NodeStageSecretRef is a reference to the secret object containing sensitive
// information to pass to the CSI driver to complete the CSI NodeStageVolume
// and NodeStageVolume and NodeUnstageVolume calls.
// This field is optional, and may be empty if no secret is required. If the
// secret object contains more than one secret, all secrets are passed.
// +optional
nodeStageSecretRef?: null | SecretReference @go(NodeStageSecretRef,*SecretReference) @protobuf(7,bytes,opt)
// NodePublishSecretRef is a reference to the secret object containing
// sensitive information to pass to the CSI driver to complete the CSI
// NodePublishVolume and NodeUnpublishVolume calls.
// This field is optional, and may be empty if no secret is required. If the
// secret object contains more than one secret, all secrets are passed.
// +optional
nodePublishSecretRef?: null | SecretReference @go(NodePublishSecretRef,*SecretReference) @protobuf(8,bytes,opt)
// ControllerExpandSecretRef is a reference to the secret object containing
// sensitive information to pass to the CSI driver to complete the CSI
// ControllerExpandVolume call.
// This is an alpha field and requires enabling ExpandCSIVolumes feature gate.
// This field is optional, and may be empty if no secret is required. If the
// secret object contains more than one secret, all secrets are passed.
// +optional
controllerExpandSecretRef?: null | SecretReference @go(ControllerExpandSecretRef,*SecretReference) @protobuf(9,bytes,opt)
}
// Represents a source location of a volume to mount, managed by an external CSI driver
CSIVolumeSource :: {
// Driver is the name of the CSI driver that handles this volume.
// Consult with your admin for the correct name as registered in the cluster.
driver: string @go(Driver) @protobuf(1,bytes,opt)
// Specifies a read-only configuration for the volume.
// Defaults to false (read/write).
// +optional
readOnly?: null | bool @go(ReadOnly,*bool) @protobuf(2,varint,opt)
// Filesystem type to mount. Ex. "ext4", "xfs", "ntfs".
// If not provided, the empty value is passed to the associated CSI driver
// which will determine the default filesystem to apply.
// +optional
fsType?: null | string @go(FSType,*string) @protobuf(3,bytes,opt)
// VolumeAttributes stores driver-specific properties that are passed to the CSI
// driver. Consult your driver's documentation for supported values.
// +optional
volumeAttributes?: {[string]: string} @go(VolumeAttributes,map[string]string) @protobuf(4,bytes,rep)
// NodePublishSecretRef is a reference to the secret object containing
// sensitive information to pass to the CSI driver to complete the CSI
// NodePublishVolume and NodeUnpublishVolume calls.
// This field is optional, and may be empty if no secret is required. If the
// secret object contains more than one secret, all secret references are passed.
// +optional
nodePublishSecretRef?: null | LocalObjectReference @go(NodePublishSecretRef,*LocalObjectReference) @protobuf(5,bytes,opt)
}
// ContainerPort represents a network port in a single container.
ContainerPort :: {
// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
// named port in a pod must have a unique name. Name for the port that can be
// referred to by services.
// +optional
name?: string @go(Name) @protobuf(1,bytes,opt)
// Number of port to expose on the host.
// If specified, this must be a valid port number, 0 < x < 65536.
// If HostNetwork is specified, this must match ContainerPort.
// Most containers do not need this.
// +optional
hostPort?: int32 @go(HostPort) @protobuf(2,varint,opt)
// Number of port to expose on the pod's IP address.
// This must be a valid port number, 0 < x < 65536.
containerPort: int32 @go(ContainerPort) @protobuf(3,varint,opt)
// Protocol for port. Must be UDP, TCP, or SCTP.
// Defaults to "TCP".
// +optional
protocol?: Protocol @go(Protocol) @protobuf(4,bytes,opt,casttype=Protocol)
// What host IP to bind the external port to.
// +optional
hostIP?: string @go(HostIP) @protobuf(5,bytes,opt)
}
// VolumeMount describes a mounting of a Volume within a container.
VolumeMount :: {
// This must match the Name of a Volume.
name: string @go(Name) @protobuf(1,bytes,opt)
// Mounted read-only if true, read-write otherwise (false or unspecified).
// Defaults to false.
// +optional
readOnly?: bool @go(ReadOnly) @protobuf(2,varint,opt)
// Path within the container at which the volume should be mounted. Must
// not contain ':'.
mountPath: string @go(MountPath) @protobuf(3,bytes,opt)
// Path within the volume from which the container's volume should be mounted.
// Defaults to "" (volume's root).
// +optional
subPath?: string @go(SubPath) @protobuf(4,bytes,opt)
// mountPropagation determines how mounts are propagated from the host
// to container and the other way around.
// When not set, MountPropagationNone is used.
// This field is beta in 1.10.
// +optional
mountPropagation?: null | MountPropagationMode @go(MountPropagation,*MountPropagationMode) @protobuf(5,bytes,opt,casttype=MountPropagationMode)
// Expanded path within the volume from which the container's volume should be mounted.
// Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
// Defaults to "" (volume's root).
// SubPathExpr and SubPath are mutually exclusive.
// +optional
subPathExpr?: string @go(SubPathExpr) @protobuf(6,bytes,opt)
}
// MountPropagationMode describes mount propagation.
MountPropagationMode :: string // enumMountPropagationMode
enumMountPropagationMode ::
MountPropagationNone |
MountPropagationHostToContainer |
MountPropagationBidirectional
// MountPropagationNone means that the volume in a container will
// not receive new mounts from the host or other containers, and filesystems
// mounted inside the container won't be propagated to the host or other
// containers.
// Note that this mode corresponds to "private" in Linux terminology.
MountPropagationNone :: MountPropagationMode & "None"
// MountPropagationHostToContainer means that the volume in a container will
// receive new mounts from the host or other containers, but filesystems
// mounted inside the container won't be propagated to the host or other
// containers.
// Note that this mode is recursively applied to all mounts in the volume
// ("rslave" in Linux terminology).
MountPropagationHostToContainer :: MountPropagationMode & "HostToContainer"
// MountPropagationBidirectional means that the volume in a container will
// receive new mounts from the host or other containers, and its own mounts
// will be propagated from the container to the host or other containers.
// Note that this mode is recursively applied to all mounts in the volume
// ("rshared" in Linux terminology).
MountPropagationBidirectional :: MountPropagationMode & "Bidirectional"
// volumeDevice describes a mapping of a raw block device within a container.
VolumeDevice :: {
// name must match the name of a persistentVolumeClaim in the pod
name: string @go(Name) @protobuf(1,bytes,opt)
// devicePath is the path inside of the container that the device will be mapped to.
devicePath: string @go(DevicePath) @protobuf(2,bytes,opt)
}
// EnvVar represents an environment variable present in a Container.
EnvVar :: {
// Name of the environment variable. Must be a C_IDENTIFIER.
name: string @go(Name) @protobuf(1,bytes,opt)
// Variable references $(VAR_NAME) are expanded
// using the previous defined environment variables in the container and
// any service environment variables. If a variable cannot be resolved,
// the reference in the input string will be unchanged. The $(VAR_NAME)
// syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped
// references will never be expanded, regardless of whether the variable
// exists or not.
// Defaults to "".
// +optional
value?: string @go(Value) @protobuf(2,bytes,opt)
// Source for the environment variable's value. Cannot be used if value is not empty.
// +optional
valueFrom?: null | EnvVarSource @go(ValueFrom,*EnvVarSource) @protobuf(3,bytes,opt)
}
// EnvVarSource represents a source for the value of an EnvVar.
EnvVarSource :: {
// Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations,
// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.
// +optional
fieldRef?: null | ObjectFieldSelector @go(FieldRef,*ObjectFieldSelector) @protobuf(1,bytes,opt)
// Selects a resource of the container: only resources limits and requests
// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
// +optional
resourceFieldRef?: null | ResourceFieldSelector @go(ResourceFieldRef,*ResourceFieldSelector) @protobuf(2,bytes,opt)
// Selects a key of a ConfigMap.
// +optional
configMapKeyRef?: null | ConfigMapKeySelector @go(ConfigMapKeyRef,*ConfigMapKeySelector) @protobuf(3,bytes,opt)
// Selects a key of a secret in the pod's namespace
// +optional
secretKeyRef?: null | SecretKeySelector @go(SecretKeyRef,*SecretKeySelector) @protobuf(4,bytes,opt)
}
// ObjectFieldSelector selects an APIVersioned field of an object.
ObjectFieldSelector :: {
// Version of the schema the FieldPath is written in terms of, defaults to "v1".
// +optional
apiVersion?: string @go(APIVersion) @protobuf(1,bytes,opt)
// Path of the field to select in the specified API version.
fieldPath: string @go(FieldPath) @protobuf(2,bytes,opt)
}
// ResourceFieldSelector represents container resources (cpu, memory) and their output format
ResourceFieldSelector :: {
// Container name: required for volumes, optional for env vars
// +optional
containerName?: string @go(ContainerName) @protobuf(1,bytes,opt)
// Required: resource to select
resource: string @go(Resource) @protobuf(2,bytes,opt)
// Specifies the output format of the exposed resources, defaults to "1"
// +optional
divisor?: resource.Quantity @go(Divisor) @protobuf(3,bytes,opt)
}
// Selects a key from a ConfigMap.
ConfigMapKeySelector :: {
LocalObjectReference
// The key to select.
key: string @go(Key) @protobuf(2,bytes,opt)
// Specify whether the ConfigMap or its key must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(3,varint,opt)
}
// SecretKeySelector selects a key of a Secret.
SecretKeySelector :: {
LocalObjectReference
// The key of the secret to select from. Must be a valid secret key.
key: string @go(Key) @protobuf(2,bytes,opt)
// Specify whether the Secret or its key must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(3,varint,opt)
}
// EnvFromSource represents the source of a set of ConfigMaps
EnvFromSource :: {
// An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
// +optional
prefix?: string @go(Prefix) @protobuf(1,bytes,opt)
// The ConfigMap to select from
// +optional
configMapRef?: null | ConfigMapEnvSource @go(ConfigMapRef,*ConfigMapEnvSource) @protobuf(2,bytes,opt)
// The Secret to select from
// +optional
secretRef?: null | SecretEnvSource @go(SecretRef,*SecretEnvSource) @protobuf(3,bytes,opt)
}
// ConfigMapEnvSource selects a ConfigMap to populate the environment
// variables with.
//
// The contents of the target ConfigMap's Data field will represent the
// key-value pairs as environment variables.
ConfigMapEnvSource :: {
LocalObjectReference
// Specify whether the ConfigMap must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(2,varint,opt)
}
// SecretEnvSource selects a Secret to populate the environment
// variables with.
//
// The contents of the target Secret's Data field will represent the
// key-value pairs as environment variables.
SecretEnvSource :: {
LocalObjectReference
// Specify whether the Secret must be defined
// +optional
optional?: null | bool @go(Optional,*bool) @protobuf(2,varint,opt)
}
// HTTPHeader describes a custom header to be used in HTTP probes
HTTPHeader :: {
// The header field name
name: string @go(Name) @protobuf(1,bytes,opt)
// The header field value
value: string @go(Value) @protobuf(2,bytes,opt)
}
// HTTPGetAction describes an action based on HTTP Get requests.
HTTPGetAction :: {
// Path to access on the HTTP server.
// +optional
path?: string @go(Path) @protobuf(1,bytes,opt)
// Name or number of the port to access on the container.
// Number must be in the range 1 to 65535.
// Name must be an IANA_SVC_NAME.
port: intstr.IntOrString @go(Port) @protobuf(2,bytes,opt)
// Host name to connect to, defaults to the pod IP. You probably want to set
// "Host" in httpHeaders instead.
// +optional
host?: string @go(Host) @protobuf(3,bytes,opt)
// Scheme to use for connecting to the host.
// Defaults to HTTP.
// +optional
scheme?: URIScheme @go(Scheme) @protobuf(4,bytes,opt,casttype=URIScheme)
// Custom headers to set in the request. HTTP allows repeated headers.
// +optional
httpHeaders?: [...HTTPHeader] @go(HTTPHeaders,[]HTTPHeader) @protobuf(5,bytes,rep)
}
// URIScheme identifies the scheme used for connection to a host for Get actions
URIScheme :: string // enumURIScheme
enumURIScheme ::
URISchemeHTTP |
URISchemeHTTPS
// URISchemeHTTP means that the scheme used will be http://
URISchemeHTTP :: URIScheme & "HTTP"
// URISchemeHTTPS means that the scheme used will be https://
URISchemeHTTPS :: URIScheme & "HTTPS"
// TCPSocketAction describes an action based on opening a socket
TCPSocketAction :: {
// Number or name of the port to access on the container.
// Number must be in the range 1 to 65535.
// Name must be an IANA_SVC_NAME.
port: intstr.IntOrString @go(Port) @protobuf(1,bytes,opt)
// Optional: Host name to connect to, defaults to the pod IP.
// +optional
host?: string @go(Host) @protobuf(2,bytes,opt)
}
// ExecAction describes a "run in container" action.
ExecAction :: {
// Command is the command line to execute inside the container, the working directory for the
// command is root ('/') in the container's filesystem. The command is simply exec'd, it is
// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
// a shell, you need to explicitly call out to that shell.
// Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
// +optional
command?: [...string] @go(Command,[]string) @protobuf(1,bytes,rep)
}
// Probe describes a health check to be performed against a container to determine whether it is
// alive or ready to receive traffic.
Probe :: {
Handler
// Number of seconds after the container has started before liveness probes are initiated.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
// +optional
initialDelaySeconds?: int32 @go(InitialDelaySeconds) @protobuf(2,varint,opt)
// Number of seconds after which the probe times out.
// Defaults to 1 second. Minimum value is 1.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
// +optional
timeoutSeconds?: int32 @go(TimeoutSeconds) @protobuf(3,varint,opt)
// How often (in seconds) to perform the probe.
// Default to 10 seconds. Minimum value is 1.
// +optional
periodSeconds?: int32 @go(PeriodSeconds) @protobuf(4,varint,opt)
// Minimum consecutive successes for the probe to be considered successful after having failed.
// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
// +optional
successThreshold?: int32 @go(SuccessThreshold) @protobuf(5,varint,opt)
// Minimum consecutive failures for the probe to be considered failed after having succeeded.
// Defaults to 3. Minimum value is 1.
// +optional
failureThreshold?: int32 @go(FailureThreshold) @protobuf(6,varint,opt)
}
// PullPolicy describes a policy for if/when to pull a container image
PullPolicy :: string // enumPullPolicy
enumPullPolicy ::
PullAlways |
PullNever |
PullIfNotPresent
// PullAlways means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.
PullAlways :: PullPolicy & "Always"
// PullNever means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present
PullNever :: PullPolicy & "Never"
// PullIfNotPresent means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.
PullIfNotPresent :: PullPolicy & "IfNotPresent"
// PreemptionPolicy describes a policy for if/when to preempt a pod.
PreemptionPolicy :: string // enumPreemptionPolicy
enumPreemptionPolicy ::
PreemptLowerPriority |
PreemptNever
// PreemptLowerPriority means that pod can preempt other pods with lower priority.
PreemptLowerPriority :: PreemptionPolicy & "PreemptLowerPriority"
// PreemptNever means that pod never preempts other pods with lower priority.
PreemptNever :: PreemptionPolicy & "Never"
// TerminationMessagePolicy describes how termination messages are retrieved from a container.
TerminationMessagePolicy :: string // enumTerminationMessagePolicy
enumTerminationMessagePolicy ::
TerminationMessageReadFile |
TerminationMessageFallbackToLogsOnError
// TerminationMessageReadFile is the default behavior and will set the container status message to
// the contents of the container's terminationMessagePath when the container exits.
TerminationMessageReadFile :: TerminationMessagePolicy & "File"
// TerminationMessageFallbackToLogsOnError will read the most recent contents of the container logs
// for the container status message when the container exits with an error and the
// terminationMessagePath has no contents.
TerminationMessageFallbackToLogsOnError :: TerminationMessagePolicy & "FallbackToLogsOnError"
// Capability represent POSIX capabilities type
Capability :: string
// Adds and removes POSIX capabilities from running containers.
Capabilities :: {
// Added capabilities
// +optional
add?: [...Capability] @go(Add,[]Capability) @protobuf(1,bytes,rep,casttype=Capability)
// Removed capabilities
// +optional
drop?: [...Capability] @go(Drop,[]Capability) @protobuf(2,bytes,rep,casttype=Capability)
}
// ResourceRequirements describes the compute resource requirements.
ResourceRequirements :: {
// Limits describes the maximum amount of compute resources allowed.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
// +optional
limits?: ResourceList @go(Limits) @protobuf(1,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// Requests describes the minimum amount of compute resources required.
// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
// otherwise to an implementation-defined value.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
// +optional
requests?: ResourceList @go(Requests) @protobuf(2,bytes,rep,casttype=ResourceList,castkey=ResourceName)
}
// TerminationMessagePathDefault means the default path to capture the application termination message running in a container
TerminationMessagePathDefault :: "/dev/termination-log"
// A single application container that you want to run within a pod.
Container :: {
// Name of the container specified as a DNS_LABEL.
// Each container in a pod must have a unique name (DNS_LABEL).
// Cannot be updated.
name: string @go(Name) @protobuf(1,bytes,opt)
// Docker image name.
// More info: https://kubernetes.io/docs/concepts/containers/images
// This field is optional to allow higher level config management to default or override
// container images in workload controllers like Deployments and StatefulSets.
// +optional
image?: string @go(Image) @protobuf(2,bytes,opt)
// Entrypoint array. Not executed within a shell.
// The docker image's ENTRYPOINT is used if this is not provided.
// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
// cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
// can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
// regardless of whether the variable exists or not.
// Cannot be updated.
// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
// +optional
command?: [...string] @go(Command,[]string) @protobuf(3,bytes,rep)
// Arguments to the entrypoint.
// The docker image's CMD is used if this is not provided.
// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
// cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
// can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
// regardless of whether the variable exists or not.
// Cannot be updated.
// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
// +optional
args?: [...string] @go(Args,[]string) @protobuf(4,bytes,rep)
// Container's working directory.
// If not specified, the container runtime's default will be used, which
// might be configured in the container image.
// Cannot be updated.
// +optional
workingDir?: string @go(WorkingDir) @protobuf(5,bytes,opt)
// List of ports to expose from the container. Exposing a port here gives
// the system additional information about the network connections a
// container uses, but is primarily informational. Not specifying a port here
// DOES NOT prevent that port from being exposed. Any port which is
// listening on the default "0.0.0.0" address inside a container will be
// accessible from the network.
// Cannot be updated.
// +optional
// +patchMergeKey=containerPort
// +patchStrategy=merge
// +listType=map
// +listMapKey=containerPort
// +listMapKey=protocol
ports?: [...ContainerPort] @go(Ports,[]ContainerPort) @protobuf(6,bytes,rep)
// List of sources to populate environment variables in the container.
// The keys defined within a source must be a C_IDENTIFIER. All invalid keys
// will be reported as an event when the container is starting. When a key exists in multiple
// sources, the value associated with the last source will take precedence.
// Values defined by an Env with a duplicate key will take precedence.
// Cannot be updated.
// +optional
envFrom?: [...EnvFromSource] @go(EnvFrom,[]EnvFromSource) @protobuf(19,bytes,rep)
// List of environment variables to set in the container.
// Cannot be updated.
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
env?: [...EnvVar] @go(Env,[]EnvVar) @protobuf(7,bytes,rep)
// Compute Resources required by this container.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
// +optional
resources?: ResourceRequirements @go(Resources) @protobuf(8,bytes,opt)
// Pod volumes to mount into the container's filesystem.
// Cannot be updated.
// +optional
// +patchMergeKey=mountPath
// +patchStrategy=merge
volumeMounts?: [...VolumeMount] @go(VolumeMounts,[]VolumeMount) @protobuf(9,bytes,rep)
// volumeDevices is the list of block devices to be used by the container.
// This is a beta feature.
// +patchMergeKey=devicePath
// +patchStrategy=merge
// +optional
volumeDevices?: [...VolumeDevice] @go(VolumeDevices,[]VolumeDevice) @protobuf(21,bytes,rep)
// Periodic probe of container liveness.
// Container will be restarted if the probe fails.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
// +optional
livenessProbe?: null | Probe @go(LivenessProbe,*Probe) @protobuf(10,bytes,opt)
// Periodic probe of container service readiness.
// Container will be removed from service endpoints if the probe fails.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
// +optional
readinessProbe?: null | Probe @go(ReadinessProbe,*Probe) @protobuf(11,bytes,opt)
// StartupProbe indicates that the Pod has successfully initialized.
// If specified, no other probes are executed until this completes successfully.
// If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
// This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
// when it might take a long time to load data or warm a cache, than during steady-state operation.
// This cannot be updated.
// This is an alpha feature enabled by the StartupProbe feature flag.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
// +optional
startupProbe?: null | Probe @go(StartupProbe,*Probe) @protobuf(22,bytes,opt)
// Actions that the management system should take in response to container lifecycle events.
// Cannot be updated.
// +optional
lifecycle?: null | Lifecycle @go(Lifecycle,*Lifecycle) @protobuf(12,bytes,opt)
// Optional: Path at which the file to which the container's termination message
// will be written is mounted into the container's filesystem.
// Message written is intended to be brief final status, such as an assertion failure message.
// Will be truncated by the node if greater than 4096 bytes. The total message length across
// all containers will be limited to 12kb.
// Defaults to /dev/termination-log.
// Cannot be updated.
// +optional
terminationMessagePath?: string @go(TerminationMessagePath) @protobuf(13,bytes,opt)
// Indicate how the termination message should be populated. File will use the contents of
// terminationMessagePath to populate the container status message on both success and failure.
// FallbackToLogsOnError will use the last chunk of container log output if the termination
// message file is empty and the container exited with an error.
// The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
// Defaults to File.
// Cannot be updated.
// +optional
terminationMessagePolicy?: TerminationMessagePolicy @go(TerminationMessagePolicy) @protobuf(20,bytes,opt,casttype=TerminationMessagePolicy)
// Image pull policy.
// One of Always, Never, IfNotPresent.
// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
// +optional
imagePullPolicy?: PullPolicy @go(ImagePullPolicy) @protobuf(14,bytes,opt,casttype=PullPolicy)
// Security options the pod should run with.
// More info: https://kubernetes.io/docs/concepts/policy/security-context/
// More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
// +optional
securityContext?: null | SecurityContext @go(SecurityContext,*SecurityContext) @protobuf(15,bytes,opt)
// Whether this container should allocate a buffer for stdin in the container runtime. If this
// is not set, reads from stdin in the container will always result in EOF.
// Default is false.
// +optional
stdin?: bool @go(Stdin) @protobuf(16,varint,opt)
// Whether the container runtime should close the stdin channel after it has been opened by
// a single attach. When stdin is true the stdin stream will remain open across multiple attach
// sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
// first client attaches to stdin, and then remains open and accepts data until the client disconnects,
// at which time stdin is closed and remains closed until the container is restarted. If this
// flag is false, a container processes that reads from stdin will never receive an EOF.
// Default is false
// +optional
stdinOnce?: bool @go(StdinOnce) @protobuf(17,varint,opt)
// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
// Default is false.
// +optional
tty?: bool @go(TTY) @protobuf(18,varint,opt)
}
// Handler defines a specific action that should be taken
// TODO: pass structured data to these actions, and document that data here.
Handler :: {
// One and only one of the following should be specified.
// Exec specifies the action to take.
// +optional
exec?: null | ExecAction @go(Exec,*ExecAction) @protobuf(1,bytes,opt)
// HTTPGet specifies the http request to perform.
// +optional
httpGet?: null | HTTPGetAction @go(HTTPGet,*HTTPGetAction) @protobuf(2,bytes,opt)
// TCPSocket specifies an action involving a TCP port.
// TCP hooks not yet supported
// TODO: implement a realistic TCP lifecycle hook
// +optional
tcpSocket?: null | TCPSocketAction @go(TCPSocket,*TCPSocketAction) @protobuf(3,bytes,opt)
}
// Lifecycle describes actions that the management system should take in response to container lifecycle
// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks
// until the action is complete, unless the container process fails, in which case the handler is aborted.
Lifecycle :: {
// PostStart is called immediately after a container is created. If the handler fails,
// the container is terminated and restarted according to its restart policy.
// Other management of the container blocks until the hook completes.
// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
// +optional
postStart?: null | Handler @go(PostStart,*Handler) @protobuf(1,bytes,opt)
// PreStop is called immediately before a container is terminated due to an
// API request or management event such as liveness/startup probe failure,
// preemption, resource contention, etc. The handler is not called if the
// container crashes or exits. The reason for termination is passed to the
// handler. The Pod's termination grace period countdown begins before the
// PreStop hooked is executed. Regardless of the outcome of the handler, the
// container will eventually terminate within the Pod's termination grace
// period. Other management of the container blocks until the hook completes
// or until the termination grace period is reached.
// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
// +optional
preStop?: null | Handler @go(PreStop,*Handler) @protobuf(2,bytes,opt)
}
ConditionStatus :: string // enumConditionStatus
enumConditionStatus ::
ConditionTrue |
ConditionFalse |
ConditionUnknown
ConditionTrue :: ConditionStatus & "True"
ConditionFalse :: ConditionStatus & "False"
ConditionUnknown :: ConditionStatus & "Unknown"
// ContainerStateWaiting is a waiting state of a container.
ContainerStateWaiting :: {
// (brief) reason the container is not yet running.
// +optional
reason?: string @go(Reason) @protobuf(1,bytes,opt)
// Message regarding why the container is not yet running.
// +optional
message?: string @go(Message) @protobuf(2,bytes,opt)
}
// ContainerStateRunning is a running state of a container.
ContainerStateRunning :: {
// Time at which the container was last (re-)started
// +optional
startedAt?: metav1.Time @go(StartedAt) @protobuf(1,bytes,opt)
}
// ContainerStateTerminated is a terminated state of a container.
ContainerStateTerminated :: {
// Exit status from the last termination of the container
exitCode: int32 @go(ExitCode) @protobuf(1,varint,opt)
// Signal from the last termination of the container
// +optional
signal?: int32 @go(Signal) @protobuf(2,varint,opt)
// (brief) reason from the last termination of the container
// +optional
reason?: string @go(Reason) @protobuf(3,bytes,opt)
// Message regarding the last termination of the container
// +optional
message?: string @go(Message) @protobuf(4,bytes,opt)
// Time at which previous execution of the container started
// +optional
startedAt?: metav1.Time @go(StartedAt) @protobuf(5,bytes,opt)
// Time at which the container last terminated
// +optional
finishedAt?: metav1.Time @go(FinishedAt) @protobuf(6,bytes,opt)
// Container's ID in the format 'docker://<container_id>'
// +optional
containerID?: string @go(ContainerID) @protobuf(7,bytes,opt)
}
// ContainerState holds a possible state of container.
// Only one of its members may be specified.
// If none of them is specified, the default one is ContainerStateWaiting.
ContainerState :: {
// Details about a waiting container
// +optional
waiting?: null | ContainerStateWaiting @go(Waiting,*ContainerStateWaiting) @protobuf(1,bytes,opt)
// Details about a running container
// +optional
running?: null | ContainerStateRunning @go(Running,*ContainerStateRunning) @protobuf(2,bytes,opt)
// Details about a terminated container
// +optional
terminated?: null | ContainerStateTerminated @go(Terminated,*ContainerStateTerminated) @protobuf(3,bytes,opt)
}
// ContainerStatus contains details for the current status of this container.
ContainerStatus :: {
// This must be a DNS_LABEL. Each container in a pod must have a unique name.
// Cannot be updated.
name: string @go(Name) @protobuf(1,bytes,opt)
// Details about the container's current condition.
// +optional
state?: ContainerState @go(State) @protobuf(2,bytes,opt)
// Details about the container's last termination condition.
// +optional
lastState?: ContainerState @go(LastTerminationState) @protobuf(3,bytes,opt)
// Specifies whether the container has passed its readiness probe.
ready: bool @go(Ready) @protobuf(4,varint,opt)
// The number of times the container has been restarted, currently based on
// the number of dead containers that have not yet been removed.
// Note that this is calculated from dead containers. But those containers are subject to
// garbage collection. This value will get capped at 5 by GC.
restartCount: int32 @go(RestartCount) @protobuf(5,varint,opt)
// The image the container is running.
// More info: https://kubernetes.io/docs/concepts/containers/images
// TODO(dchen1107): Which image the container is running with?
image: string @go(Image) @protobuf(6,bytes,opt)
// ImageID of the container's image.
imageID: string @go(ImageID) @protobuf(7,bytes,opt)
// Container's ID in the format 'docker://<container_id>'.
// +optional
containerID?: string @go(ContainerID) @protobuf(8,bytes,opt)
// Specifies whether the container has passed its startup probe.
// Initialized as false, becomes true after startupProbe is considered successful.
// Resets to false when the container is restarted, or if kubelet loses state temporarily.
// Is always true when no startupProbe is defined.
// +optional
started?: null | bool @go(Started,*bool) @protobuf(9,varint,opt)
}
// PodPhase is a label for the condition of a pod at the current time.
PodPhase :: string // enumPodPhase
enumPodPhase ::
PodPending |
PodRunning |
PodSucceeded |
PodFailed |
PodUnknown
// PodPending means the pod has been accepted by the system, but one or more of the containers
// has not been started. This includes time before being bound to a node, as well as time spent
// pulling images onto the host.
PodPending :: PodPhase & "Pending"
// PodRunning means the pod has been bound to a node and all of the containers have been started.
// At least one container is still running or is in the process of being restarted.
PodRunning :: PodPhase & "Running"
// PodSucceeded means that all containers in the pod have voluntarily terminated
// with a container exit code of 0, and the system is not going to restart any of these containers.
PodSucceeded :: PodPhase & "Succeeded"
// PodFailed means that all containers in the pod have terminated, and at least one container has
// terminated in a failure (exited with a non-zero exit code or was stopped by the system).
PodFailed :: PodPhase & "Failed"
// PodUnknown means that for some reason the state of the pod could not be obtained, typically due
// to an error in communicating with the host of the pod.
PodUnknown :: PodPhase & "Unknown"
// PodConditionType is a valid value for PodCondition.Type
PodConditionType :: string // enumPodConditionType
enumPodConditionType ::
ContainersReady |
PodInitialized |
PodReady |
PodScheduled
// ContainersReady indicates whether all containers in the pod are ready.
ContainersReady :: PodConditionType & "ContainersReady"
// PodInitialized means that all init containers in the pod have started successfully.
PodInitialized :: PodConditionType & "Initialized"
// PodReady means the pod is able to service requests and should be added to the
// load balancing pools of all matching services.
PodReady :: PodConditionType & "Ready"
// PodScheduled represents status of the scheduling process for this pod.
PodScheduled :: PodConditionType & "PodScheduled"
// PodReasonUnschedulable reason in PodScheduled PodCondition means that the scheduler
// can't schedule the pod right now, for example due to insufficient resources in the cluster.
PodReasonUnschedulable :: "Unschedulable"
// PodCondition contains details for the current condition of this pod.
PodCondition :: {
// Type is the type of the condition.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
type: PodConditionType @go(Type) @protobuf(1,bytes,opt,casttype=PodConditionType)
// Status is the status of the condition.
// Can be True, False, Unknown.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// Last time we probed the condition.
// +optional
lastProbeTime?: metav1.Time @go(LastProbeTime) @protobuf(3,bytes,opt)
// Last time the condition transitioned from one status to another.
// +optional
lastTransitionTime?: metav1.Time @go(LastTransitionTime) @protobuf(4,bytes,opt)
// Unique, one-word, CamelCase reason for the condition's last transition.
// +optional
reason?: string @go(Reason) @protobuf(5,bytes,opt)
// Human-readable message indicating details about last transition.
// +optional
message?: string @go(Message) @protobuf(6,bytes,opt)
}
// RestartPolicy describes how the container should be restarted.
// Only one of the following restart policies may be specified.
// If none of the following policies is specified, the default one
// is RestartPolicyAlways.
RestartPolicy :: string // enumRestartPolicy
enumRestartPolicy ::
RestartPolicyAlways |
RestartPolicyOnFailure |
RestartPolicyNever
RestartPolicyAlways :: RestartPolicy & "Always"
RestartPolicyOnFailure :: RestartPolicy & "OnFailure"
RestartPolicyNever :: RestartPolicy & "Never"
// DNSPolicy defines how a pod's DNS will be configured.
DNSPolicy :: string // enumDNSPolicy
enumDNSPolicy ::
DNSClusterFirstWithHostNet |
DNSClusterFirst |
DNSDefault |
DNSNone
// DNSClusterFirstWithHostNet indicates that the pod should use cluster DNS
// first, if it is available, then fall back on the default
// (as determined by kubelet) DNS settings.
DNSClusterFirstWithHostNet :: DNSPolicy & "ClusterFirstWithHostNet"
// DNSClusterFirst indicates that the pod should use cluster DNS
// first unless hostNetwork is true, if it is available, then
// fall back on the default (as determined by kubelet) DNS settings.
DNSClusterFirst :: DNSPolicy & "ClusterFirst"
// DNSDefault indicates that the pod should use the default (as
// determined by kubelet) DNS settings.
DNSDefault :: DNSPolicy & "Default"
// DNSNone indicates that the pod should use empty DNS settings. DNS
// parameters such as nameservers and search paths should be defined via
// DNSConfig.
DNSNone :: DNSPolicy & "None"
// DefaultTerminationGracePeriodSeconds indicates the default duration in
// seconds a pod needs to terminate gracefully.
DefaultTerminationGracePeriodSeconds :: 30
// A node selector represents the union of the results of one or more label queries
// over a set of nodes; that is, it represents the OR of the selectors represented
// by the node selector terms.
NodeSelector :: {
//Required. A list of node selector terms. The terms are ORed.
nodeSelectorTerms: [...NodeSelectorTerm] @go(NodeSelectorTerms,[]NodeSelectorTerm) @protobuf(1,bytes,rep)
}
// A null or empty node selector term matches no objects. The requirements of
// them are ANDed.
// The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
NodeSelectorTerm :: {
// A list of node selector requirements by node's labels.
// +optional
matchExpressions?: [...NodeSelectorRequirement] @go(MatchExpressions,[]NodeSelectorRequirement) @protobuf(1,bytes,rep)
// A list of node selector requirements by node's fields.
// +optional
matchFields?: [...NodeSelectorRequirement] @go(MatchFields,[]NodeSelectorRequirement) @protobuf(2,bytes,rep)
}
// A node selector requirement is a selector that contains values, a key, and an operator
// that relates the key and values.
NodeSelectorRequirement :: {
// The label key that the selector applies to.
key: string @go(Key) @protobuf(1,bytes,opt)
// Represents a key's relationship to a set of values.
// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
operator: NodeSelectorOperator @go(Operator) @protobuf(2,bytes,opt,casttype=NodeSelectorOperator)
// An array of string values. If the operator is In or NotIn,
// the values array must be non-empty. If the operator is Exists or DoesNotExist,
// the values array must be empty. If the operator is Gt or Lt, the values
// array must have a single element, which will be interpreted as an integer.
// This array is replaced during a strategic merge patch.
// +optional
values?: [...string] @go(Values,[]string) @protobuf(3,bytes,rep)
}
// A node selector operator is the set of operators that can be used in
// a node selector requirement.
NodeSelectorOperator :: string // enumNodeSelectorOperator
enumNodeSelectorOperator ::
NodeSelectorOpIn |
NodeSelectorOpNotIn |
NodeSelectorOpExists |
NodeSelectorOpDoesNotExist |
NodeSelectorOpGt |
NodeSelectorOpLt
NodeSelectorOpIn :: NodeSelectorOperator & "In"
NodeSelectorOpNotIn :: NodeSelectorOperator & "NotIn"
NodeSelectorOpExists :: NodeSelectorOperator & "Exists"
NodeSelectorOpDoesNotExist :: NodeSelectorOperator & "DoesNotExist"
NodeSelectorOpGt :: NodeSelectorOperator & "Gt"
NodeSelectorOpLt :: NodeSelectorOperator & "Lt"
// A topology selector term represents the result of label queries.
// A null or empty topology selector term matches no objects.
// The requirements of them are ANDed.
// It provides a subset of functionality as NodeSelectorTerm.
// This is an alpha feature and may change in the future.
TopologySelectorTerm :: {
// A list of topology selector requirements by labels.
// +optional
matchLabelExpressions?: [...TopologySelectorLabelRequirement] @go(MatchLabelExpressions,[]TopologySelectorLabelRequirement) @protobuf(1,bytes,rep)
}
// A topology selector requirement is a selector that matches given label.
// This is an alpha feature and may change in the future.
TopologySelectorLabelRequirement :: {
// The label key that the selector applies to.
key: string @go(Key) @protobuf(1,bytes,opt)
// An array of string values. One value must match the label to be selected.
// Each entry in Values is ORed.
values: [...string] @go(Values,[]string) @protobuf(2,bytes,rep)
}
// Affinity is a group of affinity scheduling rules.
Affinity :: {
// Describes node affinity scheduling rules for the pod.
// +optional
nodeAffinity?: null | NodeAffinity @go(NodeAffinity,*NodeAffinity) @protobuf(1,bytes,opt)
// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
// +optional
podAffinity?: null | PodAffinity @go(PodAffinity,*PodAffinity) @protobuf(2,bytes,opt)
// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
// +optional
podAntiAffinity?: null | PodAntiAffinity @go(PodAntiAffinity,*PodAntiAffinity) @protobuf(3,bytes,opt)
}
// Pod affinity is a group of inter pod affinity scheduling rules.
PodAffinity :: {
// If the affinity requirements specified by this field are not met at
// scheduling time, the pod will not be scheduled onto the node.
// If the affinity requirements specified by this field cease to be met
// at some point during pod execution (e.g. due to a pod label update), the
// system may or may not try to eventually evict the pod from its node.
// When there are multiple elements, the lists of nodes corresponding to each
// podAffinityTerm are intersected, i.e. all terms must be satisfied.
// +optional
requiredDuringSchedulingIgnoredDuringExecution?: [...PodAffinityTerm] @go(RequiredDuringSchedulingIgnoredDuringExecution,[]PodAffinityTerm) @protobuf(1,bytes,rep)
// The scheduler will prefer to schedule pods to nodes that satisfy
// the affinity expressions specified by this field, but it may choose
// a node that violates one or more of the expressions. The node that is
// most preferred is the one with the greatest sum of weights, i.e.
// for each node that meets all of the scheduling requirements (resource
// request, requiredDuringScheduling affinity expressions, etc.),
// compute a sum by iterating through the elements of this field and adding
// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
// node(s) with the highest sum are the most preferred.
// +optional
preferredDuringSchedulingIgnoredDuringExecution?: [...WeightedPodAffinityTerm] @go(PreferredDuringSchedulingIgnoredDuringExecution,[]WeightedPodAffinityTerm) @protobuf(2,bytes,rep)
}
// Pod anti affinity is a group of inter pod anti affinity scheduling rules.
PodAntiAffinity :: {
// If the anti-affinity requirements specified by this field are not met at
// scheduling time, the pod will not be scheduled onto the node.
// If the anti-affinity requirements specified by this field cease to be met
// at some point during pod execution (e.g. due to a pod label update), the
// system may or may not try to eventually evict the pod from its node.
// When there are multiple elements, the lists of nodes corresponding to each
// podAffinityTerm are intersected, i.e. all terms must be satisfied.
// +optional
requiredDuringSchedulingIgnoredDuringExecution?: [...PodAffinityTerm] @go(RequiredDuringSchedulingIgnoredDuringExecution,[]PodAffinityTerm) @protobuf(1,bytes,rep)
// The scheduler will prefer to schedule pods to nodes that satisfy
// the anti-affinity expressions specified by this field, but it may choose
// a node that violates one or more of the expressions. The node that is
// most preferred is the one with the greatest sum of weights, i.e.
// for each node that meets all of the scheduling requirements (resource
// request, requiredDuringScheduling anti-affinity expressions, etc.),
// compute a sum by iterating through the elements of this field and adding
// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
// node(s) with the highest sum are the most preferred.
// +optional
preferredDuringSchedulingIgnoredDuringExecution?: [...WeightedPodAffinityTerm] @go(PreferredDuringSchedulingIgnoredDuringExecution,[]WeightedPodAffinityTerm) @protobuf(2,bytes,rep)
}
// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
WeightedPodAffinityTerm :: {
// weight associated with matching the corresponding podAffinityTerm,
// in the range 1-100.
weight: int32 @go(Weight) @protobuf(1,varint,opt)
// Required. A pod affinity term, associated with the corresponding weight.
podAffinityTerm: PodAffinityTerm @go(PodAffinityTerm) @protobuf(2,bytes,opt)
}
// Defines a set of pods (namely those matching the labelSelector
// relative to the given namespace(s)) that this pod should be
// co-located (affinity) or not co-located (anti-affinity) with,
// where co-located is defined as running on a node whose value of
// the label with key <topologyKey> matches that of any node on which
// a pod of the set of pods is running
PodAffinityTerm :: {
// A label query over a set of resources, in this case pods.
// +optional
labelSelector?: null | metav1.LabelSelector @go(LabelSelector,*metav1.LabelSelector) @protobuf(1,bytes,opt)
// namespaces specifies which namespaces the labelSelector applies to (matches against);
// null or empty list means "this pod's namespace"
// +optional
namespaces?: [...string] @go(Namespaces,[]string) @protobuf(2,bytes,rep)
// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
// the labelSelector in the specified namespaces, where co-located is defined as running on a node
// whose value of the label with key topologyKey matches that of any node on which any of the
// selected pods is running.
// Empty topologyKey is not allowed.
topologyKey: string @go(TopologyKey) @protobuf(3,bytes,opt)
}
// Node affinity is a group of node affinity scheduling rules.
NodeAffinity :: {
// If the affinity requirements specified by this field are not met at
// scheduling time, the pod will not be scheduled onto the node.
// If the affinity requirements specified by this field cease to be met
// at some point during pod execution (e.g. due to an update), the system
// may or may not try to eventually evict the pod from its node.
// +optional
requiredDuringSchedulingIgnoredDuringExecution?: null | NodeSelector @go(RequiredDuringSchedulingIgnoredDuringExecution,*NodeSelector) @protobuf(1,bytes,opt)
// The scheduler will prefer to schedule pods to nodes that satisfy
// the affinity expressions specified by this field, but it may choose
// a node that violates one or more of the expressions. The node that is
// most preferred is the one with the greatest sum of weights, i.e.
// for each node that meets all of the scheduling requirements (resource
// request, requiredDuringScheduling affinity expressions, etc.),
// compute a sum by iterating through the elements of this field and adding
// "weight" to the sum if the node matches the corresponding matchExpressions; the
// node(s) with the highest sum are the most preferred.
// +optional
preferredDuringSchedulingIgnoredDuringExecution?: [...PreferredSchedulingTerm] @go(PreferredDuringSchedulingIgnoredDuringExecution,[]PreferredSchedulingTerm) @protobuf(2,bytes,rep)
}
// An empty preferred scheduling term matches all objects with implicit weight 0
// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
PreferredSchedulingTerm :: {
// Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
weight: int32 @go(Weight) @protobuf(1,varint,opt)
// A node selector term, associated with the corresponding weight.
preference: NodeSelectorTerm @go(Preference) @protobuf(2,bytes,opt)
}
// The node this Taint is attached to has the "effect" on
// any pod that does not tolerate the Taint.
Taint :: {
// Required. The taint key to be applied to a node.
key: string @go(Key) @protobuf(1,bytes,opt)
// Required. The taint value corresponding to the taint key.
// +optional
value?: string @go(Value) @protobuf(2,bytes,opt)
// Required. The effect of the taint on pods
// that do not tolerate the taint.
// Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
effect: TaintEffect @go(Effect) @protobuf(3,bytes,opt,casttype=TaintEffect)
// TimeAdded represents the time at which the taint was added.
// It is only written for NoExecute taints.
// +optional
timeAdded?: null | metav1.Time @go(TimeAdded,*metav1.Time) @protobuf(4,bytes,opt)
}
TaintEffect :: string // enumTaintEffect
enumTaintEffect ::
TaintEffectNoSchedule |
TaintEffectPreferNoSchedule |
TaintEffectNoExecute
// Do not allow new pods to schedule onto the node unless they tolerate the taint,
// but allow all pods submitted to Kubelet without going through the scheduler
// to start, and allow all already-running pods to continue running.
// Enforced by the scheduler.
TaintEffectNoSchedule :: TaintEffect & "NoSchedule"
// Like TaintEffectNoSchedule, but the scheduler tries not to schedule
// new pods onto the node, rather than prohibiting new pods from scheduling
// onto the node entirely. Enforced by the scheduler.
TaintEffectPreferNoSchedule :: TaintEffect & "PreferNoSchedule"
// Evict any already-running pods that do not tolerate the taint.
// Currently enforced by NodeController.
TaintEffectNoExecute :: TaintEffect & "NoExecute"
// The pod this Toleration is attached to tolerates any taint that matches
// the triple <key,value,effect> using the matching operator <operator>.
Toleration :: {
// Key is the taint key that the toleration applies to. Empty means match all taint keys.
// If the key is empty, operator must be Exists; this combination means to match all values and all keys.
// +optional
key?: string @go(Key) @protobuf(1,bytes,opt)
// Operator represents a key's relationship to the value.
// Valid operators are Exists and Equal. Defaults to Equal.
// Exists is equivalent to wildcard for value, so that a pod can
// tolerate all taints of a particular category.
// +optional
operator?: TolerationOperator @go(Operator) @protobuf(2,bytes,opt,casttype=TolerationOperator)
// Value is the taint value the toleration matches to.
// If the operator is Exists, the value should be empty, otherwise just a regular string.
// +optional
value?: string @go(Value) @protobuf(3,bytes,opt)
// Effect indicates the taint effect to match. Empty means match all taint effects.
// When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
// +optional
effect?: TaintEffect @go(Effect) @protobuf(4,bytes,opt,casttype=TaintEffect)
// TolerationSeconds represents the period of time the toleration (which must be
// of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
// it is not set, which means tolerate the taint forever (do not evict). Zero and
// negative values will be treated as 0 (evict immediately) by the system.
// +optional
tolerationSeconds?: null | int64 @go(TolerationSeconds,*int64) @protobuf(5,varint,opt)
}
// A toleration operator is the set of operators that can be used in a toleration.
TolerationOperator :: string // enumTolerationOperator
enumTolerationOperator ::
TolerationOpExists |
TolerationOpEqual
TolerationOpExists :: TolerationOperator & "Exists"
TolerationOpEqual :: TolerationOperator & "Equal"
// PodReadinessGate contains the reference to a pod condition
PodReadinessGate :: {
// ConditionType refers to a condition in the pod's condition list with matching type.
conditionType: PodConditionType @go(ConditionType) @protobuf(1,bytes,opt,casttype=PodConditionType)
}
// PodSpec is a description of a pod.
PodSpec :: {
// List of volumes that can be mounted by containers belonging to the pod.
// More info: https://kubernetes.io/docs/concepts/storage/volumes
// +optional
// +patchMergeKey=name
// +patchStrategy=merge,retainKeys
volumes?: [...Volume] @go(Volumes,[]Volume) @protobuf(1,bytes,rep)
// List of initialization containers belonging to the pod.
// Init containers are executed in order prior to containers being started. If any
// init container fails, the pod is considered to have failed and is handled according
// to its restartPolicy. The name for an init container or normal container must be
// unique among all containers.
// Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.
// The resourceRequirements of an init container are taken into account during scheduling
// by finding the highest request/limit for each resource type, and then using the max of
// of that value or the sum of the normal containers. Limits are applied to init containers
// in a similar fashion.
// Init containers cannot currently be added or removed.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
// +patchMergeKey=name
// +patchStrategy=merge
initContainers?: [...Container] @go(InitContainers,[]Container) @protobuf(20,bytes,rep)
// List of containers belonging to the pod.
// Containers cannot currently be added or removed.
// There must be at least one container in a Pod.
// Cannot be updated.
// +patchMergeKey=name
// +patchStrategy=merge
containers: [...Container] @go(Containers,[]Container) @protobuf(2,bytes,rep)
// List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing
// pod to perform user-initiated actions such as debugging. This list cannot be specified when
// creating a pod, and it cannot be modified by updating the pod spec. In order to add an
// ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.
// This field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
ephemeralContainers?: [...EphemeralContainer] @go(EphemeralContainers,[]EphemeralContainer) @protobuf(34,bytes,rep)
// Restart policy for all containers within the pod.
// One of Always, OnFailure, Never.
// Default to Always.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
// +optional
restartPolicy?: RestartPolicy @go(RestartPolicy) @protobuf(3,bytes,opt,casttype=RestartPolicy)
// Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
// Value must be non-negative integer. The value zero indicates delete immediately.
// If this value is nil, the default grace period will be used instead.
// The grace period is the duration in seconds after the processes running in the pod are sent
// a termination signal and the time when the processes are forcibly halted with a kill signal.
// Set this value longer than the expected cleanup time for your process.
// Defaults to 30 seconds.
// +optional
terminationGracePeriodSeconds?: null | int64 @go(TerminationGracePeriodSeconds,*int64) @protobuf(4,varint,opt)
// Optional duration in seconds the pod may be active on the node relative to
// StartTime before the system will actively try to mark it failed and kill associated containers.
// Value must be a positive integer.
// +optional
activeDeadlineSeconds?: null | int64 @go(ActiveDeadlineSeconds,*int64) @protobuf(5,varint,opt)
// Set DNS policy for the pod.
// Defaults to "ClusterFirst".
// Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
// DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
// To have DNS options set along with hostNetwork, you have to specify DNS policy
// explicitly to 'ClusterFirstWithHostNet'.
// +optional
dnsPolicy?: DNSPolicy @go(DNSPolicy) @protobuf(6,bytes,opt,casttype=DNSPolicy)
// NodeSelector is a selector which must be true for the pod to fit on a node.
// Selector which must match a node's labels for the pod to be scheduled on that node.
// More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
// +optional
nodeSelector?: {[string]: string} @go(NodeSelector,map[string]string) @protobuf(7,bytes,rep)
// ServiceAccountName is the name of the ServiceAccount to use to run this pod.
// More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
// +optional
serviceAccountName?: string @go(ServiceAccountName) @protobuf(8,bytes,opt)
// DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
// Deprecated: Use serviceAccountName instead.
// +k8s:conversion-gen=false
// +optional
serviceAccount?: string @go(DeprecatedServiceAccount) @protobuf(9,bytes,opt)
// AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
// +optional
automountServiceAccountToken?: null | bool @go(AutomountServiceAccountToken,*bool) @protobuf(21,varint,opt)
// NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
// the scheduler simply schedules this pod onto that node, assuming that it fits resource
// requirements.
// +optional
nodeName?: string @go(NodeName) @protobuf(10,bytes,opt)
// Host networking requested for this pod. Use the host's network namespace.
// If this option is set, the ports that will be used must be specified.
// Default to false.
// +k8s:conversion-gen=false
// +optional
hostNetwork?: bool @go(HostNetwork) @protobuf(11,varint,opt)
// Use the host's pid namespace.
// Optional: Default to false.
// +k8s:conversion-gen=false
// +optional
hostPID?: bool @go(HostPID) @protobuf(12,varint,opt)
// Use the host's ipc namespace.
// Optional: Default to false.
// +k8s:conversion-gen=false
// +optional
hostIPC?: bool @go(HostIPC) @protobuf(13,varint,opt)
// Share a single process namespace between all of the containers in a pod.
// When this is set containers will be able to view and signal processes from other containers
// in the same pod, and the first process in each container will not be assigned PID 1.
// HostPID and ShareProcessNamespace cannot both be set.
// Optional: Default to false.
// This field is beta-level and may be disabled with the PodShareProcessNamespace feature.
// +k8s:conversion-gen=false
// +optional
shareProcessNamespace?: null | bool @go(ShareProcessNamespace,*bool) @protobuf(27,varint,opt)
// SecurityContext holds pod-level security attributes and common container settings.
// Optional: Defaults to empty. See type description for default values of each field.
// +optional
securityContext?: null | PodSecurityContext @go(SecurityContext,*PodSecurityContext) @protobuf(14,bytes,opt)
// ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
// If specified, these secrets will be passed to individual puller implementations for them to use. For example,
// in the case of docker, only DockerConfig type secrets are honored.
// More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
imagePullSecrets?: [...LocalObjectReference] @go(ImagePullSecrets,[]LocalObjectReference) @protobuf(15,bytes,rep)
// Specifies the hostname of the Pod
// If not specified, the pod's hostname will be set to a system-defined value.
// +optional
hostname?: string @go(Hostname) @protobuf(16,bytes,opt)
// If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
// If not specified, the pod will not have a domainname at all.
// +optional
subdomain?: string @go(Subdomain) @protobuf(17,bytes,opt)
// If specified, the pod's scheduling constraints
// +optional
affinity?: null | Affinity @go(Affinity,*Affinity) @protobuf(18,bytes,opt)
// If specified, the pod will be dispatched by specified scheduler.
// If not specified, the pod will be dispatched by default scheduler.
// +optional
schedulerName?: string @go(SchedulerName) @protobuf(19,bytes,opt)
// If specified, the pod's tolerations.
// +optional
tolerations?: [...Toleration] @go(Tolerations,[]Toleration) @protobuf(22,bytes,opt)
// HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
// file if specified. This is only valid for non-hostNetwork pods.
// +optional
// +patchMergeKey=ip
// +patchStrategy=merge
hostAliases?: [...HostAlias] @go(HostAliases,[]HostAlias) @protobuf(23,bytes,rep)
// If specified, indicates the pod's priority. "system-node-critical" and
// "system-cluster-critical" are two special keywords which indicate the
// highest priorities with the former being the highest priority. Any other
// name must be defined by creating a PriorityClass object with that name.
// If not specified, the pod priority will be default or zero if there is no
// default.
// +optional
priorityClassName?: string @go(PriorityClassName) @protobuf(24,bytes,opt)
// The priority value. Various system components use this field to find the
// priority of the pod. When Priority Admission Controller is enabled, it
// prevents users from setting this field. The admission controller populates
// this field from PriorityClassName.
// The higher the value, the higher the priority.
// +optional
priority?: null | int32 @go(Priority,*int32) @protobuf(25,bytes,opt)
// Specifies the DNS parameters of a pod.
// Parameters specified here will be merged to the generated DNS
// configuration based on DNSPolicy.
// +optional
dnsConfig?: null | PodDNSConfig @go(DNSConfig,*PodDNSConfig) @protobuf(26,bytes,opt)
// If specified, all readiness gates will be evaluated for pod readiness.
// A pod is ready when all its containers are ready AND
// all conditions specified in the readiness gates have status equal to "True"
// More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md
// +optional
readinessGates?: [...PodReadinessGate] @go(ReadinessGates,[]PodReadinessGate) @protobuf(28,bytes,opt)
// RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
// to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
// If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
// empty definition that uses the default runtime handler.
// More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
// This is a beta feature as of Kubernetes v1.14.
// +optional
runtimeClassName?: null | string @go(RuntimeClassName,*string) @protobuf(29,bytes,opt)
// EnableServiceLinks indicates whether information about services should be injected into pod's
// environment variables, matching the syntax of Docker links.
// Optional: Defaults to true.
// +optional
enableServiceLinks?: null | bool @go(EnableServiceLinks,*bool) @protobuf(30,varint,opt)
// PreemptionPolicy is the Policy for preempting pods with lower priority.
// One of Never, PreemptLowerPriority.
// Defaults to PreemptLowerPriority if unset.
// This field is alpha-level and is only honored by servers that enable the NonPreemptingPriority feature.
// +optional
preemptionPolicy?: null | PreemptionPolicy @go(PreemptionPolicy,*PreemptionPolicy) @protobuf(31,bytes,opt)
// Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
// This field will be autopopulated at admission time by the RuntimeClass admission controller. If
// the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
// The RuntimeClass admission controller will reject Pod create requests which have the overhead already
// set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
// defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
// More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md
// This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.
// +optional
overhead?: ResourceList @go(Overhead) @protobuf(32,bytes,opt)
// TopologySpreadConstraints describes how a group of pods ought to spread across topology
// domains. Scheduler will schedule pods in a way which abides by the constraints.
// This field is alpha-level and is only honored by clusters that enables the EvenPodsSpread
// feature.
// All topologySpreadConstraints are ANDed.
// +optional
// +patchMergeKey=topologyKey
// +patchStrategy=merge
// +listType=map
// +listMapKey=topologyKey
// +listMapKey=whenUnsatisfiable
topologySpreadConstraints?: [...TopologySpreadConstraint] @go(TopologySpreadConstraints,[]TopologySpreadConstraint) @protobuf(33,bytes,opt)
}
UnsatisfiableConstraintAction :: string // enumUnsatisfiableConstraintAction
enumUnsatisfiableConstraintAction ::
DoNotSchedule |
ScheduleAnyway
// DoNotSchedule instructs the scheduler not to schedule the pod
// when constraints are not satisfied.
DoNotSchedule :: UnsatisfiableConstraintAction & "DoNotSchedule"
// ScheduleAnyway instructs the scheduler to schedule the pod
// even if constraints are not satisfied.
ScheduleAnyway :: UnsatisfiableConstraintAction & "ScheduleAnyway"
// TopologySpreadConstraint specifies how to spread matching pods among the given topology.
TopologySpreadConstraint :: {
// MaxSkew describes the degree to which pods may be unevenly distributed.
// It's the maximum permitted difference between the number of matching pods in
// any two topology domains of a given topology type.
// For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
// labelSelector spread as 1/1/0:
// +-------+-------+-------+
// | zone1 | zone2 | zone3 |
// +-------+-------+-------+
// | P | P | |
// +-------+-------+-------+
// - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;
// scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)
// violate MaxSkew(1).
// - if MaxSkew is 2, incoming pod can be scheduled onto any zone.
// It's a required field. Default value is 1 and 0 is not allowed.
maxSkew: int32 @go(MaxSkew) @protobuf(1,varint,opt)
// TopologyKey is the key of node labels. Nodes that have a label with this key
// and identical values are considered to be in the same topology.
// We consider each <key, value> as a "bucket", and try to put balanced number
// of pods into each bucket.
// It's a required field.
topologyKey: string @go(TopologyKey) @protobuf(2,bytes,opt)
// WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy
// the spread constraint.
// - DoNotSchedule (default) tells the scheduler not to schedule it
// - ScheduleAnyway tells the scheduler to still schedule it
// It's considered as "Unsatisfiable" if and only if placing incoming pod on any
// topology violates "MaxSkew".
// For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same
// labelSelector spread as 3/1/1:
// +-------+-------+-------+
// | zone1 | zone2 | zone3 |
// +-------+-------+-------+
// | P P P | P | P |
// +-------+-------+-------+
// If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled
// to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
// MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler
// won't make it *more* imbalanced.
// It's a required field.
whenUnsatisfiable: UnsatisfiableConstraintAction @go(WhenUnsatisfiable) @protobuf(3,bytes,opt,casttype=UnsatisfiableConstraintAction)
// LabelSelector is used to find matching pods.
// Pods that match this label selector are counted to determine the number of pods
// in their corresponding topology domain.
// +optional
labelSelector?: null | metav1.LabelSelector @go(LabelSelector,*metav1.LabelSelector) @protobuf(4,bytes,opt)
}
// The default value for enableServiceLinks attribute.
DefaultEnableServiceLinks :: true
// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
// pod's hosts file.
HostAlias :: {
// IP address of the host file entry.
ip?: string @go(IP) @protobuf(1,bytes,opt)
// Hostnames for the above IP address.
hostnames?: [...string] @go(Hostnames,[]string) @protobuf(2,bytes,rep)
}
// PodSecurityContext holds pod-level security attributes and common container settings.
// Some fields are also present in container.securityContext. Field values of
// container.securityContext take precedence over field values of PodSecurityContext.
PodSecurityContext :: {
// The SELinux context to be applied to all containers.
// If unspecified, the container runtime will allocate a random SELinux context for each
// container. May also be set in SecurityContext. If set in
// both SecurityContext and PodSecurityContext, the value specified in SecurityContext
// takes precedence for that container.
// +optional
seLinuxOptions?: null | SELinuxOptions @go(SELinuxOptions,*SELinuxOptions) @protobuf(1,bytes,opt)
// The Windows specific settings applied to all containers.
// If unspecified, the options within a container's SecurityContext will be used.
// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
windowsOptions?: null | WindowsSecurityContextOptions @go(WindowsOptions,*WindowsSecurityContextOptions) @protobuf(8,bytes,opt)
// The UID to run the entrypoint of the container process.
// Defaults to user specified in image metadata if unspecified.
// May also be set in SecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence
// for that container.
// +optional
runAsUser?: null | int64 @go(RunAsUser,*int64) @protobuf(2,varint,opt)
// The GID to run the entrypoint of the container process.
// Uses runtime default if unset.
// May also be set in SecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence
// for that container.
// +optional
runAsGroup?: null | int64 @go(RunAsGroup,*int64) @protobuf(6,varint,opt)
// Indicates that the container must run as a non-root user.
// If true, the Kubelet will validate the image at runtime to ensure that it
// does not run as UID 0 (root) and fail to start the container if it does.
// If unset or false, no such validation will be performed.
// May also be set in SecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
runAsNonRoot?: null | bool @go(RunAsNonRoot,*bool) @protobuf(3,varint,opt)
// A list of groups applied to the first process run in each container, in addition
// to the container's primary GID. If unspecified, no groups will be added to
// any container.
// +optional
supplementalGroups?: [...int64] @go(SupplementalGroups,[]int64) @protobuf(4,varint,rep)
// A special supplemental group that applies to all containers in a pod.
// Some volume types allow the Kubelet to change the ownership of that volume
// to be owned by the pod:
//
// 1. The owning GID will be the FSGroup
// 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
// 3. The permission bits are OR'd with rw-rw----
//
// If unset, the Kubelet will not modify the ownership and permissions of any volume.
// +optional
fsGroup?: null | int64 @go(FSGroup,*int64) @protobuf(5,varint,opt)
// Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
// sysctls (by the container runtime) might fail to launch.
// +optional
sysctls?: [...Sysctl] @go(Sysctls,[]Sysctl) @protobuf(7,bytes,rep)
}
// PodQOSClass defines the supported qos classes of Pods.
PodQOSClass :: string // enumPodQOSClass
enumPodQOSClass ::
PodQOSGuaranteed |
PodQOSBurstable |
PodQOSBestEffort
// PodQOSGuaranteed is the Guaranteed qos class.
PodQOSGuaranteed :: PodQOSClass & "Guaranteed"
// PodQOSBurstable is the Burstable qos class.
PodQOSBurstable :: PodQOSClass & "Burstable"
// PodQOSBestEffort is the BestEffort qos class.
PodQOSBestEffort :: PodQOSClass & "BestEffort"
// PodDNSConfig defines the DNS parameters of a pod in addition to
// those generated from DNSPolicy.
PodDNSConfig :: {
// A list of DNS name server IP addresses.
// This will be appended to the base nameservers generated from DNSPolicy.
// Duplicated nameservers will be removed.
// +optional
nameservers?: [...string] @go(Nameservers,[]string) @protobuf(1,bytes,rep)
// A list of DNS search domains for host-name lookup.
// This will be appended to the base search paths generated from DNSPolicy.
// Duplicated search paths will be removed.
// +optional
searches?: [...string] @go(Searches,[]string) @protobuf(2,bytes,rep)
// A list of DNS resolver options.
// This will be merged with the base options generated from DNSPolicy.
// Duplicated entries will be removed. Resolution options given in Options
// will override those that appear in the base DNSPolicy.
// +optional
options?: [...PodDNSConfigOption] @go(Options,[]PodDNSConfigOption) @protobuf(3,bytes,rep)
}
// PodDNSConfigOption defines DNS resolver options of a pod.
PodDNSConfigOption :: {
// Required.
name?: string @go(Name) @protobuf(1,bytes,opt)
// +optional
value?: null | string @go(Value,*string) @protobuf(2,bytes,opt)
}
// IP address information for entries in the (plural) PodIPs field.
// Each entry includes:
// IP: An IP address allocated to the pod. Routable at least within the cluster.
PodIP :: {
// ip is an IP address (IPv4 or IPv6) assigned to the pod
ip?: string @go(IP) @protobuf(1,bytes,opt)
}
// EphemeralContainerCommon is a copy of all fields in Container to be inlined in
// EphemeralContainer. This separate type allows easy conversion from EphemeralContainer
// to Container and allows separate documentation for the fields of EphemeralContainer.
// When a new field is added to Container it must be added here as well.
EphemeralContainerCommon :: {
// Name of the ephemeral container specified as a DNS_LABEL.
// This name must be unique among all containers, init containers and ephemeral containers.
name: string @go(Name) @protobuf(1,bytes,opt)
// Docker image name.
// More info: https://kubernetes.io/docs/concepts/containers/images
image?: string @go(Image) @protobuf(2,bytes,opt)
// Entrypoint array. Not executed within a shell.
// The docker image's ENTRYPOINT is used if this is not provided.
// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
// cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
// can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
// regardless of whether the variable exists or not.
// Cannot be updated.
// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
// +optional
command?: [...string] @go(Command,[]string) @protobuf(3,bytes,rep)
// Arguments to the entrypoint.
// The docker image's CMD is used if this is not provided.
// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
// cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
// can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
// regardless of whether the variable exists or not.
// Cannot be updated.
// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
// +optional
args?: [...string] @go(Args,[]string) @protobuf(4,bytes,rep)
// Container's working directory.
// If not specified, the container runtime's default will be used, which
// might be configured in the container image.
// Cannot be updated.
// +optional
workingDir?: string @go(WorkingDir) @protobuf(5,bytes,opt)
// Ports are not allowed for ephemeral containers.
ports?: [...ContainerPort] @go(Ports,[]ContainerPort) @protobuf(6,bytes,rep)
// List of sources to populate environment variables in the container.
// The keys defined within a source must be a C_IDENTIFIER. All invalid keys
// will be reported as an event when the container is starting. When a key exists in multiple
// sources, the value associated with the last source will take precedence.
// Values defined by an Env with a duplicate key will take precedence.
// Cannot be updated.
// +optional
envFrom?: [...EnvFromSource] @go(EnvFrom,[]EnvFromSource) @protobuf(19,bytes,rep)
// List of environment variables to set in the container.
// Cannot be updated.
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
env?: [...EnvVar] @go(Env,[]EnvVar) @protobuf(7,bytes,rep)
// Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources
// already allocated to the pod.
// +optional
resources?: ResourceRequirements @go(Resources) @protobuf(8,bytes,opt)
// Pod volumes to mount into the container's filesystem.
// Cannot be updated.
// +optional
// +patchMergeKey=mountPath
// +patchStrategy=merge
volumeMounts?: [...VolumeMount] @go(VolumeMounts,[]VolumeMount) @protobuf(9,bytes,rep)
// volumeDevices is the list of block devices to be used by the container.
// This is a beta feature.
// +patchMergeKey=devicePath
// +patchStrategy=merge
// +optional
volumeDevices?: [...VolumeDevice] @go(VolumeDevices,[]VolumeDevice) @protobuf(21,bytes,rep)
// Probes are not allowed for ephemeral containers.
// +optional
livenessProbe?: null | Probe @go(LivenessProbe,*Probe) @protobuf(10,bytes,opt)
// Probes are not allowed for ephemeral containers.
// +optional
readinessProbe?: null | Probe @go(ReadinessProbe,*Probe) @protobuf(11,bytes,opt)
// Probes are not allowed for ephemeral containers.
// +optional
startupProbe?: null | Probe @go(StartupProbe,*Probe) @protobuf(22,bytes,opt)
// Lifecycle is not allowed for ephemeral containers.
// +optional
lifecycle?: null | Lifecycle @go(Lifecycle,*Lifecycle) @protobuf(12,bytes,opt)
// Optional: Path at which the file to which the container's termination message
// will be written is mounted into the container's filesystem.
// Message written is intended to be brief final status, such as an assertion failure message.
// Will be truncated by the node if greater than 4096 bytes. The total message length across
// all containers will be limited to 12kb.
// Defaults to /dev/termination-log.
// Cannot be updated.
// +optional
terminationMessagePath?: string @go(TerminationMessagePath) @protobuf(13,bytes,opt)
// Indicate how the termination message should be populated. File will use the contents of
// terminationMessagePath to populate the container status message on both success and failure.
// FallbackToLogsOnError will use the last chunk of container log output if the termination
// message file is empty and the container exited with an error.
// The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
// Defaults to File.
// Cannot be updated.
// +optional
terminationMessagePolicy?: TerminationMessagePolicy @go(TerminationMessagePolicy) @protobuf(20,bytes,opt,casttype=TerminationMessagePolicy)
// Image pull policy.
// One of Always, Never, IfNotPresent.
// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
// Cannot be updated.
// More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
// +optional
imagePullPolicy?: PullPolicy @go(ImagePullPolicy) @protobuf(14,bytes,opt,casttype=PullPolicy)
// SecurityContext is not allowed for ephemeral containers.
// +optional
securityContext?: null | SecurityContext @go(SecurityContext,*SecurityContext) @protobuf(15,bytes,opt)
// Whether this container should allocate a buffer for stdin in the container runtime. If this
// is not set, reads from stdin in the container will always result in EOF.
// Default is false.
// +optional
stdin?: bool @go(Stdin) @protobuf(16,varint,opt)
// Whether the container runtime should close the stdin channel after it has been opened by
// a single attach. When stdin is true the stdin stream will remain open across multiple attach
// sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
// first client attaches to stdin, and then remains open and accepts data until the client disconnects,
// at which time stdin is closed and remains closed until the container is restarted. If this
// flag is false, a container processes that reads from stdin will never receive an EOF.
// Default is false
// +optional
stdinOnce?: bool @go(StdinOnce) @protobuf(17,varint,opt)
// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
// Default is false.
// +optional
tty?: bool @go(TTY) @protobuf(18,varint,opt)
}
// An EphemeralContainer is a container that may be added temporarily to an existing pod for
// user-initiated activities such as debugging. Ephemeral containers have no resource or
// scheduling guarantees, and they will not be restarted when they exit or when a pod is
// removed or restarted. If an ephemeral container causes a pod to exceed its resource
// allocation, the pod may be evicted.
// Ephemeral containers may not be added by directly updating the pod spec. They must be added
// via the pod's ephemeralcontainers subresource, and they will appear in the pod spec
// once added.
// This is an alpha feature enabled by the EphemeralContainers feature flag.
EphemeralContainer :: {
EphemeralContainerCommon
// If set, the name of the container from PodSpec that this ephemeral container targets.
// The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.
// If not set then the ephemeral container is run in whatever namespaces are shared
// for the pod. Note that the container runtime must support this feature.
// +optional
targetContainerName?: string @go(TargetContainerName) @protobuf(2,bytes,opt)
}
// PodStatus represents information about the status of a pod. Status may trail the actual
// state of a system, especially if the node that hosts the pod cannot contact the control
// plane.
PodStatus :: {
// The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
// The conditions array, the reason and message fields, and the individual container status
// arrays contain more detail about the pod's status.
// There are five possible phase values:
//
// Pending: The pod has been accepted by the Kubernetes system, but one or more of the
// container images has not been created. This includes time before being scheduled as
// well as time spent downloading images over the network, which could take a while.
// Running: The pod has been bound to a node, and all of the containers have been created.
// At least one container is still running, or is in the process of starting or restarting.
// Succeeded: All containers in the pod have terminated in success, and will not be restarted.
// Failed: All containers in the pod have terminated, and at least one container has
// terminated in failure. The container either exited with non-zero status or was terminated
// by the system.
// Unknown: For some reason the state of the pod could not be obtained, typically due to an
// error in communicating with the host of the pod.
//
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
// +optional
phase?: PodPhase @go(Phase) @protobuf(1,bytes,opt,casttype=PodPhase)
// Current service state of pod.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
conditions?: [...PodCondition] @go(Conditions,[]PodCondition) @protobuf(2,bytes,rep)
// A human readable message indicating details about why the pod is in this condition.
// +optional
message?: string @go(Message) @protobuf(3,bytes,opt)
// A brief CamelCase message indicating details about why the pod is in this state.
// e.g. 'Evicted'
// +optional
reason?: string @go(Reason) @protobuf(4,bytes,opt)
// nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
// scheduled right away as preemption victims receive their graceful termination periods.
// This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
// to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
// give the resources on this node to a higher priority pod that is created after preemption.
// As a result, this field may be different than PodSpec.nodeName when the pod is
// scheduled.
// +optional
nominatedNodeName?: string @go(NominatedNodeName) @protobuf(11,bytes,opt)
// IP address of the host to which the pod is assigned. Empty if not yet scheduled.
// +optional
hostIP?: string @go(HostIP) @protobuf(5,bytes,opt)
// IP address allocated to the pod. Routable at least within the cluster.
// Empty if not yet allocated.
// +optional
podIP?: string @go(PodIP) @protobuf(6,bytes,opt)
// podIPs holds the IP addresses allocated to the pod. If this field is specified, the 0th entry must
// match the podIP field. Pods may be allocated at most 1 value for each of IPv4 and IPv6. This list
// is empty if no IPs have been allocated yet.
// +optional
// +patchStrategy=merge
// +patchMergeKey=ip
podIPs?: [...PodIP] @go(PodIPs,[]PodIP) @protobuf(12,bytes,rep)
// RFC 3339 date and time at which the object was acknowledged by the Kubelet.
// This is before the Kubelet pulled the container image(s) for the pod.
// +optional
startTime?: null | metav1.Time @go(StartTime,*metav1.Time) @protobuf(7,bytes,opt)
// The list has one entry per init container in the manifest. The most recent successful
// init container will have ready = true, the most recently started container will have
// startTime set.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
initContainerStatuses?: [...ContainerStatus] @go(InitContainerStatuses,[]ContainerStatus) @protobuf(10,bytes,rep)
// The list has one entry per container in the manifest. Each entry is currently the output
// of `docker inspect`.
// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
// +optional
containerStatuses?: [...ContainerStatus] @go(ContainerStatuses,[]ContainerStatus) @protobuf(8,bytes,rep)
// The Quality of Service (QOS) classification assigned to the pod based on resource requirements
// See PodQOSClass type for available QOS classes
// More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md
// +optional
qosClass?: PodQOSClass @go(QOSClass) @protobuf(9,bytes,rep)
// Status for any ephemeral containers that have run in this pod.
// This field is alpha-level and is only populated by servers that enable the EphemeralContainers feature.
// +optional
ephemeralContainerStatuses?: [...ContainerStatus] @go(EphemeralContainerStatuses,[]ContainerStatus) @protobuf(13,bytes,rep)
}
// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
PodStatusResult :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Most recently observed status of the pod.
// This data may not be up to date.
// Populated by the system.
// Read-only.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: PodStatus @go(Status) @protobuf(2,bytes,opt)
}
// Pod is a collection of containers that can run on a host. This resource is created
// by clients and scheduled onto hosts.
Pod :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Specification of the desired behavior of the pod.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: PodSpec @go(Spec) @protobuf(2,bytes,opt)
// Most recently observed status of the pod.
// This data may not be up to date.
// Populated by the system.
// Read-only.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: PodStatus @go(Status) @protobuf(3,bytes,opt)
}
// PodList is a list of Pods.
PodList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of pods.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
items: [...Pod] @go(Items,[]Pod) @protobuf(2,bytes,rep)
}
// PodTemplateSpec describes the data a pod should have when created from a template
PodTemplateSpec :: {
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Specification of the desired behavior of the pod.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: PodSpec @go(Spec) @protobuf(2,bytes,opt)
}
// PodTemplate describes a template for creating copies of a predefined pod.
PodTemplate :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Template defines the pods that will be created from this pod template.
// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
template?: PodTemplateSpec @go(Template) @protobuf(2,bytes,opt)
}
// PodTemplateList is a list of PodTemplates.
PodTemplateList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of pod templates
items: [...PodTemplate] @go(Items,[]PodTemplate) @protobuf(2,bytes,rep)
}
// ReplicationControllerSpec is the specification of a replication controller.
ReplicationControllerSpec :: {
// Replicas is the number of desired replicas.
// This is a pointer to distinguish between explicit zero and unspecified.
// Defaults to 1.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
// +optional
replicas?: null | int32 @go(Replicas,*int32) @protobuf(1,varint,opt)
// Minimum number of seconds for which a newly created pod should be ready
// without any of its container crashing, for it to be considered available.
// Defaults to 0 (pod will be considered available as soon as it is ready)
// +optional
minReadySeconds?: int32 @go(MinReadySeconds) @protobuf(4,varint,opt)
// Selector is a label query over pods that should match the Replicas count.
// If Selector is empty, it is defaulted to the labels present on the Pod template.
// Label keys and values that must match in order to be controlled by this replication
// controller, if empty defaulted to labels on Pod template.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
// +optional
selector?: {[string]: string} @go(Selector,map[string]string) @protobuf(2,bytes,rep)
// Template is the object that describes the pod that will be created if
// insufficient replicas are detected. This takes precedence over a TemplateRef.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
// +optional
template?: null | PodTemplateSpec @go(Template,*PodTemplateSpec) @protobuf(3,bytes,opt)
}
// ReplicationControllerStatus represents the current status of a replication
// controller.
ReplicationControllerStatus :: {
// Replicas is the most recently oberved number of replicas.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
replicas: int32 @go(Replicas) @protobuf(1,varint,opt)
// The number of pods that have labels matching the labels of the pod template of the replication controller.
// +optional
fullyLabeledReplicas?: int32 @go(FullyLabeledReplicas) @protobuf(2,varint,opt)
// The number of ready replicas for this replication controller.
// +optional
readyReplicas?: int32 @go(ReadyReplicas) @protobuf(4,varint,opt)
// The number of available replicas (ready for at least minReadySeconds) for this replication controller.
// +optional
availableReplicas?: int32 @go(AvailableReplicas) @protobuf(5,varint,opt)
// ObservedGeneration reflects the generation of the most recently observed replication controller.
// +optional
observedGeneration?: int64 @go(ObservedGeneration) @protobuf(3,varint,opt)
// Represents the latest available observations of a replication controller's current state.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
conditions?: [...ReplicationControllerCondition] @go(Conditions,[]ReplicationControllerCondition) @protobuf(6,bytes,rep)
}
ReplicationControllerConditionType :: string // enumReplicationControllerConditionType
enumReplicationControllerConditionType ::
ReplicationControllerReplicaFailure
// ReplicationControllerReplicaFailure is added in a replication controller when one of its pods
// fails to be created due to insufficient quota, limit ranges, pod security policy, node selectors,
// etc. or deleted due to kubelet being down or finalizers are failing.
ReplicationControllerReplicaFailure :: ReplicationControllerConditionType & "ReplicaFailure"
// ReplicationControllerCondition describes the state of a replication controller at a certain point.
ReplicationControllerCondition :: {
// Type of replication controller condition.
type: ReplicationControllerConditionType @go(Type) @protobuf(1,bytes,opt,casttype=ReplicationControllerConditionType)
// Status of the condition, one of True, False, Unknown.
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// The last time the condition transitioned from one status to another.
// +optional
lastTransitionTime?: metav1.Time @go(LastTransitionTime) @protobuf(3,bytes,opt)
// The reason for the condition's last transition.
// +optional
reason?: string @go(Reason) @protobuf(4,bytes,opt)
// A human readable message indicating details about the transition.
// +optional
message?: string @go(Message) @protobuf(5,bytes,opt)
}
// ReplicationController represents the configuration of a replication controller.
ReplicationController :: {
metav1.TypeMeta
// If the Labels of a ReplicationController are empty, they are defaulted to
// be the same as the Pod(s) that the replication controller manages.
// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the specification of the desired behavior of the replication controller.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: ReplicationControllerSpec @go(Spec) @protobuf(2,bytes,opt)
// Status is the most recently observed status of the replication controller.
// This data may be out of date by some window of time.
// Populated by the system.
// Read-only.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: ReplicationControllerStatus @go(Status) @protobuf(3,bytes,opt)
}
// ReplicationControllerList is a collection of replication controllers.
ReplicationControllerList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of replication controllers.
// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
items: [...ReplicationController] @go(Items,[]ReplicationController) @protobuf(2,bytes,rep)
}
// Session Affinity Type string
ServiceAffinity :: string // enumServiceAffinity
enumServiceAffinity ::
ServiceAffinityClientIP |
ServiceAffinityNone
// ServiceAffinityClientIP is the Client IP based.
ServiceAffinityClientIP :: ServiceAffinity & "ClientIP"
// ServiceAffinityNone - no session affinity.
ServiceAffinityNone :: ServiceAffinity & "None"
DefaultClientIPServiceAffinitySeconds :: int32 & 10800
// SessionAffinityConfig represents the configurations of session affinity.
SessionAffinityConfig :: {
// clientIP contains the configurations of Client IP based session affinity.
// +optional
clientIP?: null | ClientIPConfig @go(ClientIP,*ClientIPConfig) @protobuf(1,bytes,opt)
}
// ClientIPConfig represents the configurations of Client IP based session affinity.
ClientIPConfig :: {
// timeoutSeconds specifies the seconds of ClientIP type session sticky time.
// The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP".
// Default value is 10800(for 3 hours).
// +optional
timeoutSeconds?: null | int32 @go(TimeoutSeconds,*int32) @protobuf(1,varint,opt)
}
// Service Type string describes ingress methods for a service
ServiceType :: string // enumServiceType
enumServiceType ::
ServiceTypeClusterIP |
ServiceTypeNodePort |
ServiceTypeLoadBalancer |
ServiceTypeExternalName
// ServiceTypeClusterIP means a service will only be accessible inside the
// cluster, via the cluster IP.
ServiceTypeClusterIP :: ServiceType & "ClusterIP"
// ServiceTypeNodePort means a service will be exposed on one port of
// every node, in addition to 'ClusterIP' type.
ServiceTypeNodePort :: ServiceType & "NodePort"
// ServiceTypeLoadBalancer means a service will be exposed via an
// external load balancer (if the cloud provider supports it), in addition
// to 'NodePort' type.
ServiceTypeLoadBalancer :: ServiceType & "LoadBalancer"
// ServiceTypeExternalName means a service consists of only a reference to
// an external name that kubedns or equivalent will return as a CNAME
// record, with no exposing or proxying of any pods involved.
ServiceTypeExternalName :: ServiceType & "ExternalName"
// Service External Traffic Policy Type string
ServiceExternalTrafficPolicyType :: string // enumServiceExternalTrafficPolicyType
enumServiceExternalTrafficPolicyType ::
ServiceExternalTrafficPolicyTypeLocal |
ServiceExternalTrafficPolicyTypeCluster
// ServiceExternalTrafficPolicyTypeLocal specifies node-local endpoints behavior.
ServiceExternalTrafficPolicyTypeLocal :: ServiceExternalTrafficPolicyType & "Local"
// ServiceExternalTrafficPolicyTypeCluster specifies node-global (legacy) behavior.
ServiceExternalTrafficPolicyTypeCluster :: ServiceExternalTrafficPolicyType & "Cluster"
// ServiceStatus represents the current status of a service.
ServiceStatus :: {
// LoadBalancer contains the current status of the load-balancer,
// if one is present.
// +optional
loadBalancer?: LoadBalancerStatus @go(LoadBalancer) @protobuf(1,bytes,opt)
}
// LoadBalancerStatus represents the status of a load-balancer.
LoadBalancerStatus :: {
// Ingress is a list containing ingress points for the load-balancer.
// Traffic intended for the service should be sent to these ingress points.
// +optional
ingress?: [...LoadBalancerIngress] @go(Ingress,[]LoadBalancerIngress) @protobuf(1,bytes,rep)
}
// LoadBalancerIngress represents the status of a load-balancer ingress point:
// traffic intended for the service should be sent to an ingress point.
LoadBalancerIngress :: {
// IP is set for load-balancer ingress points that are IP based
// (typically GCE or OpenStack load-balancers)
// +optional
ip?: string @go(IP) @protobuf(1,bytes,opt)
// Hostname is set for load-balancer ingress points that are DNS based
// (typically AWS load-balancers)
// +optional
hostname?: string @go(Hostname) @protobuf(2,bytes,opt)
}
// IPFamily represents the IP Family (IPv4 or IPv6). This type is used
// to express the family of an IP expressed by a type (i.e. service.Spec.IPFamily)
IPFamily :: string // enumIPFamily
enumIPFamily ::
IPv4Protocol |
IPv6Protocol
// IPv4Protocol indicates that this IP is IPv4 protocol
IPv4Protocol :: IPFamily & "IPv4"
// IPv6Protocol indicates that this IP is IPv6 protocol
IPv6Protocol :: IPFamily & "IPv6"
// ServiceSpec describes the attributes that a user creates on a service.
ServiceSpec :: {
// The list of ports that are exposed by this service.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
// +patchMergeKey=port
// +patchStrategy=merge
// +listType=map
// +listMapKey=port
// +listMapKey=protocol
ports?: [...ServicePort] @go(Ports,[]ServicePort) @protobuf(1,bytes,rep)
// Route service traffic to pods with label keys and values matching this
// selector. If empty or not present, the service is assumed to have an
// external process managing its endpoints, which Kubernetes will not
// modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
// Ignored if type is ExternalName.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/
// +optional
selector?: {[string]: string} @go(Selector,map[string]string) @protobuf(2,bytes,rep)
// clusterIP is the IP address of the service and is usually assigned
// randomly by the master. If an address is specified manually and is not in
// use by others, it will be allocated to the service; otherwise, creation
// of the service will fail. This field can not be changed through updates.
// Valid values are "None", empty string (""), or a valid IP address. "None"
// can be specified for headless services when proxying is not required.
// Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if
// type is ExternalName.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
// +optional
clusterIP?: string @go(ClusterIP) @protobuf(3,bytes,opt)
// type determines how the Service is exposed. Defaults to ClusterIP. Valid
// options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
// "ExternalName" maps to the specified externalName.
// "ClusterIP" allocates a cluster-internal IP address for load-balancing to
// endpoints. Endpoints are determined by the selector or if that is not
// specified, by manual construction of an Endpoints object. If clusterIP is
// "None", no virtual IP is allocated and the endpoints are published as a
// set of endpoints rather than a stable IP.
// "NodePort" builds on ClusterIP and allocates a port on every node which
// routes to the clusterIP.
// "LoadBalancer" builds on NodePort and creates an
// external load-balancer (if supported in the current cloud) which routes
// to the clusterIP.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
// +optional
type?: ServiceType @go(Type) @protobuf(4,bytes,opt,casttype=ServiceType)
// externalIPs is a list of IP addresses for which nodes in the cluster
// will also accept traffic for this service. These IPs are not managed by
// Kubernetes. The user is responsible for ensuring that traffic arrives
// at a node with this IP. A common example is external load-balancers
// that are not part of the Kubernetes system.
// +optional
externalIPs?: [...string] @go(ExternalIPs,[]string) @protobuf(5,bytes,rep)
// Supports "ClientIP" and "None". Used to maintain session affinity.
// Enable client IP based session affinity.
// Must be ClientIP or None.
// Defaults to None.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
// +optional
sessionAffinity?: ServiceAffinity @go(SessionAffinity) @protobuf(7,bytes,opt,casttype=ServiceAffinity)
// Only applies to Service Type: LoadBalancer
// LoadBalancer will get created with the IP specified in this field.
// This feature depends on whether the underlying cloud-provider supports specifying
// the loadBalancerIP when a load balancer is created.
// This field will be ignored if the cloud-provider does not support the feature.
// +optional
loadBalancerIP?: string @go(LoadBalancerIP) @protobuf(8,bytes,opt)
// If specified and supported by the platform, this will restrict traffic through the cloud-provider
// load-balancer will be restricted to the specified client IPs. This field will be ignored if the
// cloud-provider does not support the feature."
// More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/
// +optional
loadBalancerSourceRanges?: [...string] @go(LoadBalancerSourceRanges,[]string) @protobuf(9,bytes,opt)
// externalName is the external reference that kubedns or equivalent will
// return as a CNAME record for this service. No proxying will be involved.
// Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
// and requires Type to be ExternalName.
// +optional
externalName?: string @go(ExternalName) @protobuf(10,bytes,opt)
// externalTrafficPolicy denotes if this Service desires to route external
// traffic to node-local or cluster-wide endpoints. "Local" preserves the
// client source IP and avoids a second hop for LoadBalancer and Nodeport
// type services, but risks potentially imbalanced traffic spreading.
// "Cluster" obscures the client source IP and may cause a second hop to
// another node, but should have good overall load-spreading.
// +optional
externalTrafficPolicy?: ServiceExternalTrafficPolicyType @go(ExternalTrafficPolicy) @protobuf(11,bytes,opt)
// healthCheckNodePort specifies the healthcheck nodePort for the service.
// If not specified, HealthCheckNodePort is created by the service api
// backend with the allocated nodePort. Will use user-specified nodePort value
// if specified by the client. Only effects when Type is set to LoadBalancer
// and ExternalTrafficPolicy is set to Local.
// +optional
healthCheckNodePort?: int32 @go(HealthCheckNodePort) @protobuf(12,bytes,opt)
// publishNotReadyAddresses, when set to true, indicates that DNS implementations
// must publish the notReadyAddresses of subsets for the Endpoints associated with
// the Service. The default value is false.
// The primary use case for setting this field is to use a StatefulSet's Headless Service
// to propagate SRV records for its Pods without respect to their readiness for purpose
// of peer discovery.
// +optional
publishNotReadyAddresses?: bool @go(PublishNotReadyAddresses) @protobuf(13,varint,opt)
// sessionAffinityConfig contains the configurations of session affinity.
// +optional
sessionAffinityConfig?: null | SessionAffinityConfig @go(SessionAffinityConfig,*SessionAffinityConfig) @protobuf(14,bytes,opt)
// ipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs.
// IPv6). If a specific IP family is requested, the clusterIP field will be allocated from that family, if it is
// available in the cluster. If no IP family is requested, the cluster's primary IP family will be used.
// Other IP fields (loadBalancerIP, loadBalancerSourceRanges, externalIPs) and controllers which
// allocate external load-balancers should use the same IP family. Endpoints for this Service will be of
// this family. This field is immutable after creation. Assigning a ServiceIPFamily not available in the
// cluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment.
// +optional
ipFamily?: null | IPFamily @go(IPFamily,*IPFamily) @protobuf(15,bytes,opt,Configcasttype=IPFamily)
}
// ServicePort contains information on service's port.
ServicePort :: {
// The name of this port within the service. This must be a DNS_LABEL.
// All ports within a ServiceSpec must have unique names. When considering
// the endpoints for a Service, this must match the 'name' field in the
// EndpointPort.
// Optional if only one ServicePort is defined on this service.
// +optional
name?: string @go(Name) @protobuf(1,bytes,opt)
// The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
// Default is TCP.
// +optional
protocol?: Protocol @go(Protocol) @protobuf(2,bytes,opt,casttype=Protocol)
// The port that will be exposed by this service.
port: int32 @go(Port) @protobuf(3,varint,opt)
// Number or name of the port to access on the pods targeted by the service.
// Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
// If this is a string, it will be looked up as a named port in the
// target Pod's container ports. If this is not specified, the value
// of the 'port' field is used (an identity map).
// This field is ignored for services with clusterIP=None, and should be
// omitted or set equal to the 'port' field.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
// +optional
targetPort?: intstr.IntOrString @go(TargetPort) @protobuf(4,bytes,opt)
// The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
// Usually assigned by the system. If specified, it will be allocated to the service
// if unused or else creation of the service will fail.
// Default is to auto-allocate a port if the ServiceType of this Service requires one.
// More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
// +optional
nodePort?: int32 @go(NodePort) @protobuf(5,varint,opt)
}
// Service is a named abstraction of software service (for example, mysql) consisting of local port
// (for example 3306) that the proxy listens on, and the selector that determines which pods
// will answer requests sent through the proxy.
Service :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the behavior of a service.
// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: ServiceSpec @go(Spec) @protobuf(2,bytes,opt)
// Most recently observed status of the service.
// Populated by the system.
// Read-only.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: ServiceStatus @go(Status) @protobuf(3,bytes,opt)
}
// ClusterIPNone - do not assign a cluster IP
// no proxying required and no environment variables should be created for pods
ClusterIPNone :: "None"
// ServiceList holds a list of services.
ServiceList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of services
items: [...Service] @go(Items,[]Service) @protobuf(2,bytes,rep)
}
// ServiceAccount binds together:
// * a name, understood by users, and perhaps by peripheral systems, for an identity
// * a principal that can be authenticated and authorized
// * a set of secrets
ServiceAccount :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount.
// More info: https://kubernetes.io/docs/concepts/configuration/secret
// +optional
// +patchMergeKey=name
// +patchStrategy=merge
secrets?: [...ObjectReference] @go(Secrets,[]ObjectReference) @protobuf(2,bytes,rep)
// ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
// in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
// can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
// More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
// +optional
imagePullSecrets?: [...LocalObjectReference] @go(ImagePullSecrets,[]LocalObjectReference) @protobuf(3,bytes,rep)
// AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
// Can be overridden at the pod level.
// +optional
automountServiceAccountToken?: null | bool @go(AutomountServiceAccountToken,*bool) @protobuf(4,varint,opt)
}
// ServiceAccountList is a list of ServiceAccount objects
ServiceAccountList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of ServiceAccounts.
// More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
items: [...ServiceAccount] @go(Items,[]ServiceAccount) @protobuf(2,bytes,rep)
}
// Endpoints is a collection of endpoints that implement the actual service. Example:
// Name: "mysvc",
// Subsets: [
// {
// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
// },
// {
// Addresses: [{"ip": "10.10.3.3"}],
// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
// },
// ]
Endpoints :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// The set of all endpoints is the union of all subsets. Addresses are placed into
// subsets according to the IPs they share. A single address with multiple ports,
// some of which are ready and some of which are not (because they come from
// different containers) will result in the address being displayed in different
// subsets for the different ports. No address will appear in both Addresses and
// NotReadyAddresses in the same subset.
// Sets of addresses and ports that comprise a service.
// +optional
subsets?: [...EndpointSubset] @go(Subsets,[]EndpointSubset) @protobuf(2,bytes,rep)
}
// EndpointSubset is a group of addresses with a common set of ports. The
// expanded set of endpoints is the Cartesian product of Addresses x Ports.
// For example, given:
// {
// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
// }
// The resulting set of endpoints can be viewed as:
// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
// b: [ 10.10.1.1:309, 10.10.2.2:309 ]
EndpointSubset :: {
// IP addresses which offer the related ports that are marked as ready. These endpoints
// should be considered safe for load balancers and clients to utilize.
// +optional
addresses?: [...EndpointAddress] @go(Addresses,[]EndpointAddress) @protobuf(1,bytes,rep)
// IP addresses which offer the related ports but are not currently marked as ready
// because they have not yet finished starting, have recently failed a readiness check,
// or have recently failed a liveness check.
// +optional
notReadyAddresses?: [...EndpointAddress] @go(NotReadyAddresses,[]EndpointAddress) @protobuf(2,bytes,rep)
// Port numbers available on the related IP addresses.
// +optional
ports?: [...EndpointPort] @go(Ports,[]EndpointPort) @protobuf(3,bytes,rep)
}
// EndpointAddress is a tuple that describes single IP address.
EndpointAddress :: {
// The IP of this endpoint.
// May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16),
// or link-local multicast ((224.0.0.0/24).
// IPv6 is also accepted but not fully supported on all platforms. Also, certain
// kubernetes components, like kube-proxy, are not IPv6 ready.
// TODO: This should allow hostname or IP, See #4447.
ip: string @go(IP) @protobuf(1,bytes,opt)
// The Hostname of this endpoint
// +optional
hostname?: string @go(Hostname) @protobuf(3,bytes,opt)
// Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
// +optional
nodeName?: null | string @go(NodeName,*string) @protobuf(4,bytes,opt)
// Reference to object providing the endpoint.
// +optional
targetRef?: null | ObjectReference @go(TargetRef,*ObjectReference) @protobuf(2,bytes,opt)
}
// EndpointPort is a tuple that describes a single port.
EndpointPort :: {
// The name of this port. This must match the 'name' field in the
// corresponding ServicePort.
// Must be a DNS_LABEL.
// Optional only if one port is defined.
// +optional
name?: string @go(Name) @protobuf(1,bytes,opt)
// The port number of the endpoint.
port: int32 @go(Port) @protobuf(2,varint,opt)
// The IP protocol for this port.
// Must be UDP, TCP, or SCTP.
// Default is TCP.
// +optional
protocol?: Protocol @go(Protocol) @protobuf(3,bytes,opt,casttype=Protocol)
}
// EndpointsList is a list of endpoints.
EndpointsList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of endpoints.
items: [...Endpoints] @go(Items,[]Endpoints) @protobuf(2,bytes,rep)
}
// NodeSpec describes the attributes that a node is created with.
NodeSpec :: {
// PodCIDR represents the pod IP range assigned to the node.
// +optional
podCIDR?: string @go(PodCIDR) @protobuf(1,bytes,opt)
// podCIDRs represents the IP ranges assigned to the node for usage by Pods on that node. If this
// field is specified, the 0th entry must match the podCIDR field. It may contain at most 1 value for
// each of IPv4 and IPv6.
// +optional
// +patchStrategy=merge
podCIDRs?: [...string] @go(PodCIDRs,[]string) @protobuf(7,bytes,opt)
// ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>
// +optional
providerID?: string @go(ProviderID) @protobuf(3,bytes,opt)
// Unschedulable controls node schedulability of new pods. By default, node is schedulable.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
// +optional
unschedulable?: bool @go(Unschedulable) @protobuf(4,varint,opt)
// If specified, the node's taints.
// +optional
taints?: [...Taint] @go(Taints,[]Taint) @protobuf(5,bytes,opt)
// If specified, the source to get node configuration from
// The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field
// +optional
configSource?: null | NodeConfigSource @go(ConfigSource,*NodeConfigSource) @protobuf(6,bytes,opt)
// Deprecated. Not all kubelets will set this field. Remove field after 1.13.
// see: https://issues.k8s.io/61966
// +optional
externalID?: string @go(DoNotUseExternalID) @protobuf(2,bytes,opt)
}
// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
NodeConfigSource :: {
// ConfigMap is a reference to a Node's ConfigMap
configMap?: null | ConfigMapNodeConfigSource @go(ConfigMap,*ConfigMapNodeConfigSource) @protobuf(2,bytes,opt)
}
// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
ConfigMapNodeConfigSource :: {
// Namespace is the metadata.namespace of the referenced ConfigMap.
// This field is required in all cases.
namespace: string @go(Namespace) @protobuf(1,bytes,opt)
// Name is the metadata.name of the referenced ConfigMap.
// This field is required in all cases.
name: string @go(Name) @protobuf(2,bytes,opt)
// UID is the metadata.UID of the referenced ConfigMap.
// This field is forbidden in Node.Spec, and required in Node.Status.
// +optional
uid?: types.UID @go(UID) @protobuf(3,bytes,opt)
// ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
// This field is forbidden in Node.Spec, and required in Node.Status.
// +optional
resourceVersion?: string @go(ResourceVersion) @protobuf(4,bytes,opt)
// KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
// This field is required in all cases.
kubeletConfigKey: string @go(KubeletConfigKey) @protobuf(5,bytes,opt)
}
// DaemonEndpoint contains information about a single Daemon endpoint.
DaemonEndpoint :: {
// Port number of the given endpoint.
Port: int32 @protobuf(1,varint,opt)
}
// NodeDaemonEndpoints lists ports opened by daemons running on the Node.
NodeDaemonEndpoints :: {
// Endpoint on which Kubelet is listening.
// +optional
kubeletEndpoint?: DaemonEndpoint @go(KubeletEndpoint) @protobuf(1,bytes,opt)
}
// NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
NodeSystemInfo :: {
// MachineID reported by the node. For unique machine identification
// in the cluster this field is preferred. Learn more from man(5)
// machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
machineID: string @go(MachineID) @protobuf(1,bytes,opt)
// SystemUUID reported by the node. For unique machine identification
// MachineID is preferred. This field is specific to Red Hat hosts
// https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html
systemUUID: string @go(SystemUUID) @protobuf(2,bytes,opt)
// Boot ID reported by the node.
bootID: string @go(BootID) @protobuf(3,bytes,opt)
// Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
kernelVersion: string @go(KernelVersion) @protobuf(4,bytes,opt)
// OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
osImage: string @go(OSImage) @protobuf(5,bytes,opt)
// ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).
containerRuntimeVersion: string @go(ContainerRuntimeVersion) @protobuf(6,bytes,opt)
// Kubelet Version reported by the node.
kubeletVersion: string @go(KubeletVersion) @protobuf(7,bytes,opt)
// KubeProxy Version reported by the node.
kubeProxyVersion: string @go(KubeProxyVersion) @protobuf(8,bytes,opt)
// The Operating System reported by the node
operatingSystem: string @go(OperatingSystem) @protobuf(9,bytes,opt)
// The Architecture reported by the node
architecture: string @go(Architecture) @protobuf(10,bytes,opt)
}
// NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.
NodeConfigStatus :: {
// Assigned reports the checkpointed config the node will try to use.
// When Node.Spec.ConfigSource is updated, the node checkpoints the associated
// config payload to local disk, along with a record indicating intended
// config. The node refers to this record to choose its config checkpoint, and
// reports this record in Assigned. Assigned only updates in the status after
// the record has been checkpointed to disk. When the Kubelet is restarted,
// it tries to make the Assigned config the Active config by loading and
// validating the checkpointed payload identified by Assigned.
// +optional
assigned?: null | NodeConfigSource @go(Assigned,*NodeConfigSource) @protobuf(1,bytes,opt)
// Active reports the checkpointed config the node is actively using.
// Active will represent either the current version of the Assigned config,
// or the current LastKnownGood config, depending on whether attempting to use the
// Assigned config results in an error.
// +optional
active?: null | NodeConfigSource @go(Active,*NodeConfigSource) @protobuf(2,bytes,opt)
// LastKnownGood reports the checkpointed config the node will fall back to
// when it encounters an error attempting to use the Assigned config.
// The Assigned config becomes the LastKnownGood config when the node determines
// that the Assigned config is stable and correct.
// This is currently implemented as a 10-minute soak period starting when the local
// record of Assigned config is updated. If the Assigned config is Active at the end
// of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
// reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
// because the local default config is always assumed good.
// You should not make assumptions about the node's method of determining config stability
// and correctness, as this may change or become configurable in the future.
// +optional
lastKnownGood?: null | NodeConfigSource @go(LastKnownGood,*NodeConfigSource) @protobuf(3,bytes,opt)
// Error describes any problems reconciling the Spec.ConfigSource to the Active config.
// Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
// record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
// to load or validate the Assigned config, etc.
// Errors may occur at different points while syncing config. Earlier errors (e.g. download or
// checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
// Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
// a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
// by fixing the config assigned in Spec.ConfigSource.
// You can find additional information for debugging by searching the error message in the Kubelet log.
// Error is a human-readable description of the error state; machines can check whether or not Error
// is empty, but should not rely on the stability of the Error text across Kubelet versions.
// +optional
error?: string @go(Error) @protobuf(4,bytes,opt)
}
// NodeStatus is information about the current status of a node.
NodeStatus :: {
// Capacity represents the total resources of a node.
// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
// +optional
capacity?: ResourceList @go(Capacity) @protobuf(1,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// Allocatable represents the resources of a node that are available for scheduling.
// Defaults to Capacity.
// +optional
allocatable?: ResourceList @go(Allocatable) @protobuf(2,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// NodePhase is the recently observed lifecycle phase of the node.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
// The field is never populated, and now is deprecated.
// +optional
phase?: NodePhase @go(Phase) @protobuf(3,bytes,opt,casttype=NodePhase)
// Conditions is an array of current observed node conditions.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
conditions?: [...NodeCondition] @go(Conditions,[]NodeCondition) @protobuf(4,bytes,rep)
// List of addresses reachable to the node.
// Queried from cloud provider, if available.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
// Note: This field is declared as mergeable, but the merge key is not sufficiently
// unique, which can cause data corruption when it is merged. Callers should instead
// use a full-replacement patch. See http://pr.k8s.io/79391 for an example.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
addresses?: [...NodeAddress] @go(Addresses,[]NodeAddress) @protobuf(5,bytes,rep)
// Endpoints of daemons running on the Node.
// +optional
daemonEndpoints?: NodeDaemonEndpoints @go(DaemonEndpoints) @protobuf(6,bytes,opt)
// Set of ids/uuids to uniquely identify the node.
// More info: https://kubernetes.io/docs/concepts/nodes/node/#info
// +optional
nodeInfo?: NodeSystemInfo @go(NodeInfo) @protobuf(7,bytes,opt)
// List of container images on this node
// +optional
images?: [...ContainerImage] @go(Images,[]ContainerImage) @protobuf(8,bytes,rep)
// List of attachable volumes in use (mounted) by the node.
// +optional
volumesInUse?: [...UniqueVolumeName] @go(VolumesInUse,[]UniqueVolumeName) @protobuf(9,bytes,rep)
// List of volumes that are attached to the node.
// +optional
volumesAttached?: [...AttachedVolume] @go(VolumesAttached,[]AttachedVolume) @protobuf(10,bytes,rep)
// Status of the config assigned to the node via the dynamic Kubelet config feature.
// +optional
config?: null | NodeConfigStatus @go(Config,*NodeConfigStatus) @protobuf(11,bytes,opt)
}
UniqueVolumeName :: string
// AttachedVolume describes a volume attached to a node
AttachedVolume :: {
// Name of the attached volume
name: UniqueVolumeName @go(Name) @protobuf(1,bytes,rep)
// DevicePath represents the device path where the volume should be available
devicePath: string @go(DevicePath) @protobuf(2,bytes,rep)
}
// AvoidPods describes pods that should avoid this node. This is the value for a
// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and
// will eventually become a field of NodeStatus.
AvoidPods :: {
// Bounded-sized list of signatures of pods that should avoid this node, sorted
// in timestamp order from oldest to newest. Size of the slice is unspecified.
// +optional
preferAvoidPods?: [...PreferAvoidPodsEntry] @go(PreferAvoidPods,[]PreferAvoidPodsEntry) @protobuf(1,bytes,rep)
}
// Describes a class of pods that should avoid this node.
PreferAvoidPodsEntry :: {
// The class of pods.
podSignature: PodSignature @go(PodSignature) @protobuf(1,bytes,opt)
// Time at which this entry was added to the list.
// +optional
evictionTime?: metav1.Time @go(EvictionTime) @protobuf(2,bytes,opt)
// (brief) reason why this entry was added to the list.
// +optional
reason?: string @go(Reason) @protobuf(3,bytes,opt)
// Human readable message indicating why this entry was added to the list.
// +optional
message?: string @go(Message) @protobuf(4,bytes,opt)
}
// Describes the class of pods that should avoid this node.
// Exactly one field should be set.
PodSignature :: {
// Reference to controller whose pods should avoid this node.
// +optional
podController?: null | metav1.OwnerReference @go(PodController,*metav1.OwnerReference) @protobuf(1,bytes,opt)
}
// Describe a container image
ContainerImage :: {
// Names by which this image is known.
// e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
names: [...string] @go(Names,[]string) @protobuf(1,bytes,rep)
// The size of the image in bytes.
// +optional
sizeBytes?: int64 @go(SizeBytes) @protobuf(2,varint,opt)
}
NodePhase :: string // enumNodePhase
enumNodePhase ::
NodePending |
NodeRunning |
NodeTerminated
// NodePending means the node has been created/added by the system, but not configured.
NodePending :: NodePhase & "Pending"
// NodeRunning means the node has been configured and has Kubernetes components running.
NodeRunning :: NodePhase & "Running"
// NodeTerminated means the node has been removed from the cluster.
NodeTerminated :: NodePhase & "Terminated"
NodeConditionType :: string // enumNodeConditionType
enumNodeConditionType ::
NodeReady |
NodeMemoryPressure |
NodeDiskPressure |
NodePIDPressure |
NodeNetworkUnavailable
// NodeReady means kubelet is healthy and ready to accept pods.
NodeReady :: NodeConditionType & "Ready"
// NodeMemoryPressure means the kubelet is under pressure due to insufficient available memory.
NodeMemoryPressure :: NodeConditionType & "MemoryPressure"
// NodeDiskPressure means the kubelet is under pressure due to insufficient available disk.
NodeDiskPressure :: NodeConditionType & "DiskPressure"
// NodePIDPressure means the kubelet is under pressure due to insufficient available PID.
NodePIDPressure :: NodeConditionType & "PIDPressure"
// NodeNetworkUnavailable means that network for the node is not correctly configured.
NodeNetworkUnavailable :: NodeConditionType & "NetworkUnavailable"
// NodeCondition contains condition information for a node.
NodeCondition :: {
// Type of node condition.
type: NodeConditionType @go(Type) @protobuf(1,bytes,opt,casttype=NodeConditionType)
// Status of the condition, one of True, False, Unknown.
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// Last time we got an update on a given condition.
// +optional
lastHeartbeatTime?: metav1.Time @go(LastHeartbeatTime) @protobuf(3,bytes,opt)
// Last time the condition transit from one status to another.
// +optional
lastTransitionTime?: metav1.Time @go(LastTransitionTime) @protobuf(4,bytes,opt)
// (brief) reason for the condition's last transition.
// +optional
reason?: string @go(Reason) @protobuf(5,bytes,opt)
// Human readable message indicating details about last transition.
// +optional
message?: string @go(Message) @protobuf(6,bytes,opt)
}
NodeAddressType :: string // enumNodeAddressType
enumNodeAddressType ::
NodeHostName |
NodeExternalIP |
NodeInternalIP |
NodeExternalDNS |
NodeInternalDNS
NodeHostName :: NodeAddressType & "Hostname"
NodeExternalIP :: NodeAddressType & "ExternalIP"
NodeInternalIP :: NodeAddressType & "InternalIP"
NodeExternalDNS :: NodeAddressType & "ExternalDNS"
NodeInternalDNS :: NodeAddressType & "InternalDNS"
// NodeAddress contains information for the node's address.
NodeAddress :: {
// Node address type, one of Hostname, ExternalIP or InternalIP.
type: NodeAddressType @go(Type) @protobuf(1,bytes,opt,casttype=NodeAddressType)
// The node address.
address: string @go(Address) @protobuf(2,bytes,opt)
}
// ResourceName is the name identifying various resources in a ResourceList.
ResourceName :: string // enumResourceName
enumResourceName ::
ResourceCPU |
ResourceMemory |
ResourceStorage |
ResourceEphemeralStorage |
ResourcePods |
ResourceServices |
ResourceReplicationControllers |
ResourceQuotas |
ResourceSecrets |
ResourceConfigMaps |
ResourcePersistentVolumeClaims |
ResourceServicesNodePorts |
ResourceServicesLoadBalancers |
ResourceRequestsCPU |
ResourceRequestsMemory |
ResourceRequestsStorage |
ResourceRequestsEphemeralStorage |
ResourceLimitsCPU |
ResourceLimitsMemory |
ResourceLimitsEphemeralStorage
// CPU, in cores. (500m = .5 cores)
ResourceCPU :: ResourceName & "cpu"
// Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceMemory :: ResourceName & "memory"
// Volume size, in bytes (e,g. 5Gi = 5GiB = 5 * 1024 * 1024 * 1024)
ResourceStorage :: ResourceName & "storage"
// Local ephemeral storage, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
// The resource name for ResourceEphemeralStorage is alpha and it can change across releases.
ResourceEphemeralStorage :: ResourceName & "ephemeral-storage"
// Default namespace prefix.
ResourceDefaultNamespacePrefix :: "kubernetes.io/"
// Name prefix for huge page resources (alpha).
ResourceHugePagesPrefix :: "hugepages-"
// Name prefix for storage resource limits
ResourceAttachableVolumesPrefix :: "attachable-volumes-"
// ResourceList is a set of (resource name, quantity) pairs.
ResourceList :: {[string]: resource.Quantity}
// Node is a worker node in Kubernetes.
// Each node will have a unique identifier in the cache (i.e. in etcd).
Node :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the behavior of a node.
// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: NodeSpec @go(Spec) @protobuf(2,bytes,opt)
// Most recently observed status of the node.
// Populated by the system.
// Read-only.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: NodeStatus @go(Status) @protobuf(3,bytes,opt)
}
// NodeList is the whole list of all Nodes which have been registered with master.
NodeList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of nodes
items: [...Node] @go(Items,[]Node) @protobuf(2,bytes,rep)
}
// FinalizerName is the name identifying a finalizer during namespace lifecycle.
FinalizerName :: string // enumFinalizerName
enumFinalizerName ::
FinalizerKubernetes
FinalizerKubernetes :: FinalizerName & "kubernetes"
// NamespaceSpec describes the attributes on a Namespace.
NamespaceSpec :: {
// Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
// More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
// +optional
finalizers?: [...FinalizerName] @go(Finalizers,[]FinalizerName) @protobuf(1,bytes,rep,casttype=FinalizerName)
}
// NamespaceStatus is information about the current status of a Namespace.
NamespaceStatus :: {
// Phase is the current lifecycle phase of the namespace.
// More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
// +optional
phase?: NamespacePhase @go(Phase) @protobuf(1,bytes,opt,casttype=NamespacePhase)
// Represents the latest available observations of a namespace's current state.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
conditions?: [...NamespaceCondition] @go(Conditions,[]NamespaceCondition) @protobuf(2,bytes,rep)
}
NamespacePhase :: string // enumNamespacePhase
enumNamespacePhase ::
NamespaceActive |
NamespaceTerminating
// NamespaceActive means the namespace is available for use in the system
NamespaceActive :: NamespacePhase & "Active"
// NamespaceTerminating means the namespace is undergoing graceful termination
NamespaceTerminating :: NamespacePhase & "Terminating"
NamespaceConditionType :: string // enumNamespaceConditionType
enumNamespaceConditionType ::
NamespaceDeletionDiscoveryFailure |
NamespaceDeletionContentFailure |
NamespaceDeletionGVParsingFailure |
NamespaceContentRemaining |
NamespaceFinalizersRemaining
// NamespaceDeletionDiscoveryFailure contains information about namespace deleter errors during resource discovery.
NamespaceDeletionDiscoveryFailure :: NamespaceConditionType & "NamespaceDeletionDiscoveryFailure"
// NamespaceDeletionContentFailure contains information about namespace deleter errors during deletion of resources.
NamespaceDeletionContentFailure :: NamespaceConditionType & "NamespaceDeletionContentFailure"
// NamespaceDeletionGVParsingFailure contains information about namespace deleter errors parsing GV for legacy types.
NamespaceDeletionGVParsingFailure :: NamespaceConditionType & "NamespaceDeletionGroupVersionParsingFailure"
// NamespaceContentRemaining contains information about resources remaining in a namespace.
NamespaceContentRemaining :: NamespaceConditionType & "NamespaceContentRemaining"
// NamespaceFinalizersRemaining contains information about which finalizers are on resources remaining in a namespace.
NamespaceFinalizersRemaining :: NamespaceConditionType & "NamespaceFinalizersRemaining"
// NamespaceCondition contains details about state of namespace.
NamespaceCondition :: {
// Type of namespace controller condition.
type: NamespaceConditionType @go(Type) @protobuf(1,bytes,opt,casttype=NamespaceConditionType)
// Status of the condition, one of True, False, Unknown.
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// +optional
lastTransitionTime?: metav1.Time @go(LastTransitionTime) @protobuf(4,bytes,opt)
// +optional
reason?: string @go(Reason) @protobuf(5,bytes,opt)
// +optional
message?: string @go(Message) @protobuf(6,bytes,opt)
}
// Namespace provides a scope for Names.
// Use of multiple namespaces is optional.
Namespace :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the behavior of the Namespace.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: NamespaceSpec @go(Spec) @protobuf(2,bytes,opt)
// Status describes the current status of a Namespace.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: NamespaceStatus @go(Status) @protobuf(3,bytes,opt)
}
// NamespaceList is a list of Namespaces.
NamespaceList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// Items is the list of Namespace objects in the list.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
items: [...Namespace] @go(Items,[]Namespace) @protobuf(2,bytes,rep)
}
// Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
// Deprecated in 1.7, please use the bindings subresource of pods instead.
Binding :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// The target object that you want to bind to the standard object.
target: ObjectReference @go(Target) @protobuf(2,bytes,opt)
}
// A list of ephemeral containers used with the Pod ephemeralcontainers subresource.
EphemeralContainers :: {
metav1.TypeMeta
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// A list of ephemeral containers associated with this pod. New ephemeral containers
// may be appended to this list, but existing ephemeral containers may not be removed
// or modified.
// +patchMergeKey=name
// +patchStrategy=merge
ephemeralContainers: [...EphemeralContainer] @go(EphemeralContainers,[]EphemeralContainer) @protobuf(2,bytes,rep)
}
// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
// +k8s:openapi-gen=false
Preconditions :: {
// Specifies the target UID.
// +optional
uid?: null | types.UID @go(UID,*types.UID) @protobuf(1,bytes,opt,casttype=k8s.io/apimachinery/pkg/types.UID)
}
// PodLogOptions is the query options for a Pod's logs REST call.
PodLogOptions :: {
metav1.TypeMeta
// The container for which to stream logs. Defaults to only container if there is one container in the pod.
// +optional
container?: string @go(Container) @protobuf(1,bytes,opt)
// Follow the log stream of the pod. Defaults to false.
// +optional
follow?: bool @go(Follow) @protobuf(2,varint,opt)
// Return previous terminated container logs. Defaults to false.
// +optional
previous?: bool @go(Previous) @protobuf(3,varint,opt)
// A relative time in seconds before the current time from which to show logs. If this value
// precedes the time a pod was started, only logs since the pod start will be returned.
// If this value is in the future, no logs will be returned.
// Only one of sinceSeconds or sinceTime may be specified.
// +optional
sinceSeconds?: null | int64 @go(SinceSeconds,*int64) @protobuf(4,varint,opt)
// An RFC3339 timestamp from which to show logs. If this value
// precedes the time a pod was started, only logs since the pod start will be returned.
// If this value is in the future, no logs will be returned.
// Only one of sinceSeconds or sinceTime may be specified.
// +optional
sinceTime?: null | metav1.Time @go(SinceTime,*metav1.Time) @protobuf(5,bytes,opt)
// If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
// of log output. Defaults to false.
// +optional
timestamps?: bool @go(Timestamps) @protobuf(6,varint,opt)
// If set, the number of lines from the end of the logs to show. If not specified,
// logs are shown from the creation of the container or sinceSeconds or sinceTime
// +optional
tailLines?: null | int64 @go(TailLines,*int64) @protobuf(7,varint,opt)
// If set, the number of bytes to read from the server before terminating the
// log output. This may not display a complete final line of logging, and may return
// slightly more or slightly less than the specified limit.
// +optional
limitBytes?: null | int64 @go(LimitBytes,*int64) @protobuf(8,varint,opt)
// insecureSkipTLSVerifyBackend indicates that the apiserver should not confirm the validity of the
// serving certificate of the backend it is connecting to. This will make the HTTPS connection between the apiserver
// and the backend insecure. This means the apiserver cannot verify the log data it is receiving came from the real
// kubelet. If the kubelet is configured to verify the apiserver's TLS credentials, it does not mean the
// connection to the real kubelet is vulnerable to a man in the middle attack (e.g. an attacker could not intercept
// the actual log data coming from the real kubelet).
// +optional
insecureSkipTLSVerifyBackend?: bool @go(InsecureSkipTLSVerifyBackend) @protobuf(9,varint,opt)
}
// PodAttachOptions is the query options to a Pod's remote attach call.
// ---
// TODO: merge w/ PodExecOptions below for stdin, stdout, etc
// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
PodAttachOptions :: {
metav1.TypeMeta
// Stdin if true, redirects the standard input stream of the pod for this call.
// Defaults to false.
// +optional
stdin?: bool @go(Stdin) @protobuf(1,varint,opt)
// Stdout if true indicates that stdout is to be redirected for the attach call.
// Defaults to true.
// +optional
stdout?: bool @go(Stdout) @protobuf(2,varint,opt)
// Stderr if true indicates that stderr is to be redirected for the attach call.
// Defaults to true.
// +optional
stderr?: bool @go(Stderr) @protobuf(3,varint,opt)
// TTY if true indicates that a tty will be allocated for the attach call.
// This is passed through the container runtime so the tty
// is allocated on the worker node by the container runtime.
// Defaults to false.
// +optional
tty?: bool @go(TTY) @protobuf(4,varint,opt)
// The container in which to execute the command.
// Defaults to only container if there is only one container in the pod.
// +optional
container?: string @go(Container) @protobuf(5,bytes,opt)
}
// PodExecOptions is the query options to a Pod's remote exec call.
// ---
// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
PodExecOptions :: {
metav1.TypeMeta
// Redirect the standard input stream of the pod for this call.
// Defaults to false.
// +optional
stdin?: bool @go(Stdin) @protobuf(1,varint,opt)
// Redirect the standard output stream of the pod for this call.
// Defaults to true.
// +optional
stdout?: bool @go(Stdout) @protobuf(2,varint,opt)
// Redirect the standard error stream of the pod for this call.
// Defaults to true.
// +optional
stderr?: bool @go(Stderr) @protobuf(3,varint,opt)
// TTY if true indicates that a tty will be allocated for the exec call.
// Defaults to false.
// +optional
tty?: bool @go(TTY) @protobuf(4,varint,opt)
// Container in which to execute the command.
// Defaults to only container if there is only one container in the pod.
// +optional
container?: string @go(Container) @protobuf(5,bytes,opt)
// Command is the remote command to execute. argv array. Not executed within a shell.
command: [...string] @go(Command,[]string) @protobuf(6,bytes,rep)
}
// PodPortForwardOptions is the query options to a Pod's port forward call
// when using WebSockets.
// The `port` query parameter must specify the port or
// ports (comma separated) to forward over.
// Port forwarding over SPDY does not use these options. It requires the port
// to be passed in the `port` header as part of request.
PodPortForwardOptions :: {
metav1.TypeMeta
// List of ports to forward
// Required when using WebSockets
// +optional
ports?: [...int32] @go(Ports,[]int32) @protobuf(1,varint,rep)
}
// PodProxyOptions is the query options to a Pod's proxy call.
PodProxyOptions :: {
metav1.TypeMeta
// Path is the URL path to use for the current proxy request to pod.
// +optional
path?: string @go(Path) @protobuf(1,bytes,opt)
}
// NodeProxyOptions is the query options to a Node's proxy call.
NodeProxyOptions :: {
metav1.TypeMeta
// Path is the URL path to use for the current proxy request to node.
// +optional
path?: string @go(Path) @protobuf(1,bytes,opt)
}
// ServiceProxyOptions is the query options to a Service's proxy call.
ServiceProxyOptions :: {
metav1.TypeMeta
// Path is the part of URLs that include service endpoints, suffixes,
// and parameters to use for the current proxy request to service.
// For example, the whole request URL is
// http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
// Path is _search?q=user:kimchy.
// +optional
path?: string @go(Path) @protobuf(1,bytes,opt)
}
// ObjectReference contains enough information to let you inspect or modify the referred object.
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
ObjectReference :: {
// Kind of the referent.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
kind?: string @go(Kind) @protobuf(1,bytes,opt)
// Namespace of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
// +optional
namespace?: string @go(Namespace) @protobuf(2,bytes,opt)
// Name of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
// +optional
name?: string @go(Name) @protobuf(3,bytes,opt)
// UID of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
// +optional
uid?: types.UID @go(UID) @protobuf(4,bytes,opt,casttype=k8s.io/apimachinery/pkg/types.UID)
// API version of the referent.
// +optional
apiVersion?: string @go(APIVersion) @protobuf(5,bytes,opt)
// Specific resourceVersion to which this reference is made, if any.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
// +optional
resourceVersion?: string @go(ResourceVersion) @protobuf(6,bytes,opt)
// If referring to a piece of an object instead of an entire object, this string
// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
// For example, if the object reference is to a container within a pod, this would take on a value like:
// "spec.containers{name}" (where "name" refers to the name of the container that triggered
// the event) or if no container name is specified "spec.containers[2]" (container with
// index 2 in this pod). This syntax is chosen only to have some well-defined way of
// referencing a part of an object.
// TODO: this design is not final and this field is subject to change in the future.
// +optional
fieldPath?: string @go(FieldPath) @protobuf(7,bytes,opt)
}
// LocalObjectReference contains enough information to let you locate the
// referenced object inside the same namespace.
LocalObjectReference :: {
// Name of the referent.
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
// TODO: Add other useful fields. apiVersion, kind, uid?
// +optional
name?: string @go(Name) @protobuf(1,bytes,opt)
}
// TypedLocalObjectReference contains enough information to let you locate the
// typed referenced object inside the same namespace.
TypedLocalObjectReference :: {
// APIGroup is the group for the resource being referenced.
// If APIGroup is not specified, the specified Kind must be in the core API group.
// For any other third-party types, APIGroup is required.
// +optional
apiGroup: null | string @go(APIGroup,*string) @protobuf(1,bytes,opt)
// Kind is the type of resource being referenced
kind: string @go(Kind) @protobuf(2,bytes,opt)
// Name is the name of resource being referenced
name: string @go(Name) @protobuf(3,bytes,opt)
}
// SerializedReference is a reference to serialized object.
SerializedReference :: {
metav1.TypeMeta
// The reference to an object in the system.
// +optional
reference?: ObjectReference @go(Reference) @protobuf(1,bytes,opt)
}
// EventSource contains information for an event.
EventSource :: {
// Component from which the event is generated.
// +optional
component?: string @go(Component) @protobuf(1,bytes,opt)
// Node name on which the event is generated.
// +optional
host?: string @go(Host) @protobuf(2,bytes,opt)
}
// Information only and will not cause any problems
EventTypeNormal :: "Normal"
// These events are to warn that something might go wrong
EventTypeWarning :: "Warning"
// Event is a report of an event somewhere in the cluster.
Event :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
metadata: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// The object that this event is about.
involvedObject: ObjectReference @go(InvolvedObject) @protobuf(2,bytes,opt)
// This should be a short, machine understandable string that gives the reason
// for the transition into the object's current status.
// TODO: provide exact specification for format.
// +optional
reason?: string @go(Reason) @protobuf(3,bytes,opt)
// A human-readable description of the status of this operation.
// TODO: decide on maximum length.
// +optional
message?: string @go(Message) @protobuf(4,bytes,opt)
// The component reporting this event. Should be a short machine understandable string.
// +optional
source?: EventSource @go(Source) @protobuf(5,bytes,opt)
// The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
// +optional
firstTimestamp?: metav1.Time @go(FirstTimestamp) @protobuf(6,bytes,opt)
// The time at which the most recent occurrence of this event was recorded.
// +optional
lastTimestamp?: metav1.Time @go(LastTimestamp) @protobuf(7,bytes,opt)
// The number of times this event has occurred.
// +optional
count?: int32 @go(Count) @protobuf(8,varint,opt)
// Type of this event (Normal, Warning), new types could be added in the future
// +optional
type?: string @go(Type) @protobuf(9,bytes,opt)
// Time when this Event was first observed.
// +optional
eventTime?: metav1.MicroTime @go(EventTime) @protobuf(10,bytes,opt)
// Data about the Event series this event represents or nil if it's a singleton Event.
// +optional
series?: null | EventSeries @go(Series,*EventSeries) @protobuf(11,bytes,opt)
// What action was taken/failed regarding to the Regarding object.
// +optional
action?: string @go(Action) @protobuf(12,bytes,opt)
// Optional secondary object for more complex actions.
// +optional
related?: null | ObjectReference @go(Related,*ObjectReference) @protobuf(13,bytes,opt)
// Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
// +optional
reportingComponent: string @go(ReportingController) @protobuf(14,bytes,opt)
// ID of the controller instance, e.g. `kubelet-xyzf`.
// +optional
reportingInstance: string @go(ReportingInstance) @protobuf(15,bytes,opt)
}
// EventSeries contain information on series of events, i.e. thing that was/is happening
// continuously for some time.
EventSeries :: {
// Number of occurrences in this series up to the last heartbeat time
count?: int32 @go(Count) @protobuf(1,varint)
// Time of the last occurrence observed
lastObservedTime?: metav1.MicroTime @go(LastObservedTime) @protobuf(2,bytes)
// State of this Series: Ongoing or Finished
// Deprecated. Planned removal for 1.18
state?: EventSeriesState @go(State) @protobuf(3,bytes)
}
EventSeriesState :: string // enumEventSeriesState
enumEventSeriesState ::
EventSeriesStateOngoing |
EventSeriesStateFinished |
EventSeriesStateUnknown
EventSeriesStateOngoing :: EventSeriesState & "Ongoing"
EventSeriesStateFinished :: EventSeriesState & "Finished"
EventSeriesStateUnknown :: EventSeriesState & "Unknown"
// EventList is a list of events.
EventList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of events
items: [...Event] @go(Items,[]Event) @protobuf(2,bytes,rep)
}
// List holds a list of objects, which may not be known by the server.
List :: metav1.List
// LimitType is a type of object that is limited
LimitType :: string // enumLimitType
enumLimitType ::
LimitTypePod |
LimitTypeContainer |
LimitTypePersistentVolumeClaim
// Limit that applies to all pods in a namespace
LimitTypePod :: LimitType & "Pod"
// Limit that applies to all containers in a namespace
LimitTypeContainer :: LimitType & "Container"
// Limit that applies to all persistent volume claims in a namespace
LimitTypePersistentVolumeClaim :: LimitType & "PersistentVolumeClaim"
// LimitRangeItem defines a min/max usage limit for any resource that matches on kind.
LimitRangeItem :: {
// Type of resource that this limit applies to.
// +optional
type?: LimitType @go(Type) @protobuf(1,bytes,opt,casttype=LimitType)
// Max usage constraints on this kind by resource name.
// +optional
max?: ResourceList @go(Max) @protobuf(2,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// Min usage constraints on this kind by resource name.
// +optional
min?: ResourceList @go(Min) @protobuf(3,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// Default resource requirement limit value by resource name if resource limit is omitted.
// +optional
default?: ResourceList @go(Default) @protobuf(4,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
// +optional
defaultRequest?: ResourceList @go(DefaultRequest) @protobuf(5,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
// +optional
maxLimitRequestRatio?: ResourceList @go(MaxLimitRequestRatio) @protobuf(6,bytes,rep,casttype=ResourceList,castkey=ResourceName)
}
// LimitRangeSpec defines a min/max usage limit for resources that match on kind.
LimitRangeSpec :: {
// Limits is the list of LimitRangeItem objects that are enforced.
limits: [...LimitRangeItem] @go(Limits,[]LimitRangeItem) @protobuf(1,bytes,rep)
}
// LimitRange sets resource usage limits for each kind of resource in a Namespace.
LimitRange :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the limits enforced.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: LimitRangeSpec @go(Spec) @protobuf(2,bytes,opt)
}
// LimitRangeList is a list of LimitRange items.
LimitRangeList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// Items is a list of LimitRange objects.
// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
items: [...LimitRange] @go(Items,[]LimitRange) @protobuf(2,bytes,rep)
}
// Pods, number
ResourcePods :: ResourceName & "pods"
// Services, number
ResourceServices :: ResourceName & "services"
// ReplicationControllers, number
ResourceReplicationControllers :: ResourceName & "replicationcontrollers"
// ResourceQuotas, number
ResourceQuotas :: ResourceName & "resourcequotas"
// ResourceSecrets, number
ResourceSecrets :: ResourceName & "secrets"
// ResourceConfigMaps, number
ResourceConfigMaps :: ResourceName & "configmaps"
// ResourcePersistentVolumeClaims, number
ResourcePersistentVolumeClaims :: ResourceName & "persistentvolumeclaims"
// ResourceServicesNodePorts, number
ResourceServicesNodePorts :: ResourceName & "services.nodeports"
// ResourceServicesLoadBalancers, number
ResourceServicesLoadBalancers :: ResourceName & "services.loadbalancers"
// CPU request, in cores. (500m = .5 cores)
ResourceRequestsCPU :: ResourceName & "requests.cpu"
// Memory request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceRequestsMemory :: ResourceName & "requests.memory"
// Storage request, in bytes
ResourceRequestsStorage :: ResourceName & "requests.storage"
// Local ephemeral storage request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceRequestsEphemeralStorage :: ResourceName & "requests.ephemeral-storage"
// CPU limit, in cores. (500m = .5 cores)
ResourceLimitsCPU :: ResourceName & "limits.cpu"
// Memory limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceLimitsMemory :: ResourceName & "limits.memory"
// Local ephemeral storage limit, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
ResourceLimitsEphemeralStorage :: ResourceName & "limits.ephemeral-storage"
// HugePages request, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
// As burst is not supported for HugePages, we would only quota its request, and ignore the limit.
ResourceRequestsHugePagesPrefix :: "requests.hugepages-"
// Default resource requests prefix
DefaultResourceRequestsPrefix :: "requests."
// A ResourceQuotaScope defines a filter that must match each object tracked by a quota
ResourceQuotaScope :: string // enumResourceQuotaScope
enumResourceQuotaScope ::
ResourceQuotaScopeTerminating |
ResourceQuotaScopeNotTerminating |
ResourceQuotaScopeBestEffort |
ResourceQuotaScopeNotBestEffort |
ResourceQuotaScopePriorityClass
// Match all pod objects where spec.activeDeadlineSeconds
ResourceQuotaScopeTerminating :: ResourceQuotaScope & "Terminating"
// Match all pod objects where !spec.activeDeadlineSeconds
ResourceQuotaScopeNotTerminating :: ResourceQuotaScope & "NotTerminating"
// Match all pod objects that have best effort quality of service
ResourceQuotaScopeBestEffort :: ResourceQuotaScope & "BestEffort"
// Match all pod objects that do not have best effort quality of service
ResourceQuotaScopeNotBestEffort :: ResourceQuotaScope & "NotBestEffort"
// Match all pod objects that have priority class mentioned
ResourceQuotaScopePriorityClass :: ResourceQuotaScope & "PriorityClass"
// ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
ResourceQuotaSpec :: {
// hard is the set of desired hard limits for each named resource.
// More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
// +optional
hard?: ResourceList @go(Hard) @protobuf(1,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// A collection of filters that must match each object tracked by a quota.
// If not specified, the quota matches all objects.
// +optional
scopes?: [...ResourceQuotaScope] @go(Scopes,[]ResourceQuotaScope) @protobuf(2,bytes,rep,casttype=ResourceQuotaScope)
// scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
// but expressed using ScopeSelectorOperator in combination with possible values.
// For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
// +optional
scopeSelector?: null | ScopeSelector @go(ScopeSelector,*ScopeSelector) @protobuf(3,bytes,opt)
}
// A scope selector represents the AND of the selectors represented
// by the scoped-resource selector requirements.
ScopeSelector :: {
// A list of scope selector requirements by scope of the resources.
// +optional
matchExpressions?: [...ScopedResourceSelectorRequirement] @go(MatchExpressions,[]ScopedResourceSelectorRequirement) @protobuf(1,bytes,rep)
}
// A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
// that relates the scope name and values.
ScopedResourceSelectorRequirement :: {
// The name of the scope that the selector applies to.
scopeName: ResourceQuotaScope @go(ScopeName) @protobuf(1,bytes,opt)
// Represents a scope's relationship to a set of values.
// Valid operators are In, NotIn, Exists, DoesNotExist.
operator: ScopeSelectorOperator @go(Operator) @protobuf(2,bytes,opt,casttype=ScopedResourceSelectorOperator)
// An array of string values. If the operator is In or NotIn,
// the values array must be non-empty. If the operator is Exists or DoesNotExist,
// the values array must be empty.
// This array is replaced during a strategic merge patch.
// +optional
values?: [...string] @go(Values,[]string) @protobuf(3,bytes,rep)
}
// A scope selector operator is the set of operators that can be used in
// a scope selector requirement.
ScopeSelectorOperator :: string // enumScopeSelectorOperator
enumScopeSelectorOperator ::
ScopeSelectorOpIn |
ScopeSelectorOpNotIn |
ScopeSelectorOpExists |
ScopeSelectorOpDoesNotExist
ScopeSelectorOpIn :: ScopeSelectorOperator & "In"
ScopeSelectorOpNotIn :: ScopeSelectorOperator & "NotIn"
ScopeSelectorOpExists :: ScopeSelectorOperator & "Exists"
ScopeSelectorOpDoesNotExist :: ScopeSelectorOperator & "DoesNotExist"
// ResourceQuotaStatus defines the enforced hard limits and observed use.
ResourceQuotaStatus :: {
// Hard is the set of enforced hard limits for each named resource.
// More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
// +optional
hard?: ResourceList @go(Hard) @protobuf(1,bytes,rep,casttype=ResourceList,castkey=ResourceName)
// Used is the current observed total usage of the resource in the namespace.
// +optional
used?: ResourceList @go(Used) @protobuf(2,bytes,rep,casttype=ResourceList,castkey=ResourceName)
}
// ResourceQuota sets aggregate quota restrictions enforced per namespace
ResourceQuota :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Spec defines the desired quota.
// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
spec?: ResourceQuotaSpec @go(Spec) @protobuf(2,bytes,opt)
// Status defines the actual enforced quota and its current usage.
// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
// +optional
status?: ResourceQuotaStatus @go(Status) @protobuf(3,bytes,opt)
}
// ResourceQuotaList is a list of ResourceQuota items.
ResourceQuotaList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// Items is a list of ResourceQuota objects.
// More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
items: [...ResourceQuota] @go(Items,[]ResourceQuota) @protobuf(2,bytes,rep)
}
// Secret holds secret data of a certain type. The total bytes of the values in
// the Data field must be less than MaxSecretSize bytes.
Secret :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Data contains the secret data. Each key must consist of alphanumeric
// characters, '-', '_' or '.'. The serialized form of the secret data is a
// base64 encoded string, representing the arbitrary (possibly non-string)
// data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
// +optional
data?: {[string]: bytes} @go(Data,map[string][]byte) @protobuf(2,bytes,rep)
// stringData allows specifying non-binary secret data in string form.
// It is provided as a write-only convenience method.
// All keys and values are merged into the data field on write, overwriting any existing values.
// It is never output when reading from the API.
// +k8s:conversion-gen=false
// +optional
stringData?: {[string]: string} @go(StringData,map[string]string) @protobuf(4,bytes,rep)
// Used to facilitate programmatic handling of secret data.
// +optional
type?: SecretType @go(Type) @protobuf(3,bytes,opt,casttype=SecretType)
}
MaxSecretSize :: 1048576
SecretType :: string // enumSecretType
enumSecretType ::
SecretTypeOpaque |
SecretTypeServiceAccountToken |
SecretTypeDockercfg |
SecretTypeDockerConfigJson |
SecretTypeBasicAuth |
SecretTypeSSHAuth |
SecretTypeTLS |
SecretTypeBootstrapToken
// SecretTypeOpaque is the default. Arbitrary user-defined data
SecretTypeOpaque :: SecretType & "Opaque"
// SecretTypeServiceAccountToken contains a token that identifies a service account to the API
//
// Required fields:
// - Secret.Annotations["kubernetes.io/service-account.name"] - the name of the ServiceAccount the token identifies
// - Secret.Annotations["kubernetes.io/service-account.uid"] - the UID of the ServiceAccount the token identifies
// - Secret.Data["token"] - a token that identifies the service account to the API
SecretTypeServiceAccountToken :: SecretType & "kubernetes.io/service-account-token"
// ServiceAccountNameKey is the key of the required annotation for SecretTypeServiceAccountToken secrets
ServiceAccountNameKey :: "kubernetes.io/service-account.name"
// ServiceAccountUIDKey is the key of the required annotation for SecretTypeServiceAccountToken secrets
ServiceAccountUIDKey :: "kubernetes.io/service-account.uid"
// ServiceAccountTokenKey is the key of the required data for SecretTypeServiceAccountToken secrets
ServiceAccountTokenKey :: "token"
// ServiceAccountKubeconfigKey is the key of the optional kubeconfig data for SecretTypeServiceAccountToken secrets
ServiceAccountKubeconfigKey :: "kubernetes.kubeconfig"
// ServiceAccountRootCAKey is the key of the optional root certificate authority for SecretTypeServiceAccountToken secrets
ServiceAccountRootCAKey :: "ca.crt"
// ServiceAccountNamespaceKey is the key of the optional namespace to use as the default for namespaced API calls
ServiceAccountNamespaceKey :: "namespace"
// SecretTypeDockercfg contains a dockercfg file that follows the same format rules as ~/.dockercfg
//
// Required fields:
// - Secret.Data[".dockercfg"] - a serialized ~/.dockercfg file
SecretTypeDockercfg :: SecretType & "kubernetes.io/dockercfg"
// DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets
DockerConfigKey :: ".dockercfg"
// SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json
//
// Required fields:
// - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file
SecretTypeDockerConfigJson :: SecretType & "kubernetes.io/dockerconfigjson"
// DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets
DockerConfigJsonKey :: ".dockerconfigjson"
// SecretTypeBasicAuth contains data needed for basic authentication.
//
// Required at least one of fields:
// - Secret.Data["username"] - username used for authentication
// - Secret.Data["password"] - password or token needed for authentication
SecretTypeBasicAuth :: SecretType & "kubernetes.io/basic-auth"
// BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets
BasicAuthUsernameKey :: "username"
// BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets
BasicAuthPasswordKey :: "password"
// SecretTypeSSHAuth contains data needed for SSH authetication.
//
// Required field:
// - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication
SecretTypeSSHAuth :: SecretType & "kubernetes.io/ssh-auth"
// SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets
SSHAuthPrivateKey :: "ssh-privatekey"
// SecretTypeTLS contains information about a TLS client or server secret. It
// is primarily used with TLS termination of the Ingress resource, but may be
// used in other types.
//
// Required fields:
// - Secret.Data["tls.key"] - TLS private key.
// Secret.Data["tls.crt"] - TLS certificate.
// TODO: Consider supporting different formats, specifying CA/destinationCA.
SecretTypeTLS :: SecretType & "kubernetes.io/tls"
// TLSCertKey is the key for tls certificates in a TLS secert.
TLSCertKey :: "tls.crt"
// TLSPrivateKeyKey is the key for the private key field in a TLS secret.
TLSPrivateKeyKey :: "tls.key"
// SecretTypeBootstrapToken is used during the automated bootstrap process (first
// implemented by kubeadm). It stores tokens that are used to sign well known
// ConfigMaps. They are used for authn.
SecretTypeBootstrapToken :: SecretType & "bootstrap.kubernetes.io/token"
// SecretList is a list of Secret.
SecretList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// Items is a list of secret objects.
// More info: https://kubernetes.io/docs/concepts/configuration/secret
items: [...Secret] @go(Items,[]Secret) @protobuf(2,bytes,rep)
}
// ConfigMap holds configuration data for pods to consume.
ConfigMap :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Data contains the configuration data.
// Each key must consist of alphanumeric characters, '-', '_' or '.'.
// Values with non-UTF-8 byte sequences must use the BinaryData field.
// The keys stored in Data must not overlap with the keys in
// the BinaryData field, this is enforced during validation process.
// +optional
data?: {[string]: string} @go(Data,map[string]string) @protobuf(2,bytes,rep)
// BinaryData contains the binary data.
// Each key must consist of alphanumeric characters, '-', '_' or '.'.
// BinaryData can contain byte sequences that are not in the UTF-8 range.
// The keys stored in BinaryData must not overlap with the ones in
// the Data field, this is enforced during validation process.
// Using this field will require 1.10+ apiserver and
// kubelet.
// +optional
binaryData?: {[string]: bytes} @go(BinaryData,map[string][]byte) @protobuf(3,bytes,rep)
}
// ConfigMapList is a resource containing a list of ConfigMap objects.
ConfigMapList :: {
metav1.TypeMeta
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// Items is the list of ConfigMaps.
items: [...ConfigMap] @go(Items,[]ConfigMap) @protobuf(2,bytes,rep)
}
// Type and constants for component health validation.
ComponentConditionType :: string // enumComponentConditionType
enumComponentConditionType ::
ComponentHealthy
ComponentHealthy :: ComponentConditionType & "Healthy"
// Information about the condition of a component.
ComponentCondition :: {
// Type of condition for a component.
// Valid value: "Healthy"
type: ComponentConditionType @go(Type) @protobuf(1,bytes,opt,casttype=ComponentConditionType)
// Status of the condition for a component.
// Valid values for "Healthy": "True", "False", or "Unknown".
status: ConditionStatus @go(Status) @protobuf(2,bytes,opt,casttype=ConditionStatus)
// Message about the condition for a component.
// For example, information about a health check.
// +optional
message?: string @go(Message) @protobuf(3,bytes,opt)
// Condition error code for a component.
// For example, a health check error code.
// +optional
error?: string @go(Error) @protobuf(4,bytes,opt)
}
// ComponentStatus (and ComponentStatusList) holds the cluster validation info.
ComponentStatus :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// List of component conditions observed
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
conditions?: [...ComponentCondition] @go(Conditions,[]ComponentCondition) @protobuf(2,bytes,rep)
}
// Status of all the conditions for the component as a list of ComponentStatus objects.
ComponentStatusList :: {
metav1.TypeMeta
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metadata?: metav1.ListMeta @go(ListMeta) @protobuf(1,bytes,opt)
// List of ComponentStatus objects.
items: [...ComponentStatus] @go(Items,[]ComponentStatus) @protobuf(2,bytes,rep)
}
// DownwardAPIVolumeSource represents a volume containing downward API info.
// Downward API volumes support ownership management and SELinux relabeling.
DownwardAPIVolumeSource :: {
// Items is a list of downward API volume file
// +optional
items?: [...DownwardAPIVolumeFile] @go(Items,[]DownwardAPIVolumeFile) @protobuf(1,bytes,rep)
// Optional: mode bits to use on created files by default. Must be a
// value between 0 and 0777. 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?: null | int32 @go(DefaultMode,*int32) @protobuf(2,varint,opt)
}
DownwardAPIVolumeSourceDefaultMode :: int32 & 0o644
// DownwardAPIVolumeFile represents information to create the file containing the pod field
DownwardAPIVolumeFile :: {
// Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
path: string @go(Path) @protobuf(1,bytes,opt)
// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
// +optional
fieldRef?: null | ObjectFieldSelector @go(FieldRef,*ObjectFieldSelector) @protobuf(2,bytes,opt)
// Selects a resource of the container: only resources limits and requests
// (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
// +optional
resourceFieldRef?: null | ResourceFieldSelector @go(ResourceFieldRef,*ResourceFieldSelector) @protobuf(3,bytes,opt)
// Optional: mode bits to use on this file, must be a value between 0
// and 0777. If not specified, the volume defaultMode will be used.
// 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
mode?: null | int32 @go(Mode,*int32) @protobuf(4,varint,opt)
}
// Represents downward API info for projecting into a projected volume.
// Note that this is identical to a downwardAPI volume source without the default
// mode.
DownwardAPIProjection :: {
// Items is a list of DownwardAPIVolume file
// +optional
items?: [...DownwardAPIVolumeFile] @go(Items,[]DownwardAPIVolumeFile) @protobuf(1,bytes,rep)
}
// SecurityContext holds security configuration that will be applied to a container.
// Some fields are present in both SecurityContext and PodSecurityContext. When both
// are set, the values in SecurityContext take precedence.
SecurityContext :: {
// The capabilities to add/drop when running containers.
// Defaults to the default set of capabilities granted by the container runtime.
// +optional
capabilities?: null | Capabilities @go(Capabilities,*Capabilities) @protobuf(1,bytes,opt)
// Run container in privileged mode.
// Processes in privileged containers are essentially equivalent to root on the host.
// Defaults to false.
// +optional
privileged?: null | bool @go(Privileged,*bool) @protobuf(2,varint,opt)
// The SELinux context to be applied to the container.
// If unspecified, the container runtime will allocate a random SELinux context for each
// container. May also be set in PodSecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
seLinuxOptions?: null | SELinuxOptions @go(SELinuxOptions,*SELinuxOptions) @protobuf(3,bytes,opt)
// The Windows specific settings applied to all containers.
// If unspecified, the options from the PodSecurityContext will be used.
// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
windowsOptions?: null | WindowsSecurityContextOptions @go(WindowsOptions,*WindowsSecurityContextOptions) @protobuf(10,bytes,opt)
// The UID to run the entrypoint of the container process.
// Defaults to user specified in image metadata if unspecified.
// May also be set in PodSecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
runAsUser?: null | int64 @go(RunAsUser,*int64) @protobuf(4,varint,opt)
// The GID to run the entrypoint of the container process.
// Uses runtime default if unset.
// May also be set in PodSecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
runAsGroup?: null | int64 @go(RunAsGroup,*int64) @protobuf(8,varint,opt)
// Indicates that the container must run as a non-root user.
// If true, the Kubelet will validate the image at runtime to ensure that it
// does not run as UID 0 (root) and fail to start the container if it does.
// If unset or false, no such validation will be performed.
// May also be set in PodSecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// +optional
runAsNonRoot?: null | bool @go(RunAsNonRoot,*bool) @protobuf(5,varint,opt)
// Whether this container has a read-only root filesystem.
// Default is false.
// +optional
readOnlyRootFilesystem?: null | bool @go(ReadOnlyRootFilesystem,*bool) @protobuf(6,varint,opt)
// AllowPrivilegeEscalation controls whether a process can gain more
// privileges than its parent process. This bool directly controls if
// the no_new_privs flag will be set on the container process.
// AllowPrivilegeEscalation is true always when the container is:
// 1) run as Privileged
// 2) has CAP_SYS_ADMIN
// +optional
allowPrivilegeEscalation?: null | bool @go(AllowPrivilegeEscalation,*bool) @protobuf(7,varint,opt)
// procMount denotes the type of proc mount to use for the containers.
// The default is DefaultProcMount which uses the container runtime defaults for
// readonly paths and masked paths.
// This requires the ProcMountType feature flag to be enabled.
// +optional
procMount?: null | ProcMountType @go(ProcMount,*ProcMountType) @protobuf(9,bytes,opt)
}
ProcMountType :: string // enumProcMountType
enumProcMountType ::
DefaultProcMount |
UnmaskedProcMount
// DefaultProcMount uses the container runtime defaults for readonly and masked
// paths for /proc. Most container runtimes mask certain paths in /proc to avoid
// accidental security exposure of special devices or information.
DefaultProcMount :: ProcMountType & "Default"
// UnmaskedProcMount bypasses the default masking behavior of the container
// runtime and ensures the newly created /proc the container stays in tact with
// no modifications.
UnmaskedProcMount :: ProcMountType & "Unmasked"
// SELinuxOptions are the labels to be applied to the container
SELinuxOptions :: {
// User is a SELinux user label that applies to the container.
// +optional
user?: string @go(User) @protobuf(1,bytes,opt)
// Role is a SELinux role label that applies to the container.
// +optional
role?: string @go(Role) @protobuf(2,bytes,opt)
// Type is a SELinux type label that applies to the container.
// +optional
type?: string @go(Type) @protobuf(3,bytes,opt)
// Level is SELinux level label that applies to the container.
// +optional
level?: string @go(Level) @protobuf(4,bytes,opt)
}
// WindowsSecurityContextOptions contain Windows-specific options and credentials.
WindowsSecurityContextOptions :: {
// GMSACredentialSpecName is the name of the GMSA credential spec to use.
// This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
// +optional
gmsaCredentialSpecName?: null | string @go(GMSACredentialSpecName,*string) @protobuf(1,bytes,opt)
// GMSACredentialSpec is where the GMSA admission webhook
// (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
// GMSA credential spec named by the GMSACredentialSpecName field.
// This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
// +optional
gmsaCredentialSpec?: null | string @go(GMSACredentialSpec,*string) @protobuf(2,bytes,opt)
// The UserName in Windows to run the entrypoint of the container process.
// Defaults to the user specified in image metadata if unspecified.
// May also be set in PodSecurityContext. If set in both SecurityContext and
// PodSecurityContext, the value specified in SecurityContext takes precedence.
// This field is alpha-level and it is only honored by servers that enable the WindowsRunAsUserName feature flag.
// +optional
runAsUserName?: null | string @go(RunAsUserName,*string) @protobuf(3,bytes,opt)
}
// RangeAllocation is not a public type.
RangeAllocation :: {
metav1.TypeMeta
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metadata?: metav1.ObjectMeta @go(ObjectMeta) @protobuf(1,bytes,opt)
// Range is string that identifies the range represented by 'data'.
range: string @go(Range) @protobuf(2,bytes,opt)
// Data is a bit array containing all allocated addresses in the previous segment.
data: bytes @go(Data,[]byte) @protobuf(3,bytes,opt)
}
// "default-scheduler" is the name of default scheduler.
DefaultSchedulerName :: "default-scheduler"
// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
// corresponding to every RequiredDuringScheduling affinity rule.
// When the --hard-pod-affinity-weight scheduler flag is not specified,
// DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule.
DefaultHardPodAffinitySymmetricWeight :: int32 & 1
// Sysctl defines a kernel parameter to be set
Sysctl :: {
// Name of a property to set
name: string @go(Name) @protobuf(1,bytes,opt)
// Value of a property to set
value: string @go(Value) @protobuf(2,bytes,opt)
}
// NodeResources is an object for conveying resource information about a node.
// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.
NodeResources :: {
// Capacity represents the available resources of a node
Capacity: ResourceList @protobuf(1,bytes,rep,name=capacity,casttype=ResourceList,castkey=ResourceName)
}
// Enable stdin for remote command execution
ExecStdinParam :: "input"
// Enable stdout for remote command execution
ExecStdoutParam :: "output"
// Enable stderr for remote command execution
ExecStderrParam :: "error"
// Enable TTY for remote command execution
ExecTTYParam :: "tty"
// Command to run for remote command execution
ExecCommandParam :: "command"
// Name of header that specifies stream type
StreamType :: "streamType"
// Value for streamType header for stdin stream
StreamTypeStdin :: "stdin"
// Value for streamType header for stdout stream
StreamTypeStdout :: "stdout"
// Value for streamType header for stderr stream
StreamTypeStderr :: "stderr"
// Value for streamType header for data stream
StreamTypeData :: "data"
// Value for streamType header for error stream
StreamTypeError :: "error"
// Value for streamType header for terminal resize stream
StreamTypeResize :: "resize"
// Name of header that specifies the port being forwarded
PortHeader :: "port"
// Name of header that specifies a request ID used to associate the error
// and data streams for a single forwarded connection
PortForwardRequestIDHeader :: "requestID"