1package v1
2
3import (
4 "cue.dev/x/k8s.io/apimachinery/pkg/apis/meta/v1"
5 "cue.dev/x/k8s.io/apimachinery/pkg/api/resource"
6 "cue.dev/x/k8s.io/apimachinery/pkg/util/intstr"
7)
8
9// Represents a Persistent Disk resource in AWS.
10//
11// An AWS EBS disk must exist before mounting to a container. The
12// disk must also be in the same AWS zone as the kubelet. An AWS
13// EBS disk can only be mounted as read/write once. AWS EBS
14// volumes support ownership management and SELinux relabeling.
15#AWSElasticBlockStoreVolumeSource: {
16 // fsType is the filesystem type of the volume that you want to
17 // mount. Tip: Ensure that the filesystem type is supported by
18 // the host operating system. Examples: "ext4", "xfs", "ntfs".
19 // Implicitly inferred to be "ext4" if unspecified. More info:
20 // https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
21 "fsType"?: string
22
23 // partition is the partition in the volume that you want to
24 // mount. If omitted, the default is to mount by volume name.
25 // Examples: For volume /dev/sda1, you specify the partition as
26 // "1". Similarly, the volume partition for /dev/sda is "0" (or
27 // you can leave the property empty).
28 "partition"?: int32 & int
29
30 // readOnly value true will force the readOnly setting in
31 // VolumeMounts. More info:
32 // https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
33 "readOnly"?: bool
34
35 // volumeID is unique ID of the persistent disk resource in AWS
36 // (Amazon EBS volume). More info:
37 // https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
38 "volumeID"!: string
39}
40
41// Affinity is a group of affinity scheduling rules.
42#Affinity: {
43 // Describes node affinity scheduling rules for the pod.
44 "nodeAffinity"?: #NodeAffinity
45
46 // Describes pod affinity scheduling rules (e.g. co-locate this
47 // pod in the same node, zone, etc. as some other pod(s)).
48 "podAffinity"?: #PodAffinity
49
50 // Describes pod anti-affinity scheduling rules (e.g. avoid
51 // putting this pod in the same node, zone, etc. as some other
52 // pod(s)).
53 "podAntiAffinity"?: #PodAntiAffinity
54}
55
56// AppArmorProfile defines a pod or container's AppArmor settings.
57#AppArmorProfile: {
58 // localhostProfile indicates a profile loaded on the node that
59 // should be used. The profile must be preconfigured on the node
60 // to work. Must match the loaded name of the profile. Must be
61 // set if and only if type is "Localhost".
62 "localhostProfile"?: string
63
64 // type indicates which kind of AppArmor profile will be applied.
65 // Valid options are:
66 // Localhost - a profile pre-loaded on the node.
67 // RuntimeDefault - the container runtime's default profile.
68 // Unconfined - no AppArmor enforcement.
69 "type"!: string
70}
71
72// AttachedVolume describes a volume attached to a node
73#AttachedVolume: {
74 // DevicePath represents the device path where the volume should
75 // be available
76 "devicePath"!: string
77
78 // Name of the attached volume
79 "name"!: string
80}
81
82// AzureDisk represents an Azure Data Disk mount on the host and
83// bind mount to the pod.
84#AzureDiskVolumeSource: {
85 // cachingMode is the Host Caching mode: None, Read Only, Read
86 // Write.
87 "cachingMode"?: string
88
89 // diskName is the Name of the data disk in the blob storage
90 "diskName"!: string
91
92 // diskURI is the URI of data disk in the blob storage
93 "diskURI"!: string
94
95 // fsType is Filesystem type to mount. Must be a filesystem type
96 // supported by the host operating system. Ex. "ext4", "xfs",
97 // "ntfs". Implicitly inferred to be "ext4" if unspecified.
98 "fsType"?: string
99
100 // kind expected values are Shared: multiple blob disks per
101 // storage account Dedicated: single blob disk per storage
102 // account Managed: azure managed data disk (only in managed
103 // availability set). defaults to shared
104 "kind"?: string
105
106 // readOnly Defaults to false (read/write). ReadOnly here will
107 // force the ReadOnly setting in VolumeMounts.
108 "readOnly"?: bool
109}
110
111// AzureFile represents an Azure File Service mount on the host
112// and bind mount to the pod.
113#AzureFilePersistentVolumeSource: {
114 // readOnly defaults to false (read/write). ReadOnly here will
115 // force the ReadOnly setting in VolumeMounts.
116 "readOnly"?: bool
117
118 // secretName is the name of secret that contains Azure Storage
119 // Account Name and Key
120 "secretName"!: string
121
122 // secretNamespace is the namespace of the secret that contains
123 // Azure Storage Account Name and Key default is the same as the
124 // Pod
125 "secretNamespace"?: string
126
127 // shareName is the azure Share Name
128 "shareName"!: string
129}
130
131// AzureFile represents an Azure File Service mount on the host
132// and bind mount to the pod.
133#AzureFileVolumeSource: {
134 // readOnly defaults to false (read/write). ReadOnly here will
135 // force the ReadOnly setting in VolumeMounts.
136 "readOnly"?: bool
137
138 // secretName is the name of secret that contains Azure Storage
139 // Account Name and Key
140 "secretName"!: string
141
142 // shareName is the azure share Name
143 "shareName"!: string
144}
145
146// Binding ties one object to another; for example, a pod is bound
147// to a node by a scheduler.
148#Binding: {
149 // APIVersion defines the versioned schema of this representation
150 // of an object. Servers should convert recognized schemas to the
151 // latest internal value, and may reject unrecognized values.
152 // More info:
153 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
154 "apiVersion": "v1"
155
156 // Kind is a string value representing the REST resource this
157 // object represents. Servers may infer this from the endpoint
158 // the client submits requests to. Cannot be updated. In
159 // CamelCase. More info:
160 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
161 "kind": "Binding"
162
163 // Standard object's metadata. More info:
164 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
165 "metadata"?: v1.#ObjectMeta
166
167 // The target object that you want to bind to the standard object.
168 "target"!: #ObjectReference
169}
170
171// Represents storage that is managed by an external CSI volume
172// driver
173#CSIPersistentVolumeSource: {
174 // controllerExpandSecretRef is a reference to the secret object
175 // containing sensitive information to pass to the CSI driver to
176 // complete the CSI ControllerExpandVolume call. This field is
177 // optional, and may be empty if no secret is required. If the
178 // secret object contains more than one secret, all secrets are
179 // passed.
180 "controllerExpandSecretRef"?: #SecretReference
181
182 // controllerPublishSecretRef is a reference to the secret object
183 // containing sensitive information to pass to the CSI driver to
184 // complete the CSI ControllerPublishVolume and
185 // ControllerUnpublishVolume calls. This field is optional, and
186 // may be empty if no secret is required. If the secret object
187 // contains more than one secret, all secrets are passed.
188 "controllerPublishSecretRef"?: #SecretReference
189
190 // driver is the name of the driver to use for this volume.
191 // Required.
192 "driver"!: string
193
194 // fsType to mount. Must be a filesystem type supported by the
195 // host operating system. Ex. "ext4", "xfs", "ntfs".
196 "fsType"?: string
197
198 // nodeExpandSecretRef is a reference to the secret object
199 // containing sensitive information to pass to the CSI driver to
200 // complete the CSI NodeExpandVolume call. This field is
201 // optional, may be omitted if no secret is required. If the
202 // secret object contains more than one secret, all secrets are
203 // passed.
204 "nodeExpandSecretRef"?: #SecretReference
205
206 // nodePublishSecretRef is a reference to the secret object
207 // containing sensitive information to pass to the CSI driver to
208 // complete the CSI NodePublishVolume and NodeUnpublishVolume
209 // calls. This field is optional, and may be empty if no secret
210 // is required. If the secret object contains more than one
211 // secret, all secrets are passed.
212 "nodePublishSecretRef"?: #SecretReference
213
214 // nodeStageSecretRef is a reference to the secret object
215 // containing sensitive information to pass to the CSI driver to
216 // complete the CSI NodeStageVolume and NodeStageVolume and
217 // NodeUnstageVolume calls. This field is optional, and may be
218 // empty if no secret is required. If the secret object contains
219 // more than one secret, all secrets are passed.
220 "nodeStageSecretRef"?: #SecretReference
221
222 // readOnly value to pass to ControllerPublishVolumeRequest.
223 // Defaults to false (read/write).
224 "readOnly"?: bool
225
226 // volumeAttributes of the volume to publish.
227 "volumeAttributes"?: {
228 [string]: string
229 }
230
231 // volumeHandle is the unique volume name returned by the CSI
232 // volume plugin’s CreateVolume to refer to the volume on all
233 // subsequent calls. Required.
234 "volumeHandle"!: string
235}
236
237// Represents a source location of a volume to mount, managed by
238// an external CSI driver
239#CSIVolumeSource: {
240 // driver is the name of the CSI driver that handles this volume.
241 // Consult with your admin for the correct name as registered in
242 // the cluster.
243 "driver"!: string
244
245 // fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided,
246 // the empty value is passed to the associated CSI driver which
247 // will determine the default filesystem to apply.
248 "fsType"?: string
249
250 // nodePublishSecretRef is a reference to the secret object
251 // containing sensitive information to pass to the CSI driver to
252 // complete the CSI NodePublishVolume and NodeUnpublishVolume
253 // calls. This field is optional, and may be empty if no secret
254 // is required. If the secret object contains more than one
255 // secret, all secret references are passed.
256 "nodePublishSecretRef"?: #LocalObjectReference
257
258 // readOnly specifies a read-only configuration for the volume.
259 // Defaults to false (read/write).
260 "readOnly"?: bool
261
262 // volumeAttributes stores driver-specific properties that are
263 // passed to the CSI driver. Consult your driver's documentation
264 // for supported values.
265 "volumeAttributes"?: {
266 [string]: string
267 }
268}
269
270// Adds and removes POSIX capabilities from running containers.
271#Capabilities: {
272 // Added capabilities
273 "add"?: [...string]
274
275 // Removed capabilities
276 "drop"?: [...string]
277}
278
279// Represents a Ceph Filesystem mount that lasts the lifetime of a
280// pod Cephfs volumes do not support ownership management or
281// SELinux relabeling.
282#CephFSPersistentVolumeSource: {
283 // monitors is Required: Monitors is a collection of Ceph monitors
284 // More info:
285 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
286 "monitors"!: [...string]
287
288 // path is Optional: Used as the mounted root, rather than the
289 // full Ceph tree, default is /
290 "path"?: string
291
292 // readOnly is Optional: Defaults to false (read/write). ReadOnly
293 // here will force the ReadOnly setting in VolumeMounts. More
294 // info:
295 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
296 "readOnly"?: bool
297
298 // secretFile is Optional: SecretFile is the path to key ring for
299 // User, default is /etc/ceph/user.secret More info:
300 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
301 "secretFile"?: string
302
303 // secretRef is Optional: SecretRef is reference to the
304 // authentication secret for User, default is empty. More info:
305 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
306 "secretRef"?: #SecretReference
307
308 // user is Optional: User is the rados user name, default is admin
309 // More info:
310 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
311 "user"?: string
312}
313
314// Represents a Ceph Filesystem mount that lasts the lifetime of a
315// pod Cephfs volumes do not support ownership management or
316// SELinux relabeling.
317#CephFSVolumeSource: {
318 // monitors is Required: Monitors is a collection of Ceph monitors
319 // More info:
320 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
321 "monitors"!: [...string]
322
323 // path is Optional: Used as the mounted root, rather than the
324 // full Ceph tree, default is /
325 "path"?: string
326
327 // readOnly is Optional: Defaults to false (read/write). ReadOnly
328 // here will force the ReadOnly setting in VolumeMounts. More
329 // info:
330 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
331 "readOnly"?: bool
332
333 // secretFile is Optional: SecretFile is the path to key ring for
334 // User, default is /etc/ceph/user.secret More info:
335 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
336 "secretFile"?: string
337
338 // secretRef is Optional: SecretRef is reference to the
339 // authentication secret for User, default is empty. More info:
340 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
341 "secretRef"?: #LocalObjectReference
342
343 // user is optional: User is the rados user name, default is admin
344 // More info:
345 // https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
346 "user"?: string
347}
348
349// Represents a cinder volume resource in Openstack. A Cinder
350// volume must exist before mounting to a container. The volume
351// must also be in the same region as the kubelet. Cinder volumes
352// support ownership management and SELinux relabeling.
353#CinderPersistentVolumeSource: {
354 // fsType Filesystem type to mount. Must be a filesystem type
355 // supported by the host operating system. Examples: "ext4",
356 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
357 // unspecified. More info:
358 // https://examples.k8s.io/mysql-cinder-pd/README.md
359 "fsType"?: string
360
361 // readOnly is Optional: Defaults to false (read/write). ReadOnly
362 // here will force the ReadOnly setting in VolumeMounts. More
363 // info: https://examples.k8s.io/mysql-cinder-pd/README.md
364 "readOnly"?: bool
365
366 // secretRef is Optional: points to a secret object containing
367 // parameters used to connect to OpenStack.
368 "secretRef"?: #SecretReference
369
370 // volumeID used to identify the volume in cinder. More info:
371 // https://examples.k8s.io/mysql-cinder-pd/README.md
372 "volumeID"!: string
373}
374
375// Represents a cinder volume resource in Openstack. A Cinder
376// volume must exist before mounting to a container. The volume
377// must also be in the same region as the kubelet. Cinder volumes
378// support ownership management and SELinux relabeling.
379#CinderVolumeSource: {
380 // fsType is the filesystem type to mount. Must be a filesystem
381 // type supported by the host operating system. Examples: "ext4",
382 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
383 // unspecified. More info:
384 // https://examples.k8s.io/mysql-cinder-pd/README.md
385 "fsType"?: string
386
387 // readOnly defaults to false (read/write). ReadOnly here will
388 // force the ReadOnly setting in VolumeMounts. More info:
389 // https://examples.k8s.io/mysql-cinder-pd/README.md
390 "readOnly"?: bool
391
392 // secretRef is optional: points to a secret object containing
393 // parameters used to connect to OpenStack.
394 "secretRef"?: #LocalObjectReference
395
396 // volumeID used to identify the volume in cinder. More info:
397 // https://examples.k8s.io/mysql-cinder-pd/README.md
398 "volumeID"!: string
399}
400
401// ClientIPConfig represents the configurations of Client IP based
402// session affinity.
403#ClientIPConfig: {
404 // timeoutSeconds specifies the seconds of ClientIP type session
405 // sticky time. The value must be >0 && <=86400(for 1 day) if
406 // ServiceAffinity == "ClientIP". Default value is 10800(for 3
407 // hours).
408 "timeoutSeconds"?: int32 & int
409}
410
411// ClusterTrustBundleProjection describes how to select a set of
412// ClusterTrustBundle objects and project their contents into the
413// pod filesystem.
414#ClusterTrustBundleProjection: {
415 // Select all ClusterTrustBundles that match this label selector.
416 // Only has effect if signerName is set. Mutually-exclusive with
417 // name. If unset, interpreted as "match nothing". If set but
418 // empty, interpreted as "match everything".
419 "labelSelector"?: v1.#LabelSelector
420
421 // Select a single ClusterTrustBundle by object name.
422 // Mutually-exclusive with signerName and labelSelector.
423 "name"?: string
424
425 // If true, don't block pod startup if the referenced
426 // ClusterTrustBundle(s) aren't available. If using name, then
427 // the named ClusterTrustBundle is allowed not to exist. If using
428 // signerName, then the combination of signerName and
429 // labelSelector is allowed to match zero ClusterTrustBundles.
430 "optional"?: bool
431
432 // Relative path from the volume root to write the bundle.
433 "path"!: string
434
435 // Select all ClusterTrustBundles that match this signer name.
436 // Mutually-exclusive with name. The contents of all selected
437 // ClusterTrustBundles will be unified and deduplicated.
438 "signerName"?: string
439}
440
441// Information about the condition of a component.
442#ComponentCondition: {
443 // Condition error code for a component. For example, a health
444 // check error code.
445 "error"?: string
446
447 // Message about the condition for a component. For example,
448 // information about a health check.
449 "message"?: string
450
451 // Status of the condition for a component. Valid values for
452 // "Healthy": "True", "False", or "Unknown".
453 "status"!: string
454
455 // Type of condition for a component. Valid value: "Healthy"
456 "type"!: string
457}
458
459// ComponentStatus (and ComponentStatusList) holds the cluster
460// validation info. Deprecated: This API is deprecated in v1.19+
461#ComponentStatus: {
462 // APIVersion defines the versioned schema of this representation
463 // of an object. Servers should convert recognized schemas to the
464 // latest internal value, and may reject unrecognized values.
465 // More info:
466 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
467 "apiVersion": "v1"
468
469 // List of component conditions observed
470 "conditions"?: [...#ComponentCondition]
471
472 // Kind is a string value representing the REST resource this
473 // object represents. Servers may infer this from the endpoint
474 // the client submits requests to. Cannot be updated. In
475 // CamelCase. More info:
476 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
477 "kind": "ComponentStatus"
478
479 // Standard object's metadata. More info:
480 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
481 "metadata"?: v1.#ObjectMeta
482}
483
484// Status of all the conditions for the component as a list of
485// ComponentStatus objects. Deprecated: This API is deprecated in
486// v1.19+
487#ComponentStatusList: {
488 // APIVersion defines the versioned schema of this representation
489 // of an object. Servers should convert recognized schemas to the
490 // latest internal value, and may reject unrecognized values.
491 // More info:
492 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
493 "apiVersion": "v1"
494
495 // List of ComponentStatus objects.
496 "items"!: [...#ComponentStatus]
497
498 // Kind is a string value representing the REST resource this
499 // object represents. Servers may infer this from the endpoint
500 // the client submits requests to. Cannot be updated. In
501 // CamelCase. More info:
502 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
503 "kind": "ComponentStatusList"
504
505 // Standard list metadata. More info:
506 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
507 "metadata"?: v1.#ListMeta
508}
509
510// ConfigMap holds configuration data for pods to consume.
511#ConfigMap: {
512 // APIVersion defines the versioned schema of this representation
513 // of an object. Servers should convert recognized schemas to the
514 // latest internal value, and may reject unrecognized values.
515 // More info:
516 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
517 "apiVersion": "v1"
518
519 // BinaryData contains the binary data. Each key must consist of
520 // alphanumeric characters, '-', '_' or '.'. BinaryData can
521 // contain byte sequences that are not in the UTF-8 range. The
522 // keys stored in BinaryData must not overlap with the ones in
523 // the Data field, this is enforced during validation process.
524 // Using this field will require 1.10+ apiserver and kubelet.
525 "binaryData"?: {
526 [string]: string
527 }
528
529 // Data contains the configuration data. Each key must consist of
530 // alphanumeric characters, '-', '_' or '.'. Values with
531 // non-UTF-8 byte sequences must use the BinaryData field. The
532 // keys stored in Data must not overlap with the keys in the
533 // BinaryData field, this is enforced during validation process.
534 "data"?: {
535 [string]: string
536 }
537
538 // Immutable, if set to true, ensures that data stored in the
539 // ConfigMap cannot be updated (only object metadata can be
540 // modified). If not set to true, the field can be modified at
541 // any time. Defaulted to nil.
542 "immutable"?: bool
543
544 // Kind is a string value representing the REST resource this
545 // object represents. Servers may infer this from the endpoint
546 // the client submits requests to. Cannot be updated. In
547 // CamelCase. More info:
548 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
549 "kind": "ConfigMap"
550
551 // Standard object's metadata. More info:
552 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
553 "metadata"?: v1.#ObjectMeta
554}
555
556// ConfigMapEnvSource selects a ConfigMap to populate the
557// environment variables with.
558//
559// The contents of the target ConfigMap's Data field will
560// represent the key-value pairs as environment variables.
561#ConfigMapEnvSource: {
562 // Name of the referent. This field is effectively required, but
563 // due to backwards compatibility is allowed to be empty.
564 // Instances of this type with an empty value here are almost
565 // certainly wrong. More info:
566 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
567 "name"?: string
568
569 // Specify whether the ConfigMap must be defined
570 "optional"?: bool
571}
572
573// Selects a key from a ConfigMap.
574#ConfigMapKeySelector: {
575 // The key to select.
576 "key"!: string
577
578 // Name of the referent. This field is effectively required, but
579 // due to backwards compatibility is allowed to be empty.
580 // Instances of this type with an empty value here are almost
581 // certainly wrong. More info:
582 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
583 "name"?: string
584
585 // Specify whether the ConfigMap or its key must be defined
586 "optional"?: bool
587}
588
589// ConfigMapList is a resource containing a list of ConfigMap
590// objects.
591#ConfigMapList: {
592 // APIVersion defines the versioned schema of this representation
593 // of an object. Servers should convert recognized schemas to the
594 // latest internal value, and may reject unrecognized values.
595 // More info:
596 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
597 "apiVersion": "v1"
598
599 // Items is the list of ConfigMaps.
600 "items"!: [...#ConfigMap]
601
602 // Kind is a string value representing the REST resource this
603 // object represents. Servers may infer this from the endpoint
604 // the client submits requests to. Cannot be updated. In
605 // CamelCase. More info:
606 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
607 "kind": "ConfigMapList"
608
609 // More info:
610 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
611 "metadata"?: v1.#ListMeta
612}
613
614// ConfigMapNodeConfigSource contains the information to reference
615// a ConfigMap as a config source for the Node. This API is
616// deprecated since 1.22:
617// https://git.k8s.io/enhancements/keps/sig-node/281-dynamic-kubelet-configuration
618#ConfigMapNodeConfigSource: {
619 // KubeletConfigKey declares which key of the referenced ConfigMap
620 // corresponds to the KubeletConfiguration structure This field
621 // is required in all cases.
622 "kubeletConfigKey"!: string
623
624 // Name is the metadata.name of the referenced ConfigMap. This
625 // field is required in all cases.
626 "name"!: string
627
628 // Namespace is the metadata.namespace of the referenced
629 // ConfigMap. This field is required in all cases.
630 "namespace"!: string
631
632 // ResourceVersion is the metadata.ResourceVersion of the
633 // referenced ConfigMap. This field is forbidden in Node.Spec,
634 // and required in Node.Status.
635 "resourceVersion"?: string
636
637 // UID is the metadata.UID of the referenced ConfigMap. This field
638 // is forbidden in Node.Spec, and required in Node.Status.
639 "uid"?: string
640}
641
642// Adapts a ConfigMap into a projected volume.
643//
644// The contents of the target ConfigMap's Data field will be
645// presented in a projected volume as files using the keys in the
646// Data field as the file names, unless the items element is
647// populated with specific mappings of keys to paths. Note that
648// this is identical to a configmap volume source without the
649// default mode.
650#ConfigMapProjection: {
651 // items if unspecified, each key-value pair in the Data field of
652 // the referenced ConfigMap will be projected into the volume as
653 // a file whose name is the key and content is the value. If
654 // specified, the listed keys will be projected into the
655 // specified paths, and unlisted keys will not be present. If a
656 // key is specified which is not present in the ConfigMap, the
657 // volume setup will error unless it is marked optional. Paths
658 // must be relative and may not contain the '..' path or start
659 // with '..'.
660 "items"?: [...#KeyToPath]
661
662 // Name of the referent. This field is effectively required, but
663 // due to backwards compatibility is allowed to be empty.
664 // Instances of this type with an empty value here are almost
665 // certainly wrong. More info:
666 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
667 "name"?: string
668
669 // optional specify whether the ConfigMap or its keys must be
670 // defined
671 "optional"?: bool
672}
673
674// Adapts a ConfigMap into a volume.
675//
676// The contents of the target ConfigMap's Data field will be
677// presented in a volume as files using the keys in the Data
678// field as the file names, unless the items element is populated
679// with specific mappings of keys to paths. ConfigMap volumes
680// support ownership management and SELinux relabeling.
681#ConfigMapVolumeSource: {
682 // defaultMode is optional: mode bits used to set permissions on
683 // created files by default. Must be an octal value between 0000
684 // and 0777 or a decimal value between 0 and 511. YAML accepts
685 // both octal and decimal values, JSON requires decimal values
686 // for mode bits. Defaults to 0644. Directories within the path
687 // are not affected by this setting. This might be in conflict
688 // with other options that affect the file mode, like fsGroup,
689 // and the result can be other mode bits set.
690 "defaultMode"?: int32 & int
691
692 // items if unspecified, each key-value pair in the Data field of
693 // the referenced ConfigMap will be projected into the volume as
694 // a file whose name is the key and content is the value. If
695 // specified, the listed keys will be projected into the
696 // specified paths, and unlisted keys will not be present. If a
697 // key is specified which is not present in the ConfigMap, the
698 // volume setup will error unless it is marked optional. Paths
699 // must be relative and may not contain the '..' path or start
700 // with '..'.
701 "items"?: [...#KeyToPath]
702
703 // Name of the referent. This field is effectively required, but
704 // due to backwards compatibility is allowed to be empty.
705 // Instances of this type with an empty value here are almost
706 // certainly wrong. More info:
707 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
708 "name"?: string
709
710 // optional specify whether the ConfigMap or its keys must be
711 // defined
712 "optional"?: bool
713}
714
715// A single application container that you want to run within a
716// pod.
717#Container: {
718 // Arguments to the entrypoint. The container image's CMD is used
719 // if this is not provided. Variable references $(VAR_NAME) are
720 // expanded using the container's environment. If a variable
721 // cannot be resolved, the reference in the input string will be
722 // unchanged. Double $$ are reduced to a single $, which allows
723 // for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
724 // produce the string literal "$(VAR_NAME)". Escaped references
725 // will never be expanded, regardless of whether the variable
726 // exists or not. Cannot be updated. More info:
727 // https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
728 "args"?: [...string]
729
730 // Entrypoint array. Not executed within a shell. The container
731 // image's ENTRYPOINT is used if this is not provided. Variable
732 // references $(VAR_NAME) are expanded using the container's
733 // environment. If a variable cannot be resolved, the reference
734 // in the input string will be unchanged. Double $$ are reduced
735 // to a single $, which allows for escaping the $(VAR_NAME)
736 // syntax: i.e. "$$(VAR_NAME)" will produce the string literal
737 // "$(VAR_NAME)". Escaped references will never be expanded,
738 // regardless of whether the variable exists or not. Cannot be
739 // updated. More info:
740 // https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
741 "command"?: [...string]
742
743 // List of environment variables to set in the container. Cannot
744 // be updated.
745 "env"?: [...#EnvVar]
746
747 // List of sources to populate environment variables in the
748 // container. The keys defined within a source may consist of any
749 // printable ASCII characters except '='. When a key exists in
750 // multiple sources, the value associated with the last source
751 // will take precedence. Values defined by an Env with a
752 // duplicate key will take precedence. Cannot be updated.
753 "envFrom"?: [...#EnvFromSource]
754
755 // Container image name. More info:
756 // https://kubernetes.io/docs/concepts/containers/images This
757 // field is optional to allow higher level config management to
758 // default or override container images in workload controllers
759 // like Deployments and StatefulSets.
760 "image"?: string
761
762 // Image pull policy. One of Always, Never, IfNotPresent. Defaults
763 // to Always if :latest tag is specified, or IfNotPresent
764 // otherwise. Cannot be updated. More info:
765 // https://kubernetes.io/docs/concepts/containers/images#updating-images
766 "imagePullPolicy"?: string
767
768 // Actions that the management system should take in response to
769 // container lifecycle events. Cannot be updated.
770 "lifecycle"?: #Lifecycle
771
772 // Periodic probe of container liveness. Container will be
773 // restarted if the probe fails. Cannot be updated. More info:
774 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
775 "livenessProbe"?: #Probe
776
777 // Name of the container specified as a DNS_LABEL. Each container
778 // in a pod must have a unique name (DNS_LABEL). Cannot be
779 // updated.
780 "name"!: string
781
782 // List of ports to expose from the container. Not specifying a
783 // port here DOES NOT prevent that port from being exposed. Any
784 // port which is listening on the default "0.0.0.0" address
785 // inside a container will be accessible from the network.
786 // Modifying this array with strategic merge patch may corrupt
787 // the data. For more information See
788 // https://github.com/kubernetes/kubernetes/issues/108255. Cannot
789 // be updated.
790 "ports"?: [...#ContainerPort]
791
792 // Periodic probe of container service readiness. Container will
793 // be removed from service endpoints if the probe fails. Cannot
794 // be updated. More info:
795 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
796 "readinessProbe"?: #Probe
797
798 // Resources resize policy for the container. This field cannot be
799 // set on ephemeral containers.
800 "resizePolicy"?: [...#ContainerResizePolicy]
801
802 // Compute Resources required by this container. Cannot be
803 // updated. More info:
804 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
805 "resources"?: #ResourceRequirements
806
807 // RestartPolicy defines the restart behavior of individual
808 // containers in a pod. This overrides the pod-level restart
809 // policy. When this field is not specified, the restart behavior
810 // is defined by the Pod's restart policy and the container type.
811 // Additionally, setting the RestartPolicy as "Always" for the
812 // init container will have the following effect: this init
813 // container will be continually restarted on exit until all
814 // regular containers have terminated. Once all regular
815 // containers have completed, all init containers with
816 // restartPolicy "Always" will be shut down. This lifecycle
817 // differs from normal init containers and is often referred to
818 // as a "sidecar" container. Although this init container still
819 // starts in the init container sequence, it does not wait for
820 // the container to complete before proceeding to the next init
821 // container. Instead, the next init container starts immediately
822 // after this init container is started, or after any
823 // startupProbe has successfully completed.
824 "restartPolicy"?: string
825
826 // Represents a list of rules to be checked to determine if the
827 // container should be restarted on exit. The rules are evaluated
828 // in order. Once a rule matches a container exit condition, the
829 // remaining rules are ignored. If no rule matches the container
830 // exit condition, the Container-level restart policy determines
831 // the whether the container is restarted or not. Constraints on
832 // the rules: - At most 20 rules are allowed. - Rules can have
833 // the same action. - Identical rules are not forbidden in
834 // validations. When rules are specified, container MUST set
835 // RestartPolicy explicitly even it if matches the Pod's
836 // RestartPolicy.
837 "restartPolicyRules"?: [...#ContainerRestartRule]
838
839 // SecurityContext defines the security options the container
840 // should be run with. If set, the fields of SecurityContext
841 // override the equivalent fields of PodSecurityContext. More
842 // info:
843 // https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
844 "securityContext"?: #SecurityContext
845
846 // StartupProbe indicates that the Pod has successfully
847 // initialized. If specified, no other probes are executed until
848 // this completes successfully. If this probe fails, the Pod will
849 // be restarted, just as if the livenessProbe failed. This can be
850 // used to provide different probe parameters at the beginning of
851 // a Pod's lifecycle, when it might take a long time to load data
852 // or warm a cache, than during steady-state operation. This
853 // cannot be updated. More info:
854 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
855 "startupProbe"?: #Probe
856
857 // Whether this container should allocate a buffer for stdin in
858 // the container runtime. If this is not set, reads from stdin in
859 // the container will always result in EOF. Default is false.
860 "stdin"?: bool
861
862 // Whether the container runtime should close the stdin channel
863 // after it has been opened by a single attach. When stdin is
864 // true the stdin stream will remain open across multiple attach
865 // sessions. If stdinOnce is set to true, stdin is opened on
866 // container start, is empty until the first client attaches to
867 // stdin, and then remains open and accepts data until the client
868 // disconnects, at which time stdin is closed and remains closed
869 // until the container is restarted. If this flag is false, a
870 // container processes that reads from stdin will never receive
871 // an EOF. Default is false
872 "stdinOnce"?: bool
873
874 // Optional: Path at which the file to which the container's
875 // termination message will be written is mounted into the
876 // container's filesystem. Message written is intended to be
877 // brief final status, such as an assertion failure message. Will
878 // be truncated by the node if greater than 4096 bytes. The total
879 // message length across all containers will be limited to 12kb.
880 // Defaults to /dev/termination-log. Cannot be updated.
881 "terminationMessagePath"?: string
882
883 // Indicate how the termination message should be populated. File
884 // will use the contents of terminationMessagePath to populate
885 // the container status message on both success and failure.
886 // FallbackToLogsOnError will use the last chunk of container log
887 // output if the termination message file is empty and the
888 // container exited with an error. The log output is limited to
889 // 2048 bytes or 80 lines, whichever is smaller. Defaults to
890 // File. Cannot be updated.
891 "terminationMessagePolicy"?: string
892
893 // Whether this container should allocate a TTY for itself, also
894 // requires 'stdin' to be true. Default is false.
895 "tty"?: bool
896
897 // volumeDevices is the list of block devices to be used by the
898 // container.
899 "volumeDevices"?: [...#VolumeDevice]
900
901 // Pod volumes to mount into the container's filesystem. Cannot be
902 // updated.
903 "volumeMounts"?: [...#VolumeMount]
904
905 // Container's working directory. If not specified, the container
906 // runtime's default will be used, which might be configured in
907 // the container image. Cannot be updated.
908 "workingDir"?: string
909}
910
911// ContainerExtendedResourceRequest has the mapping of container
912// name, extended resource name to the device request name.
913#ContainerExtendedResourceRequest: {
914 // The name of the container requesting resources.
915 "containerName"!: string
916
917 // The name of the request in the special ResourceClaim which
918 // corresponds to the extended resource.
919 "requestName"!: string
920
921 // The name of the extended resource in that container which gets
922 // backed by DRA.
923 "resourceName"!: string
924}
925
926// Describe a container image
927#ContainerImage: {
928 // Names by which this image is known. e.g.
929 // ["kubernetes.example/hyperkube:v1.0.7",
930 // "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
931 "names"?: [...string]
932
933 // The size of the image in bytes.
934 "sizeBytes"?: int64 & int
935}
936
937// ContainerPort represents a network port in a single container.
938#ContainerPort: {
939 // Number of port to expose on the pod's IP address. This must be
940 // a valid port number, 0 < x < 65536.
941 "containerPort"!: int32 & int
942
943 // What host IP to bind the external port to.
944 "hostIP"?: string
945
946 // Number of port to expose on the host. If specified, this must
947 // be a valid port number, 0 < x < 65536. If HostNetwork is
948 // specified, this must match ContainerPort. Most containers do
949 // not need this.
950 "hostPort"?: int32 & int
951
952 // If specified, this must be an IANA_SVC_NAME and unique within
953 // the pod. Each named port in a pod must have a unique name.
954 // Name for the port that can be referred to by services.
955 "name"?: string
956
957 // Protocol for port. Must be UDP, TCP, or SCTP. Defaults to
958 // "TCP".
959 "protocol"?: string
960}
961
962// ContainerResizePolicy represents resource resize policy for the
963// container.
964#ContainerResizePolicy: {
965 // Name of the resource to which this resource resize policy
966 // applies. Supported values: cpu, memory.
967 "resourceName"!: string
968
969 // Restart policy to apply when specified resource is resized. If
970 // not specified, it defaults to NotRequired.
971 "restartPolicy"!: string
972}
973
974// ContainerRestartRule describes how a container exit is handled.
975#ContainerRestartRule: {
976 // Specifies the action taken on a container exit if the
977 // requirements are satisfied. The only possible value is
978 // "Restart" to restart the container.
979 "action"!: string
980
981 // Represents the exit codes to check on container exits.
982 "exitCodes"?: #ContainerRestartRuleOnExitCodes
983}
984
985// ContainerRestartRuleOnExitCodes describes the condition for
986// handling an exited container based on its exit codes.
987#ContainerRestartRuleOnExitCodes: {
988 // Represents the relationship between the container exit code(s)
989 // and the specified values. Possible values are: - In: the
990 // requirement is satisfied if the container exit code is in the
991 // set of specified values.
992 // - NotIn: the requirement is satisfied if the container exit
993 // code is
994 // not in the set of specified values.
995 "operator"!: string
996
997 // Specifies the set of values to check for container exit codes.
998 // At most 255 elements are allowed.
999 "values"?: [...int32 & int]
1000}
1001
1002// ContainerState holds a possible state of container. Only one of
1003// its members may be specified. If none of them is specified,
1004// the default one is ContainerStateWaiting.
1005#ContainerState: {
1006 // Details about a running container
1007 "running"?: #ContainerStateRunning
1008
1009 // Details about a terminated container
1010 "terminated"?: #ContainerStateTerminated
1011
1012 // Details about a waiting container
1013 "waiting"?: #ContainerStateWaiting
1014}
1015
1016// ContainerStateRunning is a running state of a container.
1017#ContainerStateRunning: {
1018 // Time at which the container was last (re-)started
1019 "startedAt"?: v1.#Time
1020}
1021
1022// ContainerStateTerminated is a terminated state of a container.
1023#ContainerStateTerminated: {
1024 // Container's ID in the format '<type>://<container_id>'
1025 "containerID"?: string
1026
1027 // Exit status from the last termination of the container
1028 "exitCode"!: int32 & int
1029
1030 // Time at which the container last terminated
1031 "finishedAt"?: v1.#Time
1032
1033 // Message regarding the last termination of the container
1034 "message"?: string
1035
1036 // (brief) reason from the last termination of the container
1037 "reason"?: string
1038
1039 // Signal from the last termination of the container
1040 "signal"?: int32 & int
1041
1042 // Time at which previous execution of the container started
1043 "startedAt"?: v1.#Time
1044}
1045
1046// ContainerStateWaiting is a waiting state of a container.
1047#ContainerStateWaiting: {
1048 // Message regarding why the container is not yet running.
1049 "message"?: string
1050
1051 // (brief) reason the container is not yet running.
1052 "reason"?: string
1053}
1054
1055// ContainerStatus contains details for the current status of this
1056// container.
1057#ContainerStatus: {
1058 // AllocatedResources represents the compute resources allocated
1059 // for this container by the node. Kubelet sets this value to
1060 // Container.Resources.Requests upon successful pod admission and
1061 // after successfully admitting desired pod resize.
1062 "allocatedResources"?: [string]: resource.#Quantity
1063
1064 // AllocatedResourcesStatus represents the status of various
1065 // resources allocated for this Pod.
1066 "allocatedResourcesStatus"?: [...#ResourceStatus]
1067
1068 // ContainerID is the ID of the container in the format
1069 // '<type>://<container_id>'. Where type is a container runtime
1070 // identifier, returned from Version call of CRI API (for example
1071 // "containerd").
1072 "containerID"?: string
1073
1074 // Image is the name of container image that the container is
1075 // running. The container image may not match the image used in
1076 // the PodSpec, as it may have been resolved by the runtime. More
1077 // info: https://kubernetes.io/docs/concepts/containers/images.
1078 "image"!: string
1079
1080 // ImageID is the image ID of the container's image. The image ID
1081 // may not match the image ID of the image used in the PodSpec,
1082 // as it may have been resolved by the runtime.
1083 "imageID"!: string
1084
1085 // LastTerminationState holds the last termination state of the
1086 // container to help debug container crashes and restarts. This
1087 // field is not populated if the container is still running and
1088 // RestartCount is 0.
1089 "lastState"?: #ContainerState
1090
1091 // Name is a DNS_LABEL representing the unique name of the
1092 // container. Each container in a pod must have a unique name
1093 // across all container types. Cannot be updated.
1094 "name"!: string
1095
1096 // Ready specifies whether the container is currently passing its
1097 // readiness check. The value will change as readiness probes
1098 // keep executing. If no readiness probes are specified, this
1099 // field defaults to true once the container is fully started
1100 // (see Started field).
1101 //
1102 // The value is typically used to determine whether a container is
1103 // ready to accept traffic.
1104 "ready"!: bool
1105
1106 // Resources represents the compute resource requests and limits
1107 // that have been successfully enacted on the running container
1108 // after it has been started or has been successfully resized.
1109 "resources"?: #ResourceRequirements
1110
1111 // RestartCount holds the number of times the container has been
1112 // restarted. Kubelet makes an effort to always increment the
1113 // value, but there are cases when the state may be lost due to
1114 // node restarts and then the value may be reset to 0. The value
1115 // is never negative.
1116 "restartCount"!: int32 & int
1117
1118 // Started indicates whether the container has finished its
1119 // postStart lifecycle hook and passed its startup probe.
1120 // Initialized as false, becomes true after startupProbe is
1121 // considered successful. Resets to false when the container is
1122 // restarted, or if kubelet loses state temporarily. In both
1123 // cases, startup probes will run again. Is always true when no
1124 // startupProbe is defined and container is running and has
1125 // passed the postStart lifecycle hook. The null value must be
1126 // treated the same as false.
1127 "started"?: bool
1128
1129 // State holds details about the container's current condition.
1130 "state"?: #ContainerState
1131
1132 // StopSignal reports the effective stop signal for this container
1133 "stopSignal"?: string
1134
1135 // User represents user identity information initially attached to
1136 // the first process of the container
1137 "user"?: #ContainerUser
1138
1139 // Status of volume mounts.
1140 "volumeMounts"?: [...#VolumeMountStatus]
1141}
1142
1143// ContainerUser represents user identity information
1144#ContainerUser: {
1145 // Linux holds user identity information initially attached to the
1146 // first process of the containers in Linux. Note that the actual
1147 // running identity can be changed if the process has enough
1148 // privilege to do so.
1149 "linux"?: #LinuxContainerUser
1150}
1151
1152// DaemonEndpoint contains information about a single Daemon
1153// endpoint.
1154#DaemonEndpoint: {
1155 // Port number of the given endpoint.
1156 "Port"!: int32 & int
1157}
1158
1159// Represents downward API info for projecting into a projected
1160// volume. Note that this is identical to a downwardAPI volume
1161// source without the default mode.
1162#DownwardAPIProjection: {
1163 // Items is a list of DownwardAPIVolume file
1164 "items"?: [...#DownwardAPIVolumeFile]
1165}
1166
1167// DownwardAPIVolumeFile represents information to create the file
1168// containing the pod field
1169#DownwardAPIVolumeFile: {
1170 // Required: Selects a field of the pod: only annotations, labels,
1171 // name, namespace and uid are supported.
1172 "fieldRef"?: #ObjectFieldSelector
1173
1174 // Optional: mode bits used to set permissions on this file, must
1175 // be an octal value between 0000 and 0777 or a decimal value
1176 // between 0 and 511. YAML accepts both octal and decimal values,
1177 // JSON requires decimal values for mode bits. If not specified,
1178 // the volume defaultMode will be used. This might be in conflict
1179 // with other options that affect the file mode, like fsGroup,
1180 // and the result can be other mode bits set.
1181 "mode"?: int32 & int
1182
1183 // Required: Path is the relative path name of the file to be
1184 // created. Must not be absolute or contain the '..' path. Must
1185 // be utf-8 encoded. The first item of the relative path must not
1186 // start with '..'
1187 "path"!: string
1188
1189 // Selects a resource of the container: only resources limits and
1190 // requests (limits.cpu, limits.memory, requests.cpu and
1191 // requests.memory) are currently supported.
1192 "resourceFieldRef"?: #ResourceFieldSelector
1193}
1194
1195// DownwardAPIVolumeSource represents a volume containing downward
1196// API info. Downward API volumes support ownership management
1197// and SELinux relabeling.
1198#DownwardAPIVolumeSource: {
1199 // Optional: mode bits to use on created files by default. Must be
1200 // a Optional: mode bits used to set permissions on created files
1201 // by default. Must be an octal value between 0000 and 0777 or a
1202 // decimal value between 0 and 511. YAML accepts both octal and
1203 // decimal values, JSON requires decimal values for mode bits.
1204 // Defaults to 0644. Directories within the path are not affected
1205 // by this setting. This might be in conflict with other options
1206 // that affect the file mode, like fsGroup, and the result can be
1207 // other mode bits set.
1208 "defaultMode"?: int32 & int
1209
1210 // Items is a list of downward API volume file
1211 "items"?: [...#DownwardAPIVolumeFile]
1212}
1213
1214// Represents an empty directory for a pod. Empty directory
1215// volumes support ownership management and SELinux relabeling.
1216#EmptyDirVolumeSource: {
1217 // medium represents what type of storage medium should back this
1218 // directory. The default is "" which means to use the node's
1219 // default medium. Must be an empty string (default) or Memory.
1220 // More info:
1221 // https://kubernetes.io/docs/concepts/storage/volumes#emptydir
1222 "medium"?: string
1223
1224 // sizeLimit is the total amount of local storage required for
1225 // this EmptyDir volume. The size limit is also applicable for
1226 // memory medium. The maximum usage on memory medium EmptyDir
1227 // would be the minimum value between the SizeLimit specified
1228 // here and the sum of memory limits of all containers in a pod.
1229 // The default is nil which means that the limit is undefined.
1230 // More info:
1231 // https://kubernetes.io/docs/concepts/storage/volumes#emptydir
1232 "sizeLimit"?: resource.#Quantity
1233}
1234
1235// EndpointAddress is a tuple that describes single IP address.
1236// Deprecated: This API is deprecated in v1.33+.
1237#EndpointAddress: {
1238 // The Hostname of this endpoint
1239 "hostname"?: string
1240
1241 // The IP of this endpoint. May not be loopback (127.0.0.0/8 or
1242 // ::1), link-local (169.254.0.0/16 or fe80::/10), or link-local
1243 // multicast (224.0.0.0/24 or ff02::/16).
1244 "ip"!: string
1245
1246 // Optional: Node hosting this endpoint. This can be used to
1247 // determine endpoints local to a node.
1248 "nodeName"?: string
1249
1250 // Reference to object providing the endpoint.
1251 "targetRef"?: #ObjectReference
1252}
1253
1254// EndpointPort is a tuple that describes a single port.
1255// Deprecated: This API is deprecated in v1.33+.
1256#EndpointPort: {
1257 // The application protocol for this port. This is used as a hint
1258 // for implementations to offer richer behavior for protocols
1259 // that they understand. This field follows standard Kubernetes
1260 // label syntax. Valid values are either:
1261 //
1262 // * Un-prefixed protocol names - reserved for IANA standard
1263 // service names (as per RFC-6335 and
1264 // https://www.iana.org/assignments/service-names).
1265 //
1266 // * Kubernetes-defined prefixed names:
1267 // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext
1268 // as described in
1269 // https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
1270 // * 'kubernetes.io/ws' - WebSocket over cleartext as described in
1271 // https://www.rfc-editor.org/rfc/rfc6455
1272 // * 'kubernetes.io/wss' - WebSocket over TLS as described in
1273 // https://www.rfc-editor.org/rfc/rfc6455
1274 //
1275 // * Other protocols should use implementation-defined prefixed
1276 // names such as mycompany.com/my-custom-protocol.
1277 "appProtocol"?: string
1278
1279 // The name of this port. This must match the 'name' field in the
1280 // corresponding ServicePort. Must be a DNS_LABEL. Optional only
1281 // if one port is defined.
1282 "name"?: string
1283
1284 // The port number of the endpoint.
1285 "port"!: int32 & int
1286
1287 // The IP protocol for this port. Must be UDP, TCP, or SCTP.
1288 // Default is TCP.
1289 "protocol"?: string
1290}
1291
1292// EndpointSubset is a group of addresses with a common set of
1293// ports. The expanded set of endpoints is the Cartesian product
1294// of Addresses x Ports. For example, given:
1295//
1296// {
1297// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
1298// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port":
1299// 309}]
1300// }
1301//
1302// The resulting set of endpoints can be viewed as:
1303//
1304// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
1305// b: [ 10.10.1.1:309, 10.10.2.2:309 ]
1306//
1307// Deprecated: This API is deprecated in v1.33+.
1308#EndpointSubset: {
1309 // IP addresses which offer the related ports that are marked as
1310 // ready. These endpoints should be considered safe for load
1311 // balancers and clients to utilize.
1312 "addresses"?: [...#EndpointAddress]
1313
1314 // IP addresses which offer the related ports but are not
1315 // currently marked as ready because they have not yet finished
1316 // starting, have recently failed a readiness check, or have
1317 // recently failed a liveness check.
1318 "notReadyAddresses"?: [...#EndpointAddress]
1319
1320 // Port numbers available on the related IP addresses.
1321 "ports"?: [...#EndpointPort]
1322}
1323
1324// Endpoints is a collection of endpoints that implement the
1325// actual service. Example:
1326//
1327// Name: "mysvc",
1328// Subsets: [
1329// {
1330// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
1331// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port":
1332// 309}]
1333// },
1334// {
1335// Addresses: [{"ip": "10.10.3.3"}],
1336// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
1337// },
1338// ]
1339//
1340// Endpoints is a legacy API and does not contain information
1341// about all Service features. Use discoveryv1.EndpointSlice for
1342// complete information about Service endpoints.
1343//
1344// Deprecated: This API is deprecated in v1.33+. Use
1345// discoveryv1.EndpointSlice.
1346#Endpoints: {
1347 // APIVersion defines the versioned schema of this representation
1348 // of an object. Servers should convert recognized schemas to the
1349 // latest internal value, and may reject unrecognized values.
1350 // More info:
1351 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1352 "apiVersion": "v1"
1353
1354 // Kind is a string value representing the REST resource this
1355 // object represents. Servers may infer this from the endpoint
1356 // the client submits requests to. Cannot be updated. In
1357 // CamelCase. More info:
1358 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1359 "kind": "Endpoints"
1360
1361 // Standard object's metadata. More info:
1362 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
1363 "metadata"?: v1.#ObjectMeta
1364
1365 // The set of all endpoints is the union of all subsets. Addresses
1366 // are placed into subsets according to the IPs they share. A
1367 // single address with multiple ports, some of which are ready
1368 // and some of which are not (because they come from different
1369 // containers) will result in the address being displayed in
1370 // different subsets for the different ports. No address will
1371 // appear in both Addresses and NotReadyAddresses in the same
1372 // subset. Sets of addresses and ports that comprise a service.
1373 "subsets"?: [...#EndpointSubset]
1374}
1375
1376// EndpointsList is a list of endpoints. Deprecated: This API is
1377// deprecated in v1.33+.
1378#EndpointsList: {
1379 // APIVersion defines the versioned schema of this representation
1380 // of an object. Servers should convert recognized schemas to the
1381 // latest internal value, and may reject unrecognized values.
1382 // More info:
1383 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1384 "apiVersion": "v1"
1385
1386 // List of endpoints.
1387 "items"!: [...#Endpoints]
1388
1389 // Kind is a string value representing the REST resource this
1390 // object represents. Servers may infer this from the endpoint
1391 // the client submits requests to. Cannot be updated. In
1392 // CamelCase. More info:
1393 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1394 "kind": "EndpointsList"
1395
1396 // Standard list metadata. More info:
1397 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1398 "metadata"?: v1.#ListMeta
1399}
1400
1401// EnvFromSource represents the source of a set of ConfigMaps or
1402// Secrets
1403#EnvFromSource: {
1404 // The ConfigMap to select from
1405 "configMapRef"?: #ConfigMapEnvSource
1406
1407 // Optional text to prepend to the name of each environment
1408 // variable. May consist of any printable ASCII characters except
1409 // '='.
1410 "prefix"?: string
1411
1412 // The Secret to select from
1413 "secretRef"?: #SecretEnvSource
1414}
1415
1416// EnvVar represents an environment variable present in a
1417// Container.
1418#EnvVar: {
1419 // Name of the environment variable. May consist of any printable
1420 // ASCII characters except '='.
1421 "name"!: string
1422
1423 // Variable references $(VAR_NAME) are expanded using the
1424 // previously defined environment variables in the container and
1425 // any service environment variables. If a variable cannot be
1426 // resolved, the reference in the input string will be unchanged.
1427 // Double $$ are reduced to a single $, which allows for escaping
1428 // the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the
1429 // string literal "$(VAR_NAME)". Escaped references will never be
1430 // expanded, regardless of whether the variable exists or not.
1431 // Defaults to "".
1432 "value"?: string
1433
1434 // Source for the environment variable's value. Cannot be used if
1435 // value is not empty.
1436 "valueFrom"?: #EnvVarSource
1437}
1438
1439// EnvVarSource represents a source for the value of an EnvVar.
1440#EnvVarSource: {
1441 // Selects a key of a ConfigMap.
1442 "configMapKeyRef"?: #ConfigMapKeySelector
1443
1444 // Selects a field of the pod: supports metadata.name,
1445 // metadata.namespace, `metadata.labels['<KEY>']`,
1446 // `metadata.annotations['<KEY>']`, spec.nodeName,
1447 // spec.serviceAccountName, status.hostIP, status.podIP,
1448 // status.podIPs.
1449 "fieldRef"?: #ObjectFieldSelector
1450
1451 // FileKeyRef selects a key of the env file. Requires the EnvFiles
1452 // feature gate to be enabled.
1453 "fileKeyRef"?: #FileKeySelector
1454
1455 // Selects a resource of the container: only resources limits and
1456 // requests (limits.cpu, limits.memory, limits.ephemeral-storage,
1457 // requests.cpu, requests.memory and requests.ephemeral-storage)
1458 // are currently supported.
1459 "resourceFieldRef"?: #ResourceFieldSelector
1460
1461 // Selects a key of a secret in the pod's namespace
1462 "secretKeyRef"?: #SecretKeySelector
1463}
1464
1465// An EphemeralContainer is a temporary container that you may add
1466// to an existing Pod for user-initiated activities such as
1467// debugging. Ephemeral containers have no resource or scheduling
1468// guarantees, and they will not be restarted when they exit or
1469// when a Pod is removed or restarted. The kubelet may evict a
1470// Pod if an ephemeral container causes the Pod to exceed its
1471// resource allocation.
1472//
1473// To add an ephemeral container, use the ephemeralcontainers
1474// subresource of an existing Pod. Ephemeral containers may not
1475// be removed or restarted.
1476#EphemeralContainer: {
1477 // Arguments to the entrypoint. The image's CMD is used if this is
1478 // not provided. Variable references $(VAR_NAME) are expanded
1479 // using the container's environment. If a variable cannot be
1480 // resolved, the reference in the input string will be unchanged.
1481 // Double $$ are reduced to a single $, which allows for escaping
1482 // the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the
1483 // string literal "$(VAR_NAME)". Escaped references will never be
1484 // expanded, regardless of whether the variable exists or not.
1485 // Cannot be updated. More info:
1486 // https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
1487 "args"?: [...string]
1488
1489 // Entrypoint array. Not executed within a shell. The image's
1490 // ENTRYPOINT is used if this is not provided. Variable
1491 // references $(VAR_NAME) are expanded using the container's
1492 // environment. If a variable cannot be resolved, the reference
1493 // in the input string will be unchanged. Double $$ are reduced
1494 // to a single $, which allows for escaping the $(VAR_NAME)
1495 // syntax: i.e. "$$(VAR_NAME)" will produce the string literal
1496 // "$(VAR_NAME)". Escaped references will never be expanded,
1497 // regardless of whether the variable exists or not. Cannot be
1498 // updated. More info:
1499 // https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
1500 "command"?: [...string]
1501
1502 // List of environment variables to set in the container. Cannot
1503 // be updated.
1504 "env"?: [...#EnvVar]
1505
1506 // List of sources to populate environment variables in the
1507 // container. The keys defined within a source may consist of any
1508 // printable ASCII characters except '='. When a key exists in
1509 // multiple sources, the value associated with the last source
1510 // will take precedence. Values defined by an Env with a
1511 // duplicate key will take precedence. Cannot be updated.
1512 "envFrom"?: [...#EnvFromSource]
1513
1514 // Container image name. More info:
1515 // https://kubernetes.io/docs/concepts/containers/images
1516 "image"?: string
1517
1518 // Image pull policy. One of Always, Never, IfNotPresent. Defaults
1519 // to Always if :latest tag is specified, or IfNotPresent
1520 // otherwise. Cannot be updated. More info:
1521 // https://kubernetes.io/docs/concepts/containers/images#updating-images
1522 "imagePullPolicy"?: string
1523
1524 // Lifecycle is not allowed for ephemeral containers.
1525 "lifecycle"?: #Lifecycle
1526
1527 // Probes are not allowed for ephemeral containers.
1528 "livenessProbe"?: #Probe
1529
1530 // Name of the ephemeral container specified as a DNS_LABEL. This
1531 // name must be unique among all containers, init containers and
1532 // ephemeral containers.
1533 "name"!: string
1534
1535 // Ports are not allowed for ephemeral containers.
1536 "ports"?: [...#ContainerPort]
1537
1538 // Probes are not allowed for ephemeral containers.
1539 "readinessProbe"?: #Probe
1540
1541 // Resources resize policy for the container.
1542 "resizePolicy"?: [...#ContainerResizePolicy]
1543
1544 // Resources are not allowed for ephemeral containers. Ephemeral
1545 // containers use spare resources already allocated to the pod.
1546 "resources"?: #ResourceRequirements
1547
1548 // Restart policy for the container to manage the restart behavior
1549 // of each container within a pod. You cannot set this field on
1550 // ephemeral containers.
1551 "restartPolicy"?: string
1552
1553 // Represents a list of rules to be checked to determine if the
1554 // container should be restarted on exit. You cannot set this
1555 // field on ephemeral containers.
1556 "restartPolicyRules"?: [...#ContainerRestartRule]
1557
1558 // Optional: SecurityContext defines the security options the
1559 // ephemeral container should be run with. If set, the fields of
1560 // SecurityContext override the equivalent fields of
1561 // PodSecurityContext.
1562 "securityContext"?: #SecurityContext
1563
1564 // Probes are not allowed for ephemeral containers.
1565 "startupProbe"?: #Probe
1566
1567 // Whether this container should allocate a buffer for stdin in
1568 // the container runtime. If this is not set, reads from stdin in
1569 // the container will always result in EOF. Default is false.
1570 "stdin"?: bool
1571
1572 // Whether the container runtime should close the stdin channel
1573 // after it has been opened by a single attach. When stdin is
1574 // true the stdin stream will remain open across multiple attach
1575 // sessions. If stdinOnce is set to true, stdin is opened on
1576 // container start, is empty until the first client attaches to
1577 // stdin, and then remains open and accepts data until the client
1578 // disconnects, at which time stdin is closed and remains closed
1579 // until the container is restarted. If this flag is false, a
1580 // container processes that reads from stdin will never receive
1581 // an EOF. Default is false
1582 "stdinOnce"?: bool
1583
1584 // If set, the name of the container from PodSpec that this
1585 // ephemeral container targets. The ephemeral container will be
1586 // run in the namespaces (IPC, PID, etc) of this container. If
1587 // not set then the ephemeral container uses the namespaces
1588 // configured in the Pod spec.
1589 //
1590 // The container runtime must implement support for this feature.
1591 // If the runtime does not support namespace targeting then the
1592 // result of setting this field is undefined.
1593 "targetContainerName"?: string
1594
1595 // Optional: Path at which the file to which the container's
1596 // termination message will be written is mounted into the
1597 // container's filesystem. Message written is intended to be
1598 // brief final status, such as an assertion failure message. Will
1599 // be truncated by the node if greater than 4096 bytes. The total
1600 // message length across all containers will be limited to 12kb.
1601 // Defaults to /dev/termination-log. Cannot be updated.
1602 "terminationMessagePath"?: string
1603
1604 // Indicate how the termination message should be populated. File
1605 // will use the contents of terminationMessagePath to populate
1606 // the container status message on both success and failure.
1607 // FallbackToLogsOnError will use the last chunk of container log
1608 // output if the termination message file is empty and the
1609 // container exited with an error. The log output is limited to
1610 // 2048 bytes or 80 lines, whichever is smaller. Defaults to
1611 // File. Cannot be updated.
1612 "terminationMessagePolicy"?: string
1613
1614 // Whether this container should allocate a TTY for itself, also
1615 // requires 'stdin' to be true. Default is false.
1616 "tty"?: bool
1617
1618 // volumeDevices is the list of block devices to be used by the
1619 // container.
1620 "volumeDevices"?: [...#VolumeDevice]
1621
1622 // Pod volumes to mount into the container's filesystem. Subpath
1623 // mounts are not allowed for ephemeral containers. Cannot be
1624 // updated.
1625 "volumeMounts"?: [...#VolumeMount]
1626
1627 // Container's working directory. If not specified, the container
1628 // runtime's default will be used, which might be configured in
1629 // the container image. Cannot be updated.
1630 "workingDir"?: string
1631}
1632
1633// Represents an ephemeral volume that is handled by a normal
1634// storage driver.
1635#EphemeralVolumeSource: {
1636 // Will be used to create a stand-alone PVC to provision the
1637 // volume. The pod in which this EphemeralVolumeSource is
1638 // embedded will be the owner of the PVC, i.e. the PVC will be
1639 // deleted together with the pod. The name of the PVC will be
1640 // `<pod name>-<volume name>` where `<volume name>` is the name
1641 // from the `PodSpec.Volumes` array entry. Pod validation will
1642 // reject the pod if the concatenated name is not valid for a PVC
1643 // (for example, too long).
1644 //
1645 // An existing PVC with that name that is not owned by the pod
1646 // will *not* be used for the pod to avoid using an unrelated
1647 // volume by mistake. Starting the pod is then blocked until the
1648 // unrelated PVC is removed. If such a pre-created PVC is meant
1649 // to be used by the pod, the PVC has to updated with an owner
1650 // reference to the pod once the pod exists. Normally this should
1651 // not be necessary, but it may be useful when manually
1652 // reconstructing a broken cluster.
1653 //
1654 // This field is read-only and no changes will be made by
1655 // Kubernetes to the PVC after it has been created.
1656 //
1657 // Required, must not be nil.
1658 "volumeClaimTemplate"?: #PersistentVolumeClaimTemplate
1659}
1660
1661// Event is a report of an event somewhere in the cluster. Events
1662// have a limited retention time and triggers and messages may
1663// evolve with time. Event consumers should not rely on the
1664// timing of an event with a given Reason reflecting a consistent
1665// underlying trigger, or the continued existence of events with
1666// that Reason. Events should be treated as informative,
1667// best-effort, supplemental data.
1668#Event: {
1669 // What action was taken/failed regarding to the Regarding object.
1670 "action"?: string
1671
1672 // APIVersion defines the versioned schema of this representation
1673 // of an object. Servers should convert recognized schemas to the
1674 // latest internal value, and may reject unrecognized values.
1675 // More info:
1676 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1677 "apiVersion": "v1"
1678
1679 // The number of times this event has occurred.
1680 "count"?: int32 & int
1681
1682 // Time when this Event was first observed.
1683 "eventTime"?: v1.#MicroTime
1684
1685 // The time at which the event was first recorded. (Time of server
1686 // receipt is in TypeMeta.)
1687 "firstTimestamp"?: v1.#Time
1688
1689 // The object that this event is about.
1690 "involvedObject"!: #ObjectReference
1691
1692 // Kind is a string value representing the REST resource this
1693 // object represents. Servers may infer this from the endpoint
1694 // the client submits requests to. Cannot be updated. In
1695 // CamelCase. More info:
1696 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1697 "kind": "Event"
1698
1699 // The time at which the most recent occurrence of this event was
1700 // recorded.
1701 "lastTimestamp"?: v1.#Time
1702
1703 // A human-readable description of the status of this operation.
1704 "message"?: string
1705
1706 // Standard object's metadata. More info:
1707 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
1708 "metadata"!: v1.#ObjectMeta
1709
1710 // This should be a short, machine understandable string that
1711 // gives the reason for the transition into the object's current
1712 // status.
1713 "reason"?: string
1714
1715 // Optional secondary object for more complex actions.
1716 "related"?: #ObjectReference
1717
1718 // Name of the controller that emitted this Event, e.g.
1719 // `kubernetes.io/kubelet`.
1720 "reportingComponent"?: string
1721
1722 // ID of the controller instance, e.g. `kubelet-xyzf`.
1723 "reportingInstance"?: string
1724
1725 // Data about the Event series this event represents or nil if
1726 // it's a singleton Event.
1727 "series"?: #EventSeries
1728
1729 // The component reporting this event. Should be a short machine
1730 // understandable string.
1731 "source"?: #EventSource
1732
1733 // Type of this event (Normal, Warning), new types could be added
1734 // in the future
1735 "type"?: string
1736}
1737
1738// EventList is a list of events.
1739#EventList: {
1740 // APIVersion defines the versioned schema of this representation
1741 // of an object. Servers should convert recognized schemas to the
1742 // latest internal value, and may reject unrecognized values.
1743 // More info:
1744 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
1745 "apiVersion": "v1"
1746
1747 // List of events
1748 "items"!: [...#Event]
1749
1750 // Kind is a string value representing the REST resource this
1751 // object represents. Servers may infer this from the endpoint
1752 // the client submits requests to. Cannot be updated. In
1753 // CamelCase. More info:
1754 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1755 "kind": "EventList"
1756
1757 // Standard list metadata. More info:
1758 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
1759 "metadata"?: v1.#ListMeta
1760}
1761
1762// EventSeries contain information on series of events, i.e. thing
1763// that was/is happening continuously for some time.
1764#EventSeries: {
1765 // Number of occurrences in this series up to the last heartbeat
1766 // time
1767 "count"?: int32 & int
1768
1769 // Time of the last occurrence observed
1770 "lastObservedTime"?: v1.#MicroTime
1771}
1772
1773// EventSource contains information for an event.
1774#EventSource: {
1775 // Component from which the event is generated.
1776 "component"?: string
1777
1778 // Node name on which the event is generated.
1779 "host"?: string
1780}
1781
1782// ExecAction describes a "run in container" action.
1783#ExecAction: {
1784 // Command is the command line to execute inside the container,
1785 // the working directory for the command is root ('/') in the
1786 // container's filesystem. The command is simply exec'd, it is
1787 // not run inside a shell, so traditional shell instructions
1788 // ('|', etc) won't work. To use a shell, you need to explicitly
1789 // call out to that shell. Exit status of 0 is treated as
1790 // live/healthy and non-zero is unhealthy.
1791 "command"?: [...string]
1792}
1793
1794// Represents a Fibre Channel volume. Fibre Channel volumes can
1795// only be mounted as read/write once. Fibre Channel volumes
1796// support ownership management and SELinux relabeling.
1797#FCVolumeSource: {
1798 // fsType is the filesystem type to mount. Must be a filesystem
1799 // type supported by the host operating system. Ex. "ext4",
1800 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
1801 // unspecified.
1802 "fsType"?: string
1803
1804 // lun is Optional: FC target lun number
1805 "lun"?: int32 & int
1806
1807 // readOnly is Optional: Defaults to false (read/write). ReadOnly
1808 // here will force the ReadOnly setting in VolumeMounts.
1809 "readOnly"?: bool
1810
1811 // targetWWNs is Optional: FC target worldwide names (WWNs)
1812 "targetWWNs"?: [...string]
1813
1814 // wwids Optional: FC volume world wide identifiers (wwids) Either
1815 // wwids or combination of targetWWNs and lun must be set, but
1816 // not both simultaneously.
1817 "wwids"?: [...string]
1818}
1819
1820// FileKeySelector selects a key of the env file.
1821#FileKeySelector: {
1822 // The key within the env file. An invalid key will prevent the
1823 // pod from starting. The keys defined within a source may
1824 // consist of any printable ASCII characters except '='. During
1825 // Alpha stage of the EnvFiles feature gate, the key size is
1826 // limited to 128 characters.
1827 "key"!: string
1828
1829 // Specify whether the file or its key must be defined. If the
1830 // file or key does not exist, then the env var is not published.
1831 // If optional is set to true and the specified key does not
1832 // exist, the environment variable will not be set in the Pod's
1833 // containers.
1834 //
1835 // If optional is set to false and the specified key does not
1836 // exist, an error will be returned during Pod creation.
1837 "optional"?: bool
1838
1839 // The path within the volume from which to select the file. Must
1840 // be relative and may not contain the '..' path or start with
1841 // '..'.
1842 "path"!: string
1843
1844 // The name of the volume mount containing the env file.
1845 "volumeName"!: string
1846}
1847
1848// FlexPersistentVolumeSource represents a generic persistent
1849// volume resource that is provisioned/attached using an exec
1850// based plugin.
1851#FlexPersistentVolumeSource: {
1852 // driver is the name of the driver to use for this volume.
1853 "driver"!: string
1854
1855 // fsType is the Filesystem type to mount. Must be a filesystem
1856 // type supported by the host operating system. Ex. "ext4",
1857 // "xfs", "ntfs". The default filesystem depends on FlexVolume
1858 // script.
1859 "fsType"?: string
1860
1861 // options is Optional: this field holds extra command options if
1862 // any.
1863 "options"?: {
1864 [string]: string
1865 }
1866
1867 // readOnly is Optional: defaults to false (read/write). ReadOnly
1868 // here will force the ReadOnly setting in VolumeMounts.
1869 "readOnly"?: bool
1870
1871 // secretRef is Optional: SecretRef is reference to the secret
1872 // object containing sensitive information to pass to the plugin
1873 // scripts. This may be empty if no secret object is specified.
1874 // If the secret object contains more than one secret, all
1875 // secrets are passed to the plugin scripts.
1876 "secretRef"?: #SecretReference
1877}
1878
1879// FlexVolume represents a generic volume resource that is
1880// provisioned/attached using an exec based plugin.
1881#FlexVolumeSource: {
1882 // driver is the name of the driver to use for this volume.
1883 "driver"!: string
1884
1885 // fsType is the filesystem type to mount. Must be a filesystem
1886 // type supported by the host operating system. Ex. "ext4",
1887 // "xfs", "ntfs". The default filesystem depends on FlexVolume
1888 // script.
1889 "fsType"?: string
1890
1891 // options is Optional: this field holds extra command options if
1892 // any.
1893 "options"?: {
1894 [string]: string
1895 }
1896
1897 // readOnly is Optional: defaults to false (read/write). ReadOnly
1898 // here will force the ReadOnly setting in VolumeMounts.
1899 "readOnly"?: bool
1900
1901 // secretRef is Optional: secretRef is reference to the secret
1902 // object containing sensitive information to pass to the plugin
1903 // scripts. This may be empty if no secret object is specified.
1904 // If the secret object contains more than one secret, all
1905 // secrets are passed to the plugin scripts.
1906 "secretRef"?: #LocalObjectReference
1907}
1908
1909// Represents a Flocker volume mounted by the Flocker agent. One
1910// and only one of datasetName and datasetUUID should be set.
1911// Flocker volumes do not support ownership management or SELinux
1912// relabeling.
1913#FlockerVolumeSource: {
1914 // datasetName is Name of the dataset stored as metadata -> name
1915 // on the dataset for Flocker should be considered as deprecated
1916 "datasetName"?: string
1917
1918 // datasetUUID is the UUID of the dataset. This is unique
1919 // identifier of a Flocker dataset
1920 "datasetUUID"?: string
1921}
1922
1923// Represents a Persistent Disk resource in Google Compute Engine.
1924//
1925// A GCE PD must exist before mounting to a container. The disk
1926// must also be in the same GCE project and zone as the kubelet.
1927// A GCE PD can only be mounted as read/write once or read-only
1928// many times. GCE PDs support ownership management and SELinux
1929// relabeling.
1930#GCEPersistentDiskVolumeSource: {
1931 // fsType is filesystem type of the volume that you want to mount.
1932 // Tip: Ensure that the filesystem type is supported by the host
1933 // operating system. Examples: "ext4", "xfs", "ntfs". Implicitly
1934 // inferred to be "ext4" if unspecified. More info:
1935 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1936 "fsType"?: string
1937
1938 // partition is the partition in the volume that you want to
1939 // mount. If omitted, the default is to mount by volume name.
1940 // Examples: For volume /dev/sda1, you specify the partition as
1941 // "1". Similarly, the volume partition for /dev/sda is "0" (or
1942 // you can leave the property empty). More info:
1943 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1944 "partition"?: int32 & int
1945
1946 // pdName is unique name of the PD resource in GCE. Used to
1947 // identify the disk in GCE. More info:
1948 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1949 "pdName"!: string
1950
1951 // readOnly here will force the ReadOnly setting in VolumeMounts.
1952 // Defaults to false. More info:
1953 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1954 "readOnly"?: bool
1955}
1956
1957// GRPCAction specifies an action involving a GRPC service.
1958#GRPCAction: {
1959 // Port number of the gRPC service. Number must be in the range 1
1960 // to 65535.
1961 "port"!: int32 & int
1962
1963 // Service is the name of the service to place in the gRPC
1964 // HealthCheckRequest (see
1965 // https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
1966 //
1967 // If this is not specified, the default behavior is defined by
1968 // gRPC.
1969 "service"?: string
1970}
1971
1972// Represents a volume that is populated with the contents of a
1973// git repository. Git repo volumes do not support ownership
1974// management. Git repo volumes support SELinux relabeling.
1975//
1976// DEPRECATED: GitRepo is deprecated. To provision a container
1977// with a git repo, mount an EmptyDir into an InitContainer that
1978// clones the repo using git, then mount the EmptyDir into the
1979// Pod's container.
1980#GitRepoVolumeSource: {
1981 // directory is the target directory name. Must not contain or
1982 // start with '..'. If '.' is supplied, the volume directory will
1983 // be the git repository. Otherwise, if specified, the volume
1984 // will contain the git repository in the subdirectory with the
1985 // given name.
1986 "directory"?: string
1987
1988 // repository is the URL
1989 "repository"!: string
1990
1991 // revision is the commit hash for the specified revision.
1992 "revision"?: string
1993}
1994
1995// Represents a Glusterfs mount that lasts the lifetime of a pod.
1996// Glusterfs volumes do not support ownership management or
1997// SELinux relabeling.
1998#GlusterfsPersistentVolumeSource: {
1999 // endpoints is the endpoint name that details Glusterfs topology.
2000 // More info:
2001 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2002 "endpoints"!: string
2003
2004 // endpointsNamespace is the namespace that contains Glusterfs
2005 // endpoint. If this field is empty, the EndpointNamespace
2006 // defaults to the same namespace as the bound PVC. More info:
2007 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2008 "endpointsNamespace"?: string
2009
2010 // path is the Glusterfs volume path. More info:
2011 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2012 "path"!: string
2013
2014 // readOnly here will force the Glusterfs volume to be mounted
2015 // with read-only permissions. Defaults to false. More info:
2016 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2017 "readOnly"?: bool
2018}
2019
2020// Represents a Glusterfs mount that lasts the lifetime of a pod.
2021// Glusterfs volumes do not support ownership management or
2022// SELinux relabeling.
2023#GlusterfsVolumeSource: {
2024 // endpoints is the endpoint name that details Glusterfs topology.
2025 "endpoints"!: string
2026
2027 // path is the Glusterfs volume path. More info:
2028 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2029 "path"!: string
2030
2031 // readOnly here will force the Glusterfs volume to be mounted
2032 // with read-only permissions. Defaults to false. More info:
2033 // https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
2034 "readOnly"?: bool
2035}
2036
2037// HTTPGetAction describes an action based on HTTP Get requests.
2038#HTTPGetAction: {
2039 // Host name to connect to, defaults to the pod IP. You probably
2040 // want to set "Host" in httpHeaders instead.
2041 "host"?: string
2042
2043 // Custom headers to set in the request. HTTP allows repeated
2044 // headers.
2045 "httpHeaders"?: [...#HTTPHeader]
2046
2047 // Path to access on the HTTP server.
2048 "path"?: string
2049
2050 // Name or number of the port to access on the container. Number
2051 // must be in the range 1 to 65535. Name must be an
2052 // IANA_SVC_NAME.
2053 "port"!: intstr.#IntOrString
2054
2055 // Scheme to use for connecting to the host. Defaults to HTTP.
2056 "scheme"?: string
2057}
2058
2059// HTTPHeader describes a custom header to be used in HTTP probes
2060#HTTPHeader: {
2061 // The header field name. This will be canonicalized upon output,
2062 // so case-variant names will be understood as the same header.
2063 "name"!: string
2064
2065 // The header field value
2066 "value"!: string
2067}
2068
2069// HostAlias holds the mapping between IP and hostnames that will
2070// be injected as an entry in the pod's hosts file.
2071#HostAlias: {
2072 // Hostnames for the above IP address.
2073 "hostnames"?: [...string]
2074
2075 // IP address of the host file entry.
2076 "ip"!: string
2077}
2078
2079// HostIP represents a single IP address allocated to the host.
2080#HostIP: {
2081 // IP is the IP address assigned to the host
2082 "ip"!: string
2083}
2084
2085// Represents a host path mapped into a pod. Host path volumes do
2086// not support ownership management or SELinux relabeling.
2087#HostPathVolumeSource: {
2088 // path of the directory on the host. If the path is a symlink, it
2089 // will follow the link to the real path. More info:
2090 // https://kubernetes.io/docs/concepts/storage/volumes#hostpath
2091 "path"!: string
2092
2093 // type for HostPath Volume Defaults to "" More info:
2094 // https://kubernetes.io/docs/concepts/storage/volumes#hostpath
2095 "type"?: string
2096}
2097
2098// ISCSIPersistentVolumeSource represents an ISCSI disk. ISCSI
2099// volumes can only be mounted as read/write once. ISCSI volumes
2100// support ownership management and SELinux relabeling.
2101#ISCSIPersistentVolumeSource: {
2102 // chapAuthDiscovery defines whether support iSCSI Discovery CHAP
2103 // authentication
2104 "chapAuthDiscovery"?: bool
2105
2106 // chapAuthSession defines whether support iSCSI Session CHAP
2107 // authentication
2108 "chapAuthSession"?: bool
2109
2110 // fsType is the filesystem type of the volume that you want to
2111 // mount. Tip: Ensure that the filesystem type is supported by
2112 // the host operating system. Examples: "ext4", "xfs", "ntfs".
2113 // Implicitly inferred to be "ext4" if unspecified. More info:
2114 // https://kubernetes.io/docs/concepts/storage/volumes#iscsi
2115 "fsType"?: string
2116
2117 // initiatorName is the custom iSCSI Initiator Name. If
2118 // initiatorName is specified with iscsiInterface simultaneously,
2119 // new iSCSI interface <target portal>:<volume name> will be
2120 // created for the connection.
2121 "initiatorName"?: string
2122
2123 // iqn is Target iSCSI Qualified Name.
2124 "iqn"!: string
2125
2126 // iscsiInterface is the interface Name that uses an iSCSI
2127 // transport. Defaults to 'default' (tcp).
2128 "iscsiInterface"?: string
2129
2130 // lun is iSCSI Target Lun number.
2131 "lun"!: int32 & int
2132
2133 // portals is the iSCSI Target Portal List. The Portal is either
2134 // an IP or ip_addr:port if the port is other than default
2135 // (typically TCP ports 860 and 3260).
2136 "portals"?: [...string]
2137
2138 // readOnly here will force the ReadOnly setting in VolumeMounts.
2139 // Defaults to false.
2140 "readOnly"?: bool
2141
2142 // secretRef is the CHAP Secret for iSCSI target and initiator
2143 // authentication
2144 "secretRef"?: #SecretReference
2145
2146 // targetPortal is iSCSI Target Portal. The Portal is either an IP
2147 // or ip_addr:port if the port is other than default (typically
2148 // TCP ports 860 and 3260).
2149 "targetPortal"!: string
2150}
2151
2152// Represents an ISCSI disk. ISCSI volumes can only be mounted as
2153// read/write once. ISCSI volumes support ownership management
2154// and SELinux relabeling.
2155#ISCSIVolumeSource: {
2156 // chapAuthDiscovery defines whether support iSCSI Discovery CHAP
2157 // authentication
2158 "chapAuthDiscovery"?: bool
2159
2160 // chapAuthSession defines whether support iSCSI Session CHAP
2161 // authentication
2162 "chapAuthSession"?: bool
2163
2164 // fsType is the filesystem type of the volume that you want to
2165 // mount. Tip: Ensure that the filesystem type is supported by
2166 // the host operating system. Examples: "ext4", "xfs", "ntfs".
2167 // Implicitly inferred to be "ext4" if unspecified. More info:
2168 // https://kubernetes.io/docs/concepts/storage/volumes#iscsi
2169 "fsType"?: string
2170
2171 // initiatorName is the custom iSCSI Initiator Name. If
2172 // initiatorName is specified with iscsiInterface simultaneously,
2173 // new iSCSI interface <target portal>:<volume name> will be
2174 // created for the connection.
2175 "initiatorName"?: string
2176
2177 // iqn is the target iSCSI Qualified Name.
2178 "iqn"!: string
2179
2180 // iscsiInterface is the interface Name that uses an iSCSI
2181 // transport. Defaults to 'default' (tcp).
2182 "iscsiInterface"?: string
2183
2184 // lun represents iSCSI Target Lun number.
2185 "lun"!: int32 & int
2186
2187 // portals is the iSCSI Target Portal List. The portal is either
2188 // an IP or ip_addr:port if the port is other than default
2189 // (typically TCP ports 860 and 3260).
2190 "portals"?: [...string]
2191
2192 // readOnly here will force the ReadOnly setting in VolumeMounts.
2193 // Defaults to false.
2194 "readOnly"?: bool
2195
2196 // secretRef is the CHAP Secret for iSCSI target and initiator
2197 // authentication
2198 "secretRef"?: #LocalObjectReference
2199
2200 // targetPortal is iSCSI Target Portal. The Portal is either an IP
2201 // or ip_addr:port if the port is other than default (typically
2202 // TCP ports 860 and 3260).
2203 "targetPortal"!: string
2204}
2205
2206// ImageVolumeSource represents a image volume resource.
2207#ImageVolumeSource: {
2208 // Policy for pulling OCI objects. Possible values are: Always:
2209 // the kubelet always attempts to pull the reference. Container
2210 // creation will fail If the pull fails. Never: the kubelet never
2211 // pulls the reference and only uses a local image or artifact.
2212 // Container creation will fail if the reference isn't present.
2213 // IfNotPresent: the kubelet pulls if the reference isn't already
2214 // present on disk. Container creation will fail if the reference
2215 // isn't present and the pull fails. Defaults to Always if
2216 // :latest tag is specified, or IfNotPresent otherwise.
2217 "pullPolicy"?: string
2218
2219 // Required: Image or artifact reference to be used. Behaves in
2220 // the same way as pod.spec.containers[*].image. Pull secrets
2221 // will be assembled in the same way as for the container image
2222 // by looking up node credentials, SA image pull secrets, and pod
2223 // spec image pull secrets. More info:
2224 // https://kubernetes.io/docs/concepts/containers/images This
2225 // field is optional to allow higher level config management to
2226 // default or override container images in workload controllers
2227 // like Deployments and StatefulSets.
2228 "reference"?: string
2229}
2230
2231// ImageVolumeStatus represents the image-based volume status.
2232#ImageVolumeStatus: {
2233 // ImageRef is the digest of the image used for this volume. It
2234 // should have a value that's similar to the pod's
2235 // status.containerStatuses[i].imageID. The ImageRef length
2236 // should not exceed 256 characters.
2237 "imageRef"!: string
2238}
2239
2240// Maps a string key to a path within a volume.
2241#KeyToPath: {
2242 // key is the key to project.
2243 "key"!: string
2244
2245 // mode is Optional: mode bits used to set permissions on this
2246 // file. Must be an octal value between 0000 and 0777 or a
2247 // decimal value between 0 and 511. YAML accepts both octal and
2248 // decimal values, JSON requires decimal values for mode bits. If
2249 // not specified, the volume defaultMode will be used. This might
2250 // be in conflict with other options that affect the file mode,
2251 // like fsGroup, and the result can be other mode bits set.
2252 "mode"?: int32 & int
2253
2254 // path is the relative path of the file to map the key to. May
2255 // not be an absolute path. May not contain the path element
2256 // '..'. May not start with the string '..'.
2257 "path"!: string
2258}
2259
2260// Lifecycle describes actions that the management system should
2261// take in response to container lifecycle events. For the
2262// PostStart and PreStop lifecycle handlers, management of the
2263// container blocks until the action is complete, unless the
2264// container process fails, in which case the handler is aborted.
2265#Lifecycle: {
2266 // PostStart is called immediately after a container is created.
2267 // If the handler fails, the container is terminated and
2268 // restarted according to its restart policy. Other management of
2269 // the container blocks until the hook completes. More info:
2270 // https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
2271 "postStart"?: #LifecycleHandler
2272
2273 // PreStop is called immediately before a container is terminated
2274 // due to an API request or management event such as
2275 // liveness/startup probe failure, preemption, resource
2276 // contention, etc. The handler is not called if the container
2277 // crashes or exits. The Pod's termination grace period countdown
2278 // begins before the PreStop hook is executed. Regardless of the
2279 // outcome of the handler, the container will eventually
2280 // terminate within the Pod's termination grace period (unless
2281 // delayed by finalizers). Other management of the container
2282 // blocks until the hook completes or until the termination grace
2283 // period is reached. More info:
2284 // https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
2285 "preStop"?: #LifecycleHandler
2286
2287 // StopSignal defines which signal will be sent to a container
2288 // when it is being stopped. If not specified, the default is
2289 // defined by the container runtime in use. StopSignal can only
2290 // be set for Pods with a non-empty .spec.os.name
2291 "stopSignal"?: string
2292}
2293
2294// LifecycleHandler defines a specific action that should be taken
2295// in a lifecycle hook. One and only one of the fields, except
2296// TCPSocket must be specified.
2297#LifecycleHandler: {
2298 // Exec specifies a command to execute in the container.
2299 "exec"?: #ExecAction
2300
2301 // HTTPGet specifies an HTTP GET request to perform.
2302 "httpGet"?: #HTTPGetAction
2303
2304 // Sleep represents a duration that the container should sleep.
2305 "sleep"?: #SleepAction
2306
2307 // Deprecated. TCPSocket is NOT supported as a LifecycleHandler
2308 // and kept for backward compatibility. There is no validation of
2309 // this field and lifecycle hooks will fail at runtime when it is
2310 // specified.
2311 "tcpSocket"?: #TCPSocketAction
2312}
2313
2314// LimitRange sets resource usage limits for each kind of resource
2315// in a Namespace.
2316#LimitRange: {
2317 // APIVersion defines the versioned schema of this representation
2318 // of an object. Servers should convert recognized schemas to the
2319 // latest internal value, and may reject unrecognized values.
2320 // More info:
2321 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2322 "apiVersion": "v1"
2323
2324 // Kind is a string value representing the REST resource this
2325 // object represents. Servers may infer this from the endpoint
2326 // the client submits requests to. Cannot be updated. In
2327 // CamelCase. More info:
2328 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2329 "kind": "LimitRange"
2330
2331 // Standard object's metadata. More info:
2332 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
2333 "metadata"?: v1.#ObjectMeta
2334
2335 // Spec defines the limits enforced. More info:
2336 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
2337 "spec"?: #LimitRangeSpec
2338}
2339
2340// LimitRangeItem defines a min/max usage limit for any resource
2341// that matches on kind.
2342#LimitRangeItem: {
2343 // Default resource requirement limit value by resource name if
2344 // resource limit is omitted.
2345 "default"?: [string]: resource.#Quantity
2346
2347 // DefaultRequest is the default resource requirement request
2348 // value by resource name if resource request is omitted.
2349 "defaultRequest"?: {
2350 [string]: resource.#Quantity
2351 }
2352
2353 // Max usage constraints on this kind by resource name.
2354 "max"?: {
2355 [string]: resource.#Quantity
2356 }
2357
2358 // MaxLimitRequestRatio if specified, the named resource must have
2359 // a request and limit that are both non-zero where limit divided
2360 // by request is less than or equal to the enumerated value; this
2361 // represents the max burst for the named resource.
2362 "maxLimitRequestRatio"?: {
2363 [string]: resource.#Quantity
2364 }
2365
2366 // Min usage constraints on this kind by resource name.
2367 "min"?: {
2368 [string]: resource.#Quantity
2369 }
2370
2371 // Type of resource that this limit applies to.
2372 "type"!: string
2373}
2374
2375// LimitRangeList is a list of LimitRange items.
2376#LimitRangeList: {
2377 // APIVersion defines the versioned schema of this representation
2378 // of an object. Servers should convert recognized schemas to the
2379 // latest internal value, and may reject unrecognized values.
2380 // More info:
2381 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2382 "apiVersion": "v1"
2383
2384 // Items is a list of LimitRange objects. More info:
2385 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
2386 "items"!: [...#LimitRange]
2387
2388 // Kind is a string value representing the REST resource this
2389 // object represents. Servers may infer this from the endpoint
2390 // the client submits requests to. Cannot be updated. In
2391 // CamelCase. More info:
2392 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2393 "kind": "LimitRangeList"
2394
2395 // Standard list metadata. More info:
2396 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2397 "metadata"?: v1.#ListMeta
2398}
2399
2400// LimitRangeSpec defines a min/max usage limit for resources that
2401// match on kind.
2402#LimitRangeSpec: {
2403 // Limits is the list of LimitRangeItem objects that are enforced.
2404 "limits"!: [...#LimitRangeItem]
2405}
2406
2407// LinuxContainerUser represents user identity information in
2408// Linux containers
2409#LinuxContainerUser: {
2410 // GID is the primary gid initially attached to the first process
2411 // in the container
2412 "gid"!: int64 & int
2413
2414 // SupplementalGroups are the supplemental groups initially
2415 // attached to the first process in the container
2416 "supplementalGroups"?: [...int64 & int]
2417
2418 // UID is the primary uid initially attached to the first process
2419 // in the container
2420 "uid"!: int64 & int
2421}
2422
2423// LoadBalancerIngress represents the status of a load-balancer
2424// ingress point: traffic intended for the service should be sent
2425// to an ingress point.
2426#LoadBalancerIngress: {
2427 // Hostname is set for load-balancer ingress points that are DNS
2428 // based (typically AWS load-balancers)
2429 "hostname"?: string
2430
2431 // IP is set for load-balancer ingress points that are IP based
2432 // (typically GCE or OpenStack load-balancers)
2433 "ip"?: string
2434
2435 // IPMode specifies how the load-balancer IP behaves, and may only
2436 // be specified when the ip field is specified. Setting this to
2437 // "VIP" indicates that traffic is delivered to the node with the
2438 // destination set to the load-balancer's IP and port. Setting
2439 // this to "Proxy" indicates that traffic is delivered to the
2440 // node or pod with the destination set to the node's IP and node
2441 // port or the pod's IP and port. Service implementations may use
2442 // this information to adjust traffic routing.
2443 "ipMode"?: string
2444
2445 // Ports is a list of records of service ports If used, every port
2446 // defined in the service should have an entry in it
2447 "ports"?: [...#PortStatus]
2448}
2449
2450// LoadBalancerStatus represents the status of a load-balancer.
2451#LoadBalancerStatus: {
2452 // Ingress is a list containing ingress points for the
2453 // load-balancer. Traffic intended for the service should be sent
2454 // to these ingress points.
2455 "ingress"?: [...#LoadBalancerIngress]
2456}
2457
2458// LocalObjectReference contains enough information to let you
2459// locate the referenced object inside the same namespace.
2460#LocalObjectReference: {
2461 // Name of the referent. This field is effectively required, but
2462 // due to backwards compatibility is allowed to be empty.
2463 // Instances of this type with an empty value here are almost
2464 // certainly wrong. More info:
2465 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
2466 "name"?: string
2467}
2468
2469// Local represents directly-attached storage with node affinity
2470#LocalVolumeSource: {
2471 // fsType is the filesystem type to mount. It applies only when
2472 // the Path is a block device. Must be a filesystem type
2473 // supported by the host operating system. Ex. "ext4", "xfs",
2474 // "ntfs". The default value is to auto-select a filesystem if
2475 // unspecified.
2476 "fsType"?: string
2477
2478 // path of the full path to the volume on the node. It can be
2479 // either a directory or block device (disk, partition, ...).
2480 "path"!: string
2481}
2482
2483// ModifyVolumeStatus represents the status object of
2484// ControllerModifyVolume operation
2485#ModifyVolumeStatus: {
2486 // status is the status of the ControllerModifyVolume operation.
2487 // It can be in any of following states:
2488 // - Pending
2489 // Pending indicates that the PersistentVolumeClaim cannot be
2490 // modified due to unmet requirements, such as
2491 // the specified VolumeAttributesClass not existing.
2492 // - InProgress
2493 // InProgress indicates that the volume is being modified.
2494 // - Infeasible
2495 // Infeasible indicates that the request has been rejected as
2496 // invalid by the CSI driver. To
2497 // resolve the error, a valid VolumeAttributesClass needs to be
2498 // specified.
2499 // Note: New statuses can be added in the future. Consumers should
2500 // check for unknown statuses and fail appropriately.
2501 "status"!: string
2502
2503 // targetVolumeAttributesClassName is the name of the
2504 // VolumeAttributesClass the PVC currently being reconciled
2505 "targetVolumeAttributesClassName"?: string
2506}
2507
2508// Represents an NFS mount that lasts the lifetime of a pod. NFS
2509// volumes do not support ownership management or SELinux
2510// relabeling.
2511#NFSVolumeSource: {
2512 // path that is exported by the NFS server. More info:
2513 // https://kubernetes.io/docs/concepts/storage/volumes#nfs
2514 "path"!: string
2515
2516 // readOnly here will force the NFS export to be mounted with
2517 // read-only permissions. Defaults to false. More info:
2518 // https://kubernetes.io/docs/concepts/storage/volumes#nfs
2519 "readOnly"?: bool
2520
2521 // server is the hostname or IP address of the NFS server. More
2522 // info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
2523 "server"!: string
2524}
2525
2526// Namespace provides a scope for Names. Use of multiple
2527// namespaces is optional.
2528#Namespace: {
2529 // APIVersion defines the versioned schema of this representation
2530 // of an object. Servers should convert recognized schemas to the
2531 // latest internal value, and may reject unrecognized values.
2532 // More info:
2533 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2534 "apiVersion": "v1"
2535
2536 // Kind is a string value representing the REST resource this
2537 // object represents. Servers may infer this from the endpoint
2538 // the client submits requests to. Cannot be updated. In
2539 // CamelCase. More info:
2540 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2541 "kind": "Namespace"
2542
2543 // Standard object's metadata. More info:
2544 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
2545 "metadata"?: v1.#ObjectMeta
2546
2547 // Spec defines the behavior of the Namespace. More info:
2548 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
2549 "spec"?: #NamespaceSpec
2550
2551 // Status describes the current status of a Namespace. More info:
2552 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
2553 "status"?: #NamespaceStatus
2554}
2555
2556// NamespaceCondition contains details about state of namespace.
2557#NamespaceCondition: {
2558 // Last time the condition transitioned from one status to
2559 // another.
2560 "lastTransitionTime"?: v1.#Time
2561
2562 // Human-readable message indicating details about last
2563 // transition.
2564 "message"?: string
2565
2566 // Unique, one-word, CamelCase reason for the condition's last
2567 // transition.
2568 "reason"?: string
2569
2570 // Status of the condition, one of True, False, Unknown.
2571 "status"!: string
2572
2573 // Type of namespace controller condition.
2574 "type"!: string
2575}
2576
2577// NamespaceList is a list of Namespaces.
2578#NamespaceList: {
2579 // APIVersion defines the versioned schema of this representation
2580 // of an object. Servers should convert recognized schemas to the
2581 // latest internal value, and may reject unrecognized values.
2582 // More info:
2583 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2584 "apiVersion": "v1"
2585
2586 // Items is the list of Namespace objects in the list. More info:
2587 // https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
2588 "items"!: [...#Namespace]
2589
2590 // Kind is a string value representing the REST resource this
2591 // object represents. Servers may infer this from the endpoint
2592 // the client submits requests to. Cannot be updated. In
2593 // CamelCase. More info:
2594 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2595 "kind": "NamespaceList"
2596
2597 // Standard list metadata. More info:
2598 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2599 "metadata"?: v1.#ListMeta
2600}
2601
2602// NamespaceSpec describes the attributes on a Namespace.
2603#NamespaceSpec: {
2604 // Finalizers is an opaque list of values that must be empty to
2605 // permanently remove object from storage. More info:
2606 // https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
2607 "finalizers"?: [...string]
2608}
2609
2610// NamespaceStatus is information about the current status of a
2611// Namespace.
2612#NamespaceStatus: {
2613 // Represents the latest available observations of a namespace's
2614 // current state.
2615 "conditions"?: [...#NamespaceCondition]
2616
2617 // Phase is the current lifecycle phase of the namespace. More
2618 // info:
2619 // https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
2620 "phase"?: string
2621}
2622
2623// Node is a worker node in Kubernetes. Each node will have a
2624// unique identifier in the cache (i.e. in etcd).
2625#Node: {
2626 // APIVersion defines the versioned schema of this representation
2627 // of an object. Servers should convert recognized schemas to the
2628 // latest internal value, and may reject unrecognized values.
2629 // More info:
2630 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2631 "apiVersion": "v1"
2632
2633 // Kind is a string value representing the REST resource this
2634 // object represents. Servers may infer this from the endpoint
2635 // the client submits requests to. Cannot be updated. In
2636 // CamelCase. More info:
2637 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2638 "kind": "Node"
2639
2640 // Standard object's metadata. More info:
2641 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
2642 "metadata"?: v1.#ObjectMeta
2643
2644 // Spec defines the behavior of a node.
2645 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
2646 "spec"?: #NodeSpec
2647
2648 // Most recently observed status of the node. Populated by the
2649 // system. Read-only. More info:
2650 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
2651 "status"?: #NodeStatus
2652}
2653
2654// NodeAddress contains information for the node's address.
2655#NodeAddress: {
2656 // The node address.
2657 "address"!: string
2658
2659 // Node address type, one of Hostname, ExternalIP or InternalIP.
2660 "type"!: string
2661}
2662
2663// Node affinity is a group of node affinity scheduling rules.
2664#NodeAffinity: {
2665 // The scheduler will prefer to schedule pods to nodes that
2666 // satisfy the affinity expressions specified by this field, but
2667 // it may choose a node that violates one or more of the
2668 // expressions. The node that is most preferred is the one with
2669 // the greatest sum of weights, i.e. for each node that meets all
2670 // of the scheduling requirements (resource request,
2671 // requiredDuringScheduling affinity expressions, etc.), compute
2672 // a sum by iterating through the elements of this field and
2673 // adding "weight" to the sum if the node matches the
2674 // corresponding matchExpressions; the node(s) with the highest
2675 // sum are the most preferred.
2676 "preferredDuringSchedulingIgnoredDuringExecution"?: [...#PreferredSchedulingTerm]
2677
2678 // If the affinity requirements specified by this field are not
2679 // met at scheduling time, the pod will not be scheduled onto the
2680 // node. If the affinity requirements specified by this field
2681 // cease to be met at some point during pod execution (e.g. due
2682 // to an update), the system may or may not try to eventually
2683 // evict the pod from its node.
2684 "requiredDuringSchedulingIgnoredDuringExecution"?: #NodeSelector
2685}
2686
2687// NodeAllocatableResourceClaimStatus describes the status of node
2688// allocatable resources allocated via DRA.
2689#NodeAllocatableResourceClaimStatus: {
2690 // Containers lists the names of all containers in this pod that
2691 // reference the claim.
2692 "containers"?: [...string]
2693
2694 // ResourceClaimName is the resource claim referenced by the pod
2695 // that resulted in this node allocatable resource allocation.
2696 "resourceClaimName"!: string
2697
2698 // Resources is a map of the node-allocatable resource name to the
2699 // aggregate quantity allocated to the claim.
2700 "resources"!: {
2701 [string]: resource.#Quantity
2702 }
2703}
2704
2705// NodeCondition contains condition information for a node.
2706#NodeCondition: {
2707 // Last time we got an update on a given condition.
2708 "lastHeartbeatTime"?: v1.#Time
2709
2710 // Last time the condition transit from one status to another.
2711 "lastTransitionTime"?: v1.#Time
2712
2713 // Human readable message indicating details about last
2714 // transition.
2715 "message"?: string
2716
2717 // (brief) reason for the condition's last transition.
2718 "reason"?: string
2719
2720 // Status of the condition, one of True, False, Unknown.
2721 "status"!: string
2722
2723 // Type of node condition.
2724 "type"!: string
2725}
2726
2727// NodeConfigSource specifies a source of node configuration.
2728// Exactly one subfield (excluding metadata) must be non-nil.
2729// This API is deprecated since 1.22
2730#NodeConfigSource: {
2731 // ConfigMap is a reference to a Node's ConfigMap
2732 "configMap"?: #ConfigMapNodeConfigSource
2733}
2734
2735// NodeConfigStatus describes the status of the config assigned by
2736// Node.Spec.ConfigSource.
2737#NodeConfigStatus: {
2738 // Active reports the checkpointed config the node is actively
2739 // using. Active will represent either the current version of the
2740 // Assigned config, or the current LastKnownGood config,
2741 // depending on whether attempting to use the Assigned config
2742 // results in an error.
2743 "active"?: #NodeConfigSource
2744
2745 // Assigned reports the checkpointed config the node will try to
2746 // use. When Node.Spec.ConfigSource is updated, the node
2747 // checkpoints the associated config payload to local disk, along
2748 // with a record indicating intended config. The node refers to
2749 // this record to choose its config checkpoint, and reports this
2750 // record in Assigned. Assigned only updates in the status after
2751 // the record has been checkpointed to disk. When the Kubelet is
2752 // restarted, it tries to make the Assigned config the Active
2753 // config by loading and validating the checkpointed payload
2754 // identified by Assigned.
2755 "assigned"?: #NodeConfigSource
2756
2757 // Error describes any problems reconciling the Spec.ConfigSource
2758 // to the Active config. Errors may occur, for example,
2759 // attempting to checkpoint Spec.ConfigSource to the local
2760 // Assigned record, attempting to checkpoint the payload
2761 // associated with Spec.ConfigSource, attempting to load or
2762 // validate the Assigned config, etc. Errors may occur at
2763 // different points while syncing config. Earlier errors (e.g.
2764 // download or checkpointing errors) will not result in a
2765 // rollback to LastKnownGood, and may resolve across Kubelet
2766 // retries. Later errors (e.g. loading or validating a
2767 // checkpointed config) will result in a rollback to
2768 // LastKnownGood. In the latter case, it is usually possible to
2769 // resolve the error by fixing the config assigned in
2770 // Spec.ConfigSource. You can find additional information for
2771 // debugging by searching the error message in the Kubelet log.
2772 // Error is a human-readable description of the error state;
2773 // machines can check whether or not Error is empty, but should
2774 // not rely on the stability of the Error text across Kubelet
2775 // versions.
2776 "error"?: string
2777
2778 // LastKnownGood reports the checkpointed config the node will
2779 // fall back to when it encounters an error attempting to use the
2780 // Assigned config. The Assigned config becomes the LastKnownGood
2781 // config when the node determines that the Assigned config is
2782 // stable and correct. This is currently implemented as a
2783 // 10-minute soak period starting when the local record of
2784 // Assigned config is updated. If the Assigned config is Active
2785 // at the end of this period, it becomes the LastKnownGood. Note
2786 // that if Spec.ConfigSource is reset to nil (use local
2787 // defaults), the LastKnownGood is also immediately reset to nil,
2788 // because the local default config is always assumed good. You
2789 // should not make assumptions about the node's method of
2790 // determining config stability and correctness, as this may
2791 // change or become configurable in the future.
2792 "lastKnownGood"?: #NodeConfigSource
2793}
2794
2795// NodeDaemonEndpoints lists ports opened by daemons running on
2796// the Node.
2797#NodeDaemonEndpoints: {
2798 // Endpoint on which Kubelet is listening.
2799 "kubeletEndpoint"?: #DaemonEndpoint
2800}
2801
2802// NodeFeatures describes the set of features implemented by the
2803// CRI implementation. The features contained in the NodeFeatures
2804// should depend only on the cri implementation independent of
2805// runtime handlers.
2806#NodeFeatures: {
2807 // SupplementalGroupsPolicy is set to true if the runtime supports
2808 // SupplementalGroupsPolicy and ContainerUser.
2809 "supplementalGroupsPolicy"?: bool
2810}
2811
2812// NodeList is the whole list of all Nodes which have been
2813// registered with master.
2814#NodeList: {
2815 // APIVersion defines the versioned schema of this representation
2816 // of an object. Servers should convert recognized schemas to the
2817 // latest internal value, and may reject unrecognized values.
2818 // More info:
2819 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
2820 "apiVersion": "v1"
2821
2822 // List of nodes
2823 "items"!: [...#Node]
2824
2825 // Kind is a string value representing the REST resource this
2826 // object represents. Servers may infer this from the endpoint
2827 // the client submits requests to. Cannot be updated. In
2828 // CamelCase. More info:
2829 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2830 "kind": "NodeList"
2831
2832 // Standard list metadata. More info:
2833 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
2834 "metadata"?: v1.#ListMeta
2835}
2836
2837// NodeRuntimeHandler is a set of runtime handler information.
2838#NodeRuntimeHandler: {
2839 // Supported features.
2840 "features"?: #NodeRuntimeHandlerFeatures
2841
2842 // Runtime handler name. Empty for the default runtime handler.
2843 "name"?: string
2844}
2845
2846// NodeRuntimeHandlerFeatures is a set of features implemented by
2847// the runtime handler.
2848#NodeRuntimeHandlerFeatures: {
2849 // RecursiveReadOnlyMounts is set to true if the runtime handler
2850 // supports RecursiveReadOnlyMounts.
2851 "recursiveReadOnlyMounts"?: bool
2852
2853 // UserNamespaces is set to true if the runtime handler supports
2854 // UserNamespaces, including for volumes.
2855 "userNamespaces"?: bool
2856}
2857
2858// A node selector represents the union of the results of one or
2859// more label queries over a set of nodes; that is, it represents
2860// the OR of the selectors represented by the node selector
2861// terms.
2862#NodeSelector: {
2863 // Required. A list of node selector terms. The terms are ORed.
2864 "nodeSelectorTerms"!: [...#NodeSelectorTerm]
2865}
2866
2867// A node selector requirement is a selector that contains values,
2868// a key, and an operator that relates the key and values.
2869#NodeSelectorRequirement: {
2870 // The label key that the selector applies to.
2871 "key"!: string
2872
2873 // Represents a key's relationship to a set of values. Valid
2874 // operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2875 "operator"!: string
2876
2877 // An array of string values. If the operator is In or NotIn, the
2878 // values array must be non-empty. If the operator is Exists or
2879 // DoesNotExist, the values array must be empty. If the operator
2880 // is Gt or Lt, the values array must have a single element,
2881 // which will be interpreted as an integer. This array is
2882 // replaced during a strategic merge patch.
2883 "values"?: [...string]
2884}
2885
2886// A null or empty node selector term matches no objects. The
2887// requirements of them are ANDed. The TopologySelectorTerm type
2888// implements a subset of the NodeSelectorTerm.
2889#NodeSelectorTerm: {
2890 // A list of node selector requirements by node's labels.
2891 "matchExpressions"?: [...#NodeSelectorRequirement]
2892
2893 // A list of node selector requirements by node's fields.
2894 "matchFields"?: [...#NodeSelectorRequirement]
2895}
2896
2897// NodeSpec describes the attributes that a node is created with.
2898#NodeSpec: {
2899 // Deprecated: Previously used to specify the source of the node's
2900 // configuration for the DynamicKubeletConfig feature. This
2901 // feature is removed.
2902 "configSource"?: #NodeConfigSource
2903
2904 // Deprecated. Not all kubelets will set this field. Remove field
2905 // after 1.13. see: https://issues.k8s.io/61966
2906 "externalID"?: string
2907
2908 // PodCIDR represents the pod IP range assigned to the node.
2909 "podCIDR"?: string
2910
2911 // podCIDRs represents the IP ranges assigned to the node for
2912 // usage by Pods on that node. If this field is specified, the
2913 // 0th entry must match the podCIDR field. It may contain at most
2914 // 1 value for each of IPv4 and IPv6.
2915 "podCIDRs"?: [...string]
2916
2917 // ID of the node assigned by the cloud provider in the format:
2918 // <ProviderName>://<ProviderSpecificNodeID>
2919 "providerID"?: string
2920
2921 // If specified, the node's taints.
2922 "taints"?: [...#Taint]
2923
2924 // Unschedulable controls node schedulability of new pods. By
2925 // default, node is schedulable. More info:
2926 // https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
2927 "unschedulable"?: bool
2928}
2929
2930// NodeStatus is information about the current status of a node.
2931#NodeStatus: {
2932 // List of addresses reachable to the node. Queried from cloud
2933 // provider, if available. More info:
2934 // https://kubernetes.io/docs/reference/node/node-status/#addresses
2935 // Note: This field is declared as mergeable, but the merge key
2936 // is not sufficiently unique, which can cause data corruption
2937 // when it is merged. Callers should instead use a
2938 // full-replacement patch. See https://pr.k8s.io/79391 for an
2939 // example. Consumers should assume that addresses can change
2940 // during the lifetime of a Node. However, there are some
2941 // exceptions where this may not be possible, such as Pods that
2942 // inherit a Node's address in its own status or consumers of the
2943 // downward API (status.hostIP).
2944 "addresses"?: [...#NodeAddress]
2945
2946 // Allocatable represents the resources of a node that are
2947 // available for scheduling. Defaults to Capacity.
2948 "allocatable"?: {
2949 [string]: resource.#Quantity
2950 }
2951
2952 // Capacity represents the total resources of a node. More info:
2953 // https://kubernetes.io/docs/reference/node/node-status/#capacity
2954 "capacity"?: {
2955 [string]: resource.#Quantity
2956 }
2957
2958 // Conditions is an array of current observed node conditions.
2959 // More info:
2960 // https://kubernetes.io/docs/reference/node/node-status/#condition
2961 "conditions"?: [...#NodeCondition]
2962
2963 // Status of the config assigned to the node via the dynamic
2964 // Kubelet config feature.
2965 "config"?: #NodeConfigStatus
2966
2967 // Endpoints of daemons running on the Node.
2968 "daemonEndpoints"?: #NodeDaemonEndpoints
2969
2970 // DeclaredFeatures represents the features related to feature
2971 // gates that are declared by the node.
2972 "declaredFeatures"?: [...string]
2973
2974 // Features describes the set of features implemented by the CRI
2975 // implementation.
2976 "features"?: #NodeFeatures
2977
2978 // List of container images on this node
2979 "images"?: [...#ContainerImage]
2980
2981 // Set of ids/uuids to uniquely identify the node. More info:
2982 // https://kubernetes.io/docs/reference/node/node-status/#info
2983 "nodeInfo"?: #NodeSystemInfo
2984
2985 // NodePhase is the recently observed lifecycle phase of the node.
2986 // More info:
2987 // https://kubernetes.io/docs/concepts/nodes/node/#phase The
2988 // field is never populated, and now is deprecated.
2989 "phase"?: string
2990
2991 // The available runtime handlers.
2992 "runtimeHandlers"?: [...#NodeRuntimeHandler]
2993
2994 // List of volumes that are attached to the node.
2995 "volumesAttached"?: [...#AttachedVolume]
2996
2997 // List of attachable volumes in use (mounted) by the node.
2998 "volumesInUse"?: [...string]
2999}
3000
3001// NodeSwapStatus represents swap memory information.
3002#NodeSwapStatus: {
3003 // Total amount of swap memory in bytes.
3004 "capacity"?: int64 & int
3005}
3006
3007// NodeSystemInfo is a set of ids/uuids to uniquely identify the
3008// node.
3009#NodeSystemInfo: {
3010 // The Architecture reported by the node
3011 "architecture"!: string
3012
3013 // Boot ID reported by the node.
3014 "bootID"!: string
3015
3016 // ContainerRuntime Version reported by the node through runtime
3017 // remote API (e.g. containerd://1.4.2).
3018 "containerRuntimeVersion"!: string
3019
3020 // Kernel Version reported by the node from 'uname -r' (e.g.
3021 // 3.16.0-0.bpo.4-amd64).
3022 "kernelVersion"!: string
3023
3024 // Deprecated: KubeProxy Version reported by the node.
3025 "kubeProxyVersion"!: string
3026
3027 // Kubelet Version reported by the node.
3028 "kubeletVersion"!: string
3029
3030 // MachineID reported by the node. For unique machine
3031 // identification in the cluster this field is preferred. Learn
3032 // more from man(5) machine-id:
3033 // http://man7.org/linux/man-pages/man5/machine-id.5.html
3034 "machineID"!: string
3035
3036 // The Operating System reported by the node
3037 "operatingSystem"!: string
3038
3039 // OS Image reported by the node from /etc/os-release (e.g. Debian
3040 // GNU/Linux 7 (wheezy)).
3041 "osImage"!: string
3042
3043 // Swap Info reported by the node.
3044 "swap"?: #NodeSwapStatus
3045
3046 // SystemUUID reported by the node. For unique machine
3047 // identification MachineID is preferred. This field is specific
3048 // to Red Hat hosts
3049 // https://access.redhat.com/documentation/en-us/red_hat_subscription_management/1/html/rhsm/uuid
3050 "systemUUID"!: string
3051}
3052
3053// ObjectFieldSelector selects an APIVersioned field of an object.
3054#ObjectFieldSelector: {
3055 // Version of the schema the FieldPath is written in terms of,
3056 // defaults to "v1".
3057 "apiVersion"?: string
3058
3059 // Path of the field to select in the specified API version.
3060 "fieldPath"!: string
3061}
3062
3063// ObjectReference contains enough information to let you inspect
3064// or modify the referred object.
3065#ObjectReference: {
3066 // API version of the referent.
3067 "apiVersion"?: string
3068
3069 // If referring to a piece of an object instead of an entire
3070 // object, this string should contain a valid JSON/Go field
3071 // access statement, such as desiredState.manifest.containers[2].
3072 // For example, if the object reference is to a container within
3073 // a pod, this would take on a value like:
3074 // "spec.containers{name}" (where "name" refers to the name of
3075 // the container that triggered the event) or if no container
3076 // name is specified "spec.containers[2]" (container with index 2
3077 // in this pod). This syntax is chosen only to have some
3078 // well-defined way of referencing a part of an object.
3079 "fieldPath"?: string
3080
3081 // Kind of the referent. More info:
3082 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3083 "kind"?: string
3084
3085 // Name of the referent. More info:
3086 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
3087 "name"?: string
3088
3089 // Namespace of the referent. More info:
3090 // https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
3091 "namespace"?: string
3092
3093 // Specific resourceVersion to which this reference is made, if
3094 // any. More info:
3095 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
3096 "resourceVersion"?: string
3097
3098 // UID of the referent. More info:
3099 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
3100 "uid"?: string
3101}
3102
3103// PersistentVolume (PV) is a storage resource provisioned by an
3104// administrator. It is analogous to a node. More info:
3105// https://kubernetes.io/docs/concepts/storage/persistent-volumes
3106#PersistentVolume: {
3107 // APIVersion defines the versioned schema of this representation
3108 // of an object. Servers should convert recognized schemas to the
3109 // latest internal value, and may reject unrecognized values.
3110 // More info:
3111 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
3112 "apiVersion": "v1"
3113
3114 // Kind is a string value representing the REST resource this
3115 // object represents. Servers may infer this from the endpoint
3116 // the client submits requests to. Cannot be updated. In
3117 // CamelCase. More info:
3118 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3119 "kind": "PersistentVolume"
3120
3121 // Standard object's metadata. More info:
3122 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
3123 "metadata"?: v1.#ObjectMeta
3124
3125 // spec defines a specification of a persistent volume owned by
3126 // the cluster. Provisioned by an administrator. More info:
3127 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
3128 "spec"?: #PersistentVolumeSpec
3129
3130 // status represents the current information/status for the
3131 // persistent volume. Populated by the system. Read-only. More
3132 // info:
3133 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
3134 "status"?: #PersistentVolumeStatus
3135}
3136
3137// PersistentVolumeClaim is a user's request for and claim to a
3138// persistent volume
3139#PersistentVolumeClaim: {
3140 // APIVersion defines the versioned schema of this representation
3141 // of an object. Servers should convert recognized schemas to the
3142 // latest internal value, and may reject unrecognized values.
3143 // More info:
3144 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
3145 "apiVersion": "v1"
3146
3147 // Kind is a string value representing the REST resource this
3148 // object represents. Servers may infer this from the endpoint
3149 // the client submits requests to. Cannot be updated. In
3150 // CamelCase. More info:
3151 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3152 "kind": "PersistentVolumeClaim"
3153
3154 // Standard object's metadata. More info:
3155 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
3156 "metadata"?: v1.#ObjectMeta
3157
3158 // spec defines the desired characteristics of a volume requested
3159 // by a pod author. More info:
3160 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
3161 "spec"?: #PersistentVolumeClaimSpec
3162
3163 // status represents the current information/status of a
3164 // persistent volume claim. Read-only. More info:
3165 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
3166 "status"?: #PersistentVolumeClaimStatus
3167}
3168
3169// PersistentVolumeClaimCondition contains details about state of
3170// pvc
3171#PersistentVolumeClaimCondition: {
3172 // lastProbeTime is the time we probed the condition.
3173 "lastProbeTime"?: v1.#Time
3174
3175 // lastTransitionTime is the time the condition transitioned from
3176 // one status to another.
3177 "lastTransitionTime"?: v1.#Time
3178
3179 // message is the human-readable message indicating details about
3180 // last transition.
3181 "message"?: string
3182
3183 // reason is a unique, this should be a short, machine
3184 // understandable string that gives the reason for condition's
3185 // last transition. If it reports "Resizing" that means the
3186 // underlying persistent volume is being resized.
3187 "reason"?: string
3188
3189 // Status is the status of the condition. Can be True, False,
3190 // Unknown. More info:
3191 // https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required
3192 "status"!: string
3193
3194 // Type is the type of the condition. More info:
3195 // https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about
3196 "type"!: string
3197}
3198
3199// PersistentVolumeClaimList is a list of PersistentVolumeClaim
3200// items.
3201#PersistentVolumeClaimList: {
3202 // APIVersion defines the versioned schema of this representation
3203 // of an object. Servers should convert recognized schemas to the
3204 // latest internal value, and may reject unrecognized values.
3205 // More info:
3206 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
3207 "apiVersion": "v1"
3208
3209 // items is a list of persistent volume claims. More info:
3210 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
3211 "items"!: [...#PersistentVolumeClaim]
3212
3213 // Kind is a string value representing the REST resource this
3214 // object represents. Servers may infer this from the endpoint
3215 // the client submits requests to. Cannot be updated. In
3216 // CamelCase. More info:
3217 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3218 "kind": "PersistentVolumeClaimList"
3219
3220 // Standard list metadata. More info:
3221 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3222 "metadata"?: v1.#ListMeta
3223}
3224
3225// PersistentVolumeClaimSpec describes the common attributes of
3226// storage devices and allows a Source for provider-specific
3227// attributes
3228#PersistentVolumeClaimSpec: {
3229 // accessModes contains the desired access modes the volume should
3230 // have. More info:
3231 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
3232 "accessModes"?: [...string]
3233
3234 // dataSource field can be used to specify either: * An existing
3235 // VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
3236 // * An existing PVC (PersistentVolumeClaim) If the provisioner
3237 // or an external controller can support the specified data
3238 // source, it will create a new volume based on the contents of
3239 // the specified data source. When the AnyVolumeDataSource
3240 // feature gate is enabled, dataSource contents will be copied to
3241 // dataSourceRef, and dataSourceRef contents will be copied to
3242 // dataSource when dataSourceRef.namespace is not specified. If
3243 // the namespace is specified, then dataSourceRef will not be
3244 // copied to dataSource.
3245 "dataSource"?: #TypedLocalObjectReference
3246
3247 // dataSourceRef specifies the object from which to populate the
3248 // volume with data, if a non-empty volume is desired. This may
3249 // be any object from a non-empty API group (non core object) or
3250 // a PersistentVolumeClaim object. When this field is specified,
3251 // volume binding will only succeed if the type of the specified
3252 // object matches some installed volume populator or dynamic
3253 // provisioner. This field will replace the functionality of the
3254 // dataSource field and as such if both fields are non-empty,
3255 // they must have the same value. For backwards compatibility,
3256 // when namespace isn't specified in dataSourceRef, both fields
3257 // (dataSource and dataSourceRef) will be set to the same value
3258 // automatically if one of them is empty and the other is
3259 // non-empty. When namespace is specified in dataSourceRef,
3260 // dataSource isn't set to the same value and must be empty.
3261 // There are three important differences between dataSource and
3262 // dataSourceRef: * While dataSource only allows two specific
3263 // types of objects, dataSourceRef
3264 // allows any non-core object, as well as PersistentVolumeClaim
3265 // objects.
3266 // * While dataSource ignores disallowed values (dropping them),
3267 // dataSourceRef
3268 // preserves all values, and generates an error if a disallowed
3269 // value is
3270 // specified.
3271 // * While dataSource only allows local objects, dataSourceRef
3272 // allows objects
3273 // in any namespaces.
3274 // (Beta) Using this field requires the AnyVolumeDataSource
3275 // feature gate to be enabled. (Alpha) Using the namespace field
3276 // of dataSourceRef requires the CrossNamespaceVolumeDataSource
3277 // feature gate to be enabled.
3278 "dataSourceRef"?: #TypedObjectReference
3279
3280 // resources represents the minimum resources the volume should
3281 // have. Users are allowed to specify resource requirements that
3282 // are lower than previous value but must still be higher than
3283 // capacity recorded in the status field of the claim. More info:
3284 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
3285 "resources"?: #VolumeResourceRequirements
3286
3287 // selector is a label query over volumes to consider for binding.
3288 "selector"?: v1.#LabelSelector
3289
3290 // storageClassName is the name of the StorageClass required by
3291 // the claim. More info:
3292 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
3293 "storageClassName"?: string
3294
3295 // volumeAttributesClassName may be used to set the
3296 // VolumeAttributesClass used by this claim. If specified, the
3297 // CSI driver will create or update the volume with the
3298 // attributes defined in the corresponding VolumeAttributesClass.
3299 // This has a different purpose than storageClassName, it can be
3300 // changed after the claim is created. An empty string or nil
3301 // value indicates that no VolumeAttributesClass will be applied
3302 // to the claim. If the claim enters an Infeasible error state,
3303 // this field can be reset to its previous value (including nil)
3304 // to cancel the modification. If the resource referred to by
3305 // volumeAttributesClass does not exist, this
3306 // PersistentVolumeClaim will be set to a Pending state, as
3307 // reflected by the modifyVolumeStatus field, until such as a
3308 // resource exists. More info:
3309 // https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
3310 "volumeAttributesClassName"?: string
3311
3312 // volumeMode defines what type of volume is required by the
3313 // claim. Value of Filesystem is implied when not included in
3314 // claim spec.
3315 "volumeMode"?: string
3316
3317 // volumeName is the binding reference to the PersistentVolume
3318 // backing this claim.
3319 "volumeName"?: string
3320}
3321
3322// PersistentVolumeClaimStatus is the current status of a
3323// persistent volume claim.
3324#PersistentVolumeClaimStatus: {
3325 // accessModes contains the actual access modes the volume backing
3326 // the PVC has. More info:
3327 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
3328 "accessModes"?: [...string]
3329
3330 // allocatedResourceStatuses stores status of resource being
3331 // resized for the given PVC. Key names follow standard
3332 // Kubernetes label syntax. Valid values are either:
3333 // * Un-prefixed keys:
3334 // - storage - the capacity of the volume.
3335 // * Custom resources must use implementation-defined prefixed
3336 // names such as "example.com/my-custom-resource"
3337 // Apart from above values - keys that are unprefixed or have
3338 // kubernetes.io prefix are considered reserved and hence may not
3339 // be used.
3340 //
3341 // ClaimResourceStatus can be in any of following states:
3342 // - ControllerResizeInProgress:
3343 // State set when resize controller starts resizing the volume in
3344 // control-plane.
3345 // - ControllerResizeFailed:
3346 // State set when resize has failed in resize controller with a
3347 // terminal error.
3348 // - NodeResizePending:
3349 // State set when resize controller has finished resizing the
3350 // volume but further resizing of
3351 // volume is needed on the node.
3352 // - NodeResizeInProgress:
3353 // State set when kubelet starts resizing the volume.
3354 // - NodeResizeFailed:
3355 // State set when resizing has failed in kubelet with a terminal
3356 // error. Transient errors don't set
3357 // NodeResizeFailed.
3358 // For example: if expanding a PVC for more capacity - this field
3359 // can be one of the following states:
3360 // - pvc.status.allocatedResourceStatus['storage'] =
3361 // "ControllerResizeInProgress"
3362 // - pvc.status.allocatedResourceStatus['storage'] =
3363 // "ControllerResizeFailed"
3364 // - pvc.status.allocatedResourceStatus['storage'] =
3365 // "NodeResizePending"
3366 // - pvc.status.allocatedResourceStatus['storage'] =
3367 // "NodeResizeInProgress"
3368 // - pvc.status.allocatedResourceStatus['storage'] =
3369 // "NodeResizeFailed"
3370 // When this field is not set, it means that no resize operation
3371 // is in progress for the given PVC.
3372 //
3373 // A controller that receives PVC update with previously unknown
3374 // resourceName or ClaimResourceStatus should ignore the update
3375 // for the purpose it was designed. For example - a controller
3376 // that only is responsible for resizing capacity of the volume,
3377 // should ignore PVC updates that change other valid resources
3378 // associated with PVC.
3379 "allocatedResourceStatuses"?: {
3380 [string]: string
3381 }
3382
3383 // allocatedResources tracks the resources allocated to a PVC
3384 // including its capacity. Key names follow standard Kubernetes
3385 // label syntax. Valid values are either:
3386 // * Un-prefixed keys:
3387 // - storage - the capacity of the volume.
3388 // * Custom resources must use implementation-defined prefixed
3389 // names such as "example.com/my-custom-resource"
3390 // Apart from above values - keys that are unprefixed or have
3391 // kubernetes.io prefix are considered reserved and hence may not
3392 // be used.
3393 //
3394 // Capacity reported here may be larger than the actual capacity
3395 // when a volume expansion operation is requested. For storage
3396 // quota, the larger value from allocatedResources and
3397 // PVC.spec.resources is used. If allocatedResources is not set,
3398 // PVC.spec.resources alone is used for quota calculation. If a
3399 // volume expansion capacity request is lowered,
3400 // allocatedResources is only lowered if there are no expansion
3401 // operations in progress and if the actual volume capacity is
3402 // equal or lower than the requested capacity.
3403 //
3404 // A controller that receives PVC update with previously unknown
3405 // resourceName should ignore the update for the purpose it was
3406 // designed. For example - a controller that only is responsible
3407 // for resizing capacity of the volume, should ignore PVC updates
3408 // that change other valid resources associated with PVC.
3409 "allocatedResources"?: {
3410 [string]: resource.#Quantity
3411 }
3412
3413 // capacity represents the actual resources of the underlying
3414 // volume.
3415 "capacity"?: {
3416 [string]: resource.#Quantity
3417 }
3418
3419 // conditions is the current Condition of persistent volume claim.
3420 // If underlying persistent volume is being resized then the
3421 // Condition will be set to 'Resizing'.
3422 "conditions"?: [...#PersistentVolumeClaimCondition]
3423
3424 // currentVolumeAttributesClassName is the current name of the
3425 // VolumeAttributesClass the PVC is using. When unset, there is
3426 // no VolumeAttributeClass applied to this PersistentVolumeClaim
3427 "currentVolumeAttributesClassName"?: string
3428
3429 // ModifyVolumeStatus represents the status object of
3430 // ControllerModifyVolume operation. When this is unset, there is
3431 // no ModifyVolume operation being attempted.
3432 "modifyVolumeStatus"?: #ModifyVolumeStatus
3433
3434 // phase represents the current phase of PersistentVolumeClaim.
3435 "phase"?: string
3436}
3437
3438// PersistentVolumeClaimTemplate is used to produce
3439// PersistentVolumeClaim objects as part of an
3440// EphemeralVolumeSource.
3441#PersistentVolumeClaimTemplate: {
3442 // May contain labels and annotations that will be copied into the
3443 // PVC when creating it. No other fields are allowed and will be
3444 // rejected during validation.
3445 "metadata"?: v1.#ObjectMeta
3446
3447 // The specification for the PersistentVolumeClaim. The entire
3448 // content is copied unchanged into the PVC that gets created
3449 // from this template. The same fields as in a
3450 // PersistentVolumeClaim are also valid here.
3451 "spec"!: #PersistentVolumeClaimSpec
3452}
3453
3454// PersistentVolumeClaimVolumeSource references the user's PVC in
3455// the same namespace. This volume finds the bound PV and mounts
3456// that volume for the pod. A PersistentVolumeClaimVolumeSource
3457// is, essentially, a wrapper around another type of volume that
3458// is owned by someone else (the system).
3459#PersistentVolumeClaimVolumeSource: {
3460 // claimName is the name of a PersistentVolumeClaim in the same
3461 // namespace as the pod using this volume. More info:
3462 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
3463 "claimName"!: string
3464
3465 // readOnly Will force the ReadOnly setting in VolumeMounts.
3466 // Default false.
3467 "readOnly"?: bool
3468}
3469
3470// PersistentVolumeList is a list of PersistentVolume items.
3471#PersistentVolumeList: {
3472 // APIVersion defines the versioned schema of this representation
3473 // of an object. Servers should convert recognized schemas to the
3474 // latest internal value, and may reject unrecognized values.
3475 // More info:
3476 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
3477 "apiVersion": "v1"
3478
3479 // items is a list of persistent volumes. More info:
3480 // https://kubernetes.io/docs/concepts/storage/persistent-volumes
3481 "items"!: [...#PersistentVolume]
3482
3483 // Kind is a string value representing the REST resource this
3484 // object represents. Servers may infer this from the endpoint
3485 // the client submits requests to. Cannot be updated. In
3486 // CamelCase. More info:
3487 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3488 "kind": "PersistentVolumeList"
3489
3490 // Standard list metadata. More info:
3491 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3492 "metadata"?: v1.#ListMeta
3493}
3494
3495// PersistentVolumeSpec is the specification of a persistent
3496// volume.
3497#PersistentVolumeSpec: {
3498 // accessModes contains all ways the volume can be mounted. More
3499 // info:
3500 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
3501 "accessModes"?: [...string]
3502
3503 // awsElasticBlockStore represents an AWS Disk resource that is
3504 // attached to a kubelet's host machine and then exposed to the
3505 // pod. Deprecated: AWSElasticBlockStore is deprecated. All
3506 // operations for the in-tree awsElasticBlockStore type are
3507 // redirected to the ebs.csi.aws.com CSI driver. More info:
3508 // https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
3509 "awsElasticBlockStore"?: #AWSElasticBlockStoreVolumeSource
3510
3511 // azureDisk represents an Azure Data Disk mount on the host and
3512 // bind mount to the pod. Deprecated: AzureDisk is deprecated.
3513 // All operations for the in-tree azureDisk type are redirected
3514 // to the disk.csi.azure.com CSI driver.
3515 "azureDisk"?: #AzureDiskVolumeSource
3516
3517 // azureFile represents an Azure File Service mount on the host
3518 // and bind mount to the pod. Deprecated: AzureFile is
3519 // deprecated. All operations for the in-tree azureFile type are
3520 // redirected to the file.csi.azure.com CSI driver.
3521 "azureFile"?: #AzureFilePersistentVolumeSource
3522
3523 // capacity is the description of the persistent volume's
3524 // resources and capacity. More info:
3525 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
3526 "capacity"?: {
3527 [string]: resource.#Quantity
3528 }
3529
3530 // cephFS represents a Ceph FS mount on the host that shares a
3531 // pod's lifetime. Deprecated: CephFS is deprecated and the
3532 // in-tree cephfs type is no longer supported.
3533 "cephfs"?: #CephFSPersistentVolumeSource
3534
3535 // cinder represents a cinder volume attached and mounted on
3536 // kubelets host machine. Deprecated: Cinder is deprecated. All
3537 // operations for the in-tree cinder type are redirected to the
3538 // cinder.csi.openstack.org CSI driver. More info:
3539 // https://examples.k8s.io/mysql-cinder-pd/README.md
3540 "cinder"?: #CinderPersistentVolumeSource
3541
3542 // claimRef is part of a bi-directional binding between
3543 // PersistentVolume and PersistentVolumeClaim. Expected to be
3544 // non-nil when bound. claim.VolumeName is the authoritative bind
3545 // between PV and PVC. More info:
3546 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
3547 "claimRef"?: #ObjectReference
3548
3549 // csi represents storage that is handled by an external CSI
3550 // driver.
3551 "csi"?: #CSIPersistentVolumeSource
3552
3553 // fc represents a Fibre Channel resource that is attached to a
3554 // kubelet's host machine and then exposed to the pod.
3555 "fc"?: #FCVolumeSource
3556
3557 // flexVolume represents a generic volume resource that is
3558 // provisioned/attached using an exec based plugin. Deprecated:
3559 // FlexVolume is deprecated. Consider using a CSIDriver instead.
3560 "flexVolume"?: #FlexPersistentVolumeSource
3561
3562 // flocker represents a Flocker volume attached to a kubelet's
3563 // host machine and exposed to the pod for its usage. This
3564 // depends on the Flocker control service being running.
3565 // Deprecated: Flocker is deprecated and the in-tree flocker type
3566 // is no longer supported.
3567 "flocker"?: #FlockerVolumeSource
3568
3569 // gcePersistentDisk represents a GCE Disk resource that is
3570 // attached to a kubelet's host machine and then exposed to the
3571 // pod. Provisioned by an admin. Deprecated: GCEPersistentDisk is
3572 // deprecated. All operations for the in-tree gcePersistentDisk
3573 // type are redirected to the pd.csi.storage.gke.io CSI driver.
3574 // More info:
3575 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
3576 "gcePersistentDisk"?: #GCEPersistentDiskVolumeSource
3577
3578 // glusterfs represents a Glusterfs volume that is attached to a
3579 // host and exposed to the pod. Provisioned by an admin.
3580 // Deprecated: Glusterfs is deprecated and the in-tree glusterfs
3581 // type is no longer supported. More info:
3582 // https://examples.k8s.io/volumes/glusterfs/README.md
3583 "glusterfs"?: #GlusterfsPersistentVolumeSource
3584
3585 // hostPath represents a directory on the host. Provisioned by a
3586 // developer or tester. This is useful for single-node
3587 // development and testing only! On-host storage is not supported
3588 // in any way and WILL NOT WORK in a multi-node cluster. More
3589 // info:
3590 // https://kubernetes.io/docs/concepts/storage/volumes#hostpath
3591 "hostPath"?: #HostPathVolumeSource
3592
3593 // iscsi represents an ISCSI Disk resource that is attached to a
3594 // kubelet's host machine and then exposed to the pod.
3595 // Provisioned by an admin.
3596 "iscsi"?: #ISCSIPersistentVolumeSource
3597
3598 // local represents directly-attached storage with node affinity
3599 "local"?: #LocalVolumeSource
3600
3601 // mountOptions is the list of mount options, e.g. ["ro", "soft"].
3602 // Not validated - mount will simply fail if one is invalid. More
3603 // info:
3604 // https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
3605 "mountOptions"?: [...string]
3606
3607 // nfs represents an NFS mount on the host. Provisioned by an
3608 // admin. More info:
3609 // https://kubernetes.io/docs/concepts/storage/volumes#nfs
3610 "nfs"?: #NFSVolumeSource
3611
3612 // nodeAffinity defines constraints that limit what nodes this
3613 // volume can be accessed from. This field influences the
3614 // scheduling of pods that use this volume. This field is mutable
3615 // if MutablePVNodeAffinity feature gate is enabled.
3616 "nodeAffinity"?: #VolumeNodeAffinity
3617
3618 // persistentVolumeReclaimPolicy defines what happens to a
3619 // persistent volume when released from its claim. Valid options
3620 // are Retain (default for manually created PersistentVolumes),
3621 // Delete (default for dynamically provisioned
3622 // PersistentVolumes), and Recycle (deprecated). Recycle must be
3623 // supported by the volume plugin underlying this
3624 // PersistentVolume. More info:
3625 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
3626 "persistentVolumeReclaimPolicy"?: string
3627
3628 // photonPersistentDisk represents a PhotonController persistent
3629 // disk attached and mounted on kubelets host machine.
3630 // Deprecated: PhotonPersistentDisk is deprecated and the in-tree
3631 // photonPersistentDisk type is no longer supported.
3632 "photonPersistentDisk"?: #PhotonPersistentDiskVolumeSource
3633
3634 // portworxVolume represents a portworx volume attached and
3635 // mounted on kubelets host machine. Deprecated: PortworxVolume
3636 // is deprecated. All operations for the in-tree portworxVolume
3637 // type are redirected to the pxd.portworx.com CSI driver.
3638 "portworxVolume"?: #PortworxVolumeSource
3639
3640 // quobyte represents a Quobyte mount on the host that shares a
3641 // pod's lifetime. Deprecated: Quobyte is deprecated and the
3642 // in-tree quobyte type is no longer supported.
3643 "quobyte"?: #QuobyteVolumeSource
3644
3645 // rbd represents a Rados Block Device mount on the host that
3646 // shares a pod's lifetime. Deprecated: RBD is deprecated and the
3647 // in-tree rbd type is no longer supported. More info:
3648 // https://examples.k8s.io/volumes/rbd/README.md
3649 "rbd"?: #RBDPersistentVolumeSource
3650
3651 // scaleIO represents a ScaleIO persistent volume attached and
3652 // mounted on Kubernetes nodes. Deprecated: ScaleIO is deprecated
3653 // and the in-tree scaleIO type is no longer supported.
3654 "scaleIO"?: #ScaleIOPersistentVolumeSource
3655
3656 // storageClassName is the name of StorageClass to which this
3657 // persistent volume belongs. Empty value means that this volume
3658 // does not belong to any StorageClass.
3659 "storageClassName"?: string
3660
3661 // storageOS represents a StorageOS volume that is attached to the
3662 // kubelet's host machine and mounted into the pod. Deprecated:
3663 // StorageOS is deprecated and the in-tree storageos type is no
3664 // longer supported. More info:
3665 // https://examples.k8s.io/volumes/storageos/README.md
3666 "storageos"?: #StorageOSPersistentVolumeSource
3667
3668 // Name of VolumeAttributesClass to which this persistent volume
3669 // belongs. Empty value is not allowed. When this field is not
3670 // set, it indicates that this volume does not belong to any
3671 // VolumeAttributesClass. This field is mutable and can be
3672 // changed by the CSI driver after a volume has been updated
3673 // successfully to a new class. For an unbound PersistentVolume,
3674 // the volumeAttributesClassName will be matched with unbound
3675 // PersistentVolumeClaims during the binding process.
3676 "volumeAttributesClassName"?: string
3677
3678 // volumeMode defines if a volume is intended to be used with a
3679 // formatted filesystem or to remain in raw block state. Value of
3680 // Filesystem is implied when not included in spec.
3681 "volumeMode"?: string
3682
3683 // vsphereVolume represents a vSphere volume attached and mounted
3684 // on kubelets host machine. Deprecated: VsphereVolume is
3685 // deprecated. All operations for the in-tree vsphereVolume type
3686 // are redirected to the csi.vsphere.vmware.com CSI driver.
3687 "vsphereVolume"?: #VsphereVirtualDiskVolumeSource
3688}
3689
3690// PersistentVolumeStatus is the current status of a persistent
3691// volume.
3692#PersistentVolumeStatus: {
3693 // lastPhaseTransitionTime is the time the phase transitioned from
3694 // one to another and automatically resets to current time
3695 // everytime a volume phase transitions.
3696 "lastPhaseTransitionTime"?: v1.#Time
3697
3698 // message is a human-readable message indicating details about
3699 // why the volume is in this state.
3700 "message"?: string
3701
3702 // phase indicates if a volume is available, bound to a claim, or
3703 // released by a claim. More info:
3704 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
3705 "phase"?: string
3706
3707 // reason is a brief CamelCase string that describes any failure
3708 // and is meant for machine parsing and tidy display in the CLI.
3709 "reason"?: string
3710}
3711
3712// Represents a Photon Controller persistent disk resource.
3713#PhotonPersistentDiskVolumeSource: {
3714 // fsType is the filesystem type to mount. Must be a filesystem
3715 // type supported by the host operating system. Ex. "ext4",
3716 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
3717 // unspecified.
3718 "fsType"?: string
3719
3720 // pdID is the ID that identifies Photon Controller persistent
3721 // disk
3722 "pdID"!: string
3723}
3724
3725// Pod is a collection of containers that can run on a host. This
3726// resource is created by clients and scheduled onto hosts.
3727#Pod: {
3728 // APIVersion defines the versioned schema of this representation
3729 // of an object. Servers should convert recognized schemas to the
3730 // latest internal value, and may reject unrecognized values.
3731 // More info:
3732 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
3733 "apiVersion": "v1"
3734
3735 // Kind is a string value representing the REST resource this
3736 // object represents. Servers may infer this from the endpoint
3737 // the client submits requests to. Cannot be updated. In
3738 // CamelCase. More info:
3739 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
3740 "kind": "Pod"
3741
3742 // Standard object's metadata. More info:
3743 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
3744 "metadata"?: v1.#ObjectMeta
3745
3746 // Specification of the desired behavior of the pod. More info:
3747 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
3748 "spec"?: #PodSpec
3749
3750 // Most recently observed status of the pod. This data may not be
3751 // up to date. Populated by the system. Read-only. More info:
3752 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
3753 "status"?: #PodStatus
3754}
3755
3756// Pod affinity is a group of inter pod affinity scheduling rules.
3757#PodAffinity: {
3758 // The scheduler will prefer to schedule pods to nodes that
3759 // satisfy the affinity expressions specified by this field, but
3760 // it may choose a node that violates one or more of the
3761 // expressions. The node that is most preferred is the one with
3762 // the greatest sum of weights, i.e. for each node that meets all
3763 // of the scheduling requirements (resource request,
3764 // requiredDuringScheduling affinity expressions, etc.), compute
3765 // a sum by iterating through the elements of this field and
3766 // adding "weight" to the sum if the node has pods which matches
3767 // the corresponding podAffinityTerm; the node(s) with the
3768 // highest sum are the most preferred.
3769 "preferredDuringSchedulingIgnoredDuringExecution"?: [...#WeightedPodAffinityTerm]
3770
3771 // If the affinity requirements specified by this field are not
3772 // met at scheduling time, the pod will not be scheduled onto the
3773 // node. If the affinity requirements specified by this field
3774 // cease to be met at some point during pod execution (e.g. due
3775 // to a pod label update), the system may or may not try to
3776 // eventually evict the pod from its node. When there are
3777 // multiple elements, the lists of nodes corresponding to each
3778 // podAffinityTerm are intersected, i.e. all terms must be
3779 // satisfied.
3780 "requiredDuringSchedulingIgnoredDuringExecution"?: [...#PodAffinityTerm]
3781}
3782
3783// Defines a set of pods (namely those matching the labelSelector
3784// relative to the given namespace(s)) that this pod should be
3785// co-located (affinity) or not co-located (anti-affinity) with,
3786// where co-located is defined as running on a node whose value
3787// of the label with key <topologyKey> matches that of any node
3788// on which a pod of the set of pods is running
3789#PodAffinityTerm: {
3790 // A label query over a set of resources, in this case pods. If
3791 // it's null, this PodAffinityTerm matches with no Pods.
3792 "labelSelector"?: v1.#LabelSelector
3793
3794 // MatchLabelKeys is a set of pod label keys to select which pods
3795 // will be taken into consideration. The keys are used to lookup
3796 // values from the incoming pod labels, those key-value labels
3797 // are merged with `labelSelector` as `key in (value)` to select
3798 // the group of existing pods which pods will be taken into
3799 // consideration for the incoming pod's pod (anti) affinity. Keys
3800 // that don't exist in the incoming pod labels will be ignored.
3801 // The default value is empty. The same key is forbidden to exist
3802 // in both matchLabelKeys and labelSelector. Also, matchLabelKeys
3803 // cannot be set when labelSelector isn't set.
3804 "matchLabelKeys"?: [...string]
3805
3806 // MismatchLabelKeys is a set of pod label keys to select which
3807 // pods will be taken into consideration. The keys are used to
3808 // lookup values from the incoming pod labels, those key-value
3809 // labels are merged with `labelSelector` as `key notin (value)`
3810 // to select the group of existing pods which pods will be taken
3811 // into consideration for the incoming pod's pod (anti) affinity.
3812 // Keys that don't exist in the incoming pod labels will be
3813 // ignored. The default value is empty. The same key is forbidden
3814 // to exist in both mismatchLabelKeys and labelSelector. Also,
3815 // mismatchLabelKeys cannot be set when labelSelector isn't set.
3816 "mismatchLabelKeys"?: [...string]
3817
3818 // A label query over the set of namespaces that the term applies
3819 // to. The term is applied to the union of the namespaces
3820 // selected by this field and the ones listed in the namespaces
3821 // field. null selector and null or empty namespaces list means
3822 // "this pod's namespace". An empty selector ({}) matches all
3823 // namespaces.
3824 "namespaceSelector"?: v1.#LabelSelector
3825
3826 // namespaces specifies a static list of namespace names that the
3827 // term applies to. The term is applied to the union of the
3828 // namespaces listed in this field and the ones selected by
3829 // namespaceSelector. null or empty namespaces list and null
3830 // namespaceSelector means "this pod's namespace".
3831 "namespaces"?: [...string]
3832
3833 // This pod should be co-located (affinity) or not co-located
3834 // (anti-affinity) with the pods matching the labelSelector in
3835 // the specified namespaces, where co-located is defined as
3836 // running on a node whose value of the label with key
3837 // topologyKey matches that of any node on which any of the
3838 // selected pods is running. Empty topologyKey is not allowed.
3839 "topologyKey"!: string
3840}
3841
3842// Pod anti affinity is a group of inter pod anti affinity
3843// scheduling rules.
3844#PodAntiAffinity: {
3845 // The scheduler will prefer to schedule pods to nodes that
3846 // satisfy the anti-affinity expressions specified by this field,
3847 // but it may choose a node that violates one or more of the
3848 // expressions. The node that is most preferred is the one with
3849 // the greatest sum of weights, i.e. for each node that meets all
3850 // of the scheduling requirements (resource request,
3851 // requiredDuringScheduling anti-affinity expressions, etc.),
3852 // compute a sum by iterating through the elements of this field
3853 // and subtracting "weight" from the sum if the node has pods
3854 // which matches the corresponding podAffinityTerm; the node(s)
3855 // with the highest sum are the most preferred.
3856 "preferredDuringSchedulingIgnoredDuringExecution"?: [...#WeightedPodAffinityTerm]
3857
3858 // If the anti-affinity requirements specified by this field are
3859 // not met at scheduling time, the pod will not be scheduled onto
3860 // the node. If the anti-affinity requirements specified by this
3861 // field cease to be met at some point during pod execution (e.g.
3862 // due to a pod label update), the system may or may not try to
3863 // eventually evict the pod from its node. When there are
3864 // multiple elements, the lists of nodes corresponding to each
3865 // podAffinityTerm are intersected, i.e. all terms must be
3866 // satisfied.
3867 "requiredDuringSchedulingIgnoredDuringExecution"?: [...#PodAffinityTerm]
3868}
3869
3870// PodCertificateProjection provides a private key and X.509
3871// certificate in the pod filesystem.
3872#PodCertificateProjection: {
3873 // Write the certificate chain at this path in the projected
3874 // volume.
3875 //
3876 // Most applications should use credentialBundlePath. When using
3877 // keyPath and certificateChainPath, your application needs to
3878 // check that the key and leaf certificate are consistent,
3879 // because it is possible to read the files mid-rotation.
3880 "certificateChainPath"?: string
3881
3882 // Write the credential bundle at this path in the projected
3883 // volume.
3884 //
3885 // The credential bundle is a single file that contains multiple
3886 // PEM blocks. The first PEM block is a PRIVATE KEY block,
3887 // containing a PKCS#8 private key.
3888 //
3889 // The remaining blocks are CERTIFICATE blocks, containing the
3890 // issued certificate chain from the signer (leaf and any
3891 // intermediates).
3892 //
3893 // Using credentialBundlePath lets your Pod's application code
3894 // make a single atomic read that retrieves a consistent key and
3895 // certificate chain. If you project them to separate files, your
3896 // application code will need to additionally check that the leaf
3897 // certificate was issued to the key.
3898 "credentialBundlePath"?: string
3899
3900 // Write the key at this path in the projected volume.
3901 //
3902 // Most applications should use credentialBundlePath. When using
3903 // keyPath and certificateChainPath, your application needs to
3904 // check that the key and leaf certificate are consistent,
3905 // because it is possible to read the files mid-rotation.
3906 "keyPath"?: string
3907
3908 // The type of keypair Kubelet will generate for the pod.
3909 //
3910 // Valid values are "RSA3072", "RSA4096", "ECDSAP256",
3911 // "ECDSAP384", "ECDSAP521", and "ED25519".
3912 "keyType"!: string
3913
3914 // maxExpirationSeconds is the maximum lifetime permitted for the
3915 // certificate.
3916 //
3917 // Kubelet copies this value verbatim into the
3918 // PodCertificateRequests it generates for this projection.
3919 //
3920 // If omitted, kube-apiserver will set it to 86400(24 hours).
3921 // kube-apiserver will reject values shorter than 3600 (1 hour).
3922 // The maximum allowable value is 7862400 (91 days).
3923 //
3924 // The signer implementation is then free to issue a certificate
3925 // with any lifetime *shorter* than MaxExpirationSeconds, but no
3926 // shorter than 3600 seconds (1 hour). This constraint is
3927 // enforced by kube-apiserver. `kubernetes.io` signers will never
3928 // issue certificates with a lifetime longer than 24 hours.
3929 "maxExpirationSeconds"?: int32 & int
3930
3931 // Kubelet's generated CSRs will be addressed to this signer.
3932 "signerName"!: string
3933
3934 // userAnnotations allow pod authors to pass additional
3935 // information to the signer implementation. Kubernetes does not
3936 // restrict or validate this metadata in any way.
3937 //
3938 // These values are copied verbatim into the
3939 // `spec.unverifiedUserAnnotations` field of the
3940 // PodCertificateRequest objects that Kubelet creates.
3941 //
3942 // Entries are subject to the same validation as object metadata
3943 // annotations, with the addition that all keys must be
3944 // domain-prefixed. No restrictions are placed on values, except
3945 // an overall size limitation on the entire field.
3946 //
3947 // Signers should document the keys and values they support.
3948 // Signers should deny requests that contain keys they do not
3949 // recognize.
3950 "userAnnotations"?: {
3951 [string]: string
3952 }
3953}
3954
3955// PodCondition contains details for the current condition of this
3956// pod.
3957#PodCondition: {
3958 // Last time we probed the condition.
3959 "lastProbeTime"?: v1.#Time
3960
3961 // Last time the condition transitioned from one status to
3962 // another.
3963 "lastTransitionTime"?: v1.#Time
3964
3965 // Human-readable message indicating details about last
3966 // transition.
3967 "message"?: string
3968
3969 // If set, this represents the .metadata.generation that the pod
3970 // condition was set based upon.
3971 "observedGeneration"?: int64 & int
3972
3973 // Unique, one-word, CamelCase reason for the condition's last
3974 // transition.
3975 "reason"?: string
3976
3977 // Status is the status of the condition. Can be True, False,
3978 // Unknown. More info:
3979 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
3980 "status"!: string
3981
3982 // Type is the type of the condition. More info:
3983 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
3984 "type"!: string
3985}
3986
3987// PodDNSConfig defines the DNS parameters of a pod in addition to
3988// those generated from DNSPolicy.
3989#PodDNSConfig: {
3990 // A list of DNS name server IP addresses. This will be appended
3991 // to the base nameservers generated from DNSPolicy. Duplicated
3992 // nameservers will be removed.
3993 "nameservers"?: [...string]
3994
3995 // A list of DNS resolver options. This will be merged with the
3996 // base options generated from DNSPolicy. Duplicated entries will
3997 // be removed. Resolution options given in Options will override
3998 // those that appear in the base DNSPolicy.
3999 "options"?: [...#PodDNSConfigOption]
4000
4001 // A list of DNS search domains for host-name lookup. This will be
4002 // appended to the base search paths generated from DNSPolicy.
4003 // Duplicated search paths will be removed.
4004 "searches"?: [...string]
4005}
4006
4007// PodDNSConfigOption defines DNS resolver options of a pod.
4008#PodDNSConfigOption: {
4009 // Name is this DNS resolver option's name. Required.
4010 "name"?: string
4011
4012 // Value is this DNS resolver option's value.
4013 "value"?: string
4014}
4015
4016// PodExtendedResourceClaimStatus is stored in the PodStatus for
4017// the extended resource requests backed by DRA. It stores the
4018// generated name for the corresponding special ResourceClaim
4019// created by the scheduler.
4020#PodExtendedResourceClaimStatus: {
4021 // RequestMappings identifies the mapping of <container, extended
4022 // resource backed by DRA> to device request in the generated
4023 // ResourceClaim.
4024 "requestMappings"!: [...#ContainerExtendedResourceRequest]
4025
4026 // ResourceClaimName is the name of the ResourceClaim that was
4027 // generated for the Pod in the namespace of the Pod.
4028 "resourceClaimName"!: string
4029}
4030
4031// PodIP represents a single IP address allocated to the pod.
4032#PodIP: {
4033 // IP is the IP address assigned to the pod
4034 "ip"!: string
4035}
4036
4037// PodList is a list of Pods.
4038#PodList: {
4039 // APIVersion defines the versioned schema of this representation
4040 // of an object. Servers should convert recognized schemas to the
4041 // latest internal value, and may reject unrecognized values.
4042 // More info:
4043 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
4044 "apiVersion": "v1"
4045
4046 // List of pods. More info:
4047 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
4048 "items"!: [...#Pod]
4049
4050 // Kind is a string value representing the REST resource this
4051 // object represents. Servers may infer this from the endpoint
4052 // the client submits requests to. Cannot be updated. In
4053 // CamelCase. More info:
4054 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
4055 "kind": "PodList"
4056
4057 // Standard list metadata. More info:
4058 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
4059 "metadata"?: v1.#ListMeta
4060}
4061
4062// PodOS defines the OS parameters of a pod.
4063#PodOS: {
4064 // Name is the name of the operating system. The currently
4065 // supported values are linux and windows. Additional value may
4066 // be defined in future and can be one of:
4067 // https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration
4068 // Clients should expect to handle additional values and treat
4069 // unrecognized values in this field as os: null
4070 "name"!: string
4071}
4072
4073// PodReadinessGate contains the reference to a pod condition
4074#PodReadinessGate: {
4075 // ConditionType refers to a condition in the pod's condition list
4076 // with matching type.
4077 "conditionType"!: string
4078}
4079
4080// PodResourceClaim references exactly one ResourceClaim, either
4081// directly or by naming a ResourceClaimTemplate which is then
4082// turned into a ResourceClaim for the pod.
4083//
4084// It adds a name to it that uniquely identifies the ResourceClaim
4085// inside the Pod. Containers that need access to the
4086// ResourceClaim reference it with this name.
4087//
4088// When the DRAWorkloadResourceClaims feature gate is enabled and
4089// this Pod belongs to a PodGroup, a PodResourceClaim is matched
4090// to a PodGroupResourceClaim if all of their fields are equal
4091// (Name, ResourceClaimName, and ResourceClaimTemplateName). A
4092// matched claim references a single ResourceClaim shared across
4093// all Pods in the PodGroup, reserved for the PodGroup in
4094// ResourceClaimStatus.ReservedFor rather than for individual
4095// Pods.
4096#PodResourceClaim: {
4097 // Name uniquely identifies this resource claim inside the pod.
4098 // This must be a DNS_LABEL.
4099 "name"!: string
4100
4101 // ResourceClaimName is the name of a ResourceClaim object in the
4102 // same namespace as this pod.
4103 //
4104 // Exactly one of ResourceClaimName and ResourceClaimTemplateName
4105 // must be set.
4106 "resourceClaimName"?: string
4107
4108 // ResourceClaimTemplateName is the name of a
4109 // ResourceClaimTemplate object in the same namespace as this
4110 // pod.
4111 //
4112 // The template will be used to create a new ResourceClaim, which
4113 // will be bound to this pod. When this pod is deleted, the
4114 // ResourceClaim will also be deleted. The pod name and resource
4115 // name, along with a generated component, will be used to form a
4116 // unique name for the ResourceClaim, which will be recorded in
4117 // pod.status.resourceClaimStatuses.
4118 //
4119 // When the DRAWorkloadResourceClaims feature gate is enabled and
4120 // the pod belongs to a PodGroup that defines a
4121 // PodGroupResourceClaim with the same Name and
4122 // ResourceClaimTemplateName, this PodResourceClaim resolves to
4123 // the ResourceClaim generated for the PodGroup. All pods in the
4124 // group that define an equivalent PodResourceClaim matching the
4125 // PodGroupResourceClaim's Name and ResourceClaimTemplateName
4126 // share the same generated ResourceClaim. ResourceClaims
4127 // generated for a PodGroup are owned by the PodGroup and their
4128 // lifecycles are tied to the PodGroup instead of any individual
4129 // pod.
4130 //
4131 // This field is immutable and no changes will be made to the
4132 // corresponding ResourceClaim by the control plane after
4133 // creating the ResourceClaim.
4134 //
4135 // Exactly one of ResourceClaimName and ResourceClaimTemplateName
4136 // must be set.
4137 "resourceClaimTemplateName"?: string
4138}
4139
4140// PodResourceClaimStatus is stored in the PodStatus for each
4141// PodResourceClaim which references a ResourceClaimTemplate. It
4142// stores the generated name for the corresponding ResourceClaim.
4143#PodResourceClaimStatus: {
4144 // Name uniquely identifies this resource claim inside the pod.
4145 // This must match the name of an entry in
4146 // pod.spec.resourceClaims, which implies that the string must be
4147 // a DNS_LABEL.
4148 "name"!: string
4149
4150 // ResourceClaimName is the name of the ResourceClaim that was
4151 // generated for the Pod in the namespace of the Pod.
4152 //
4153 // When the DRAWorkloadResourceClaims feature is enabled and the
4154 // corresponding PodResourceClaim matches a PodGroupResourceClaim
4155 // made by the Pod's PodGroup, then this is the name of the
4156 // ResourceClaim generated and reserved for the PodGroup.
4157 //
4158 // If this is unset, then generating a ResourceClaim was not
4159 // necessary. The pod.spec.resourceClaims entry can be ignored in
4160 // this case.
4161 "resourceClaimName"?: string
4162}
4163
4164// PodSchedulingGate is associated to a Pod to guard its
4165// scheduling.
4166#PodSchedulingGate: {
4167 // Name of the scheduling gate. Each scheduling gate must have a
4168 // unique name field.
4169 "name"!: string
4170}
4171
4172// PodSchedulingGroup identifies the runtime scheduling group
4173// instance that a Pod belongs to. The scheduler uses this
4174// information to apply workload-aware scheduling semantics.
4175// Exactly one field must be specified.
4176#PodSchedulingGroup: {
4177 // PodGroupName specifies the name of the standalone PodGroup
4178 // object that represents the runtime instance of this group.
4179 // Must be a DNS subdomain.
4180 "podGroupName"?: string
4181}
4182
4183// PodSecurityContext holds pod-level security attributes and
4184// common container settings. Some fields are also present in
4185// container.securityContext. Field values of
4186// container.securityContext take precedence over field values of
4187// PodSecurityContext.
4188#PodSecurityContext: {
4189 // appArmorProfile is the AppArmor options to use by the
4190 // containers in this pod. Note that this field cannot be set
4191 // when spec.os.name is windows.
4192 "appArmorProfile"?: #AppArmorProfile
4193
4194 // A special supplemental group that applies to all containers in
4195 // a pod. Some volume types allow the Kubelet to change the
4196 // ownership of that volume to be owned by the pod:
4197 //
4198 // 1. The owning GID will be the FSGroup 2. The setgid bit is set
4199 // (new files created in the volume will be owned by FSGroup) 3.
4200 // The permission bits are OR'd with rw-rw----
4201 //
4202 // If unset, the Kubelet will not modify the ownership and
4203 // permissions of any volume. Note that this field cannot be set
4204 // when spec.os.name is windows.
4205 "fsGroup"?: int64 & int
4206
4207 // fsGroupChangePolicy defines behavior of changing ownership and
4208 // permission of the volume before being exposed inside Pod. This
4209 // field will only apply to volume types which support fsGroup
4210 // based ownership(and permissions). It will have no effect on
4211 // ephemeral volume types such as: secret, configmaps and
4212 // emptydir. Valid values are "OnRootMismatch" and "Always". If
4213 // not specified, "Always" is used. Note that this field cannot
4214 // be set when spec.os.name is windows.
4215 "fsGroupChangePolicy"?: string
4216
4217 // The GID to run the entrypoint of the container process. Uses
4218 // runtime default if unset. May also be set in SecurityContext.
4219 // If set in both SecurityContext and PodSecurityContext, the
4220 // value specified in SecurityContext takes precedence for that
4221 // container. Note that this field cannot be set when
4222 // spec.os.name is windows.
4223 "runAsGroup"?: int64 & int
4224
4225 // Indicates that the container must run as a non-root user. If
4226 // true, the Kubelet will validate the image at runtime to ensure
4227 // that it does not run as UID 0 (root) and fail to start the
4228 // container if it does. If unset or false, no such validation
4229 // will be performed. May also be set in SecurityContext. If set
4230 // in both SecurityContext and PodSecurityContext, the value
4231 // specified in SecurityContext takes precedence.
4232 "runAsNonRoot"?: bool
4233
4234 // The UID to run the entrypoint of the container process.
4235 // Defaults to user specified in image metadata if unspecified.
4236 // May also be set in SecurityContext. If set in both
4237 // SecurityContext and PodSecurityContext, the value specified in
4238 // SecurityContext takes precedence for that container. Note that
4239 // this field cannot be set when spec.os.name is windows.
4240 "runAsUser"?: int64 & int
4241
4242 // seLinuxChangePolicy defines how the container's SELinux label
4243 // is applied to all volumes used by the Pod. It has no effect on
4244 // nodes that do not support SELinux or to volumes does not
4245 // support SELinux. Valid values are "MountOption" and
4246 // "Recursive".
4247 //
4248 // "Recursive" means relabeling of all files on all Pod volumes by
4249 // the container runtime. This may be slow for large volumes, but
4250 // allows mixing privileged and unprivileged Pods sharing the
4251 // same volume on the same node.
4252 //
4253 // "MountOption" mounts all eligible Pod volumes with `-o context`
4254 // mount option. This requires all Pods that share the same
4255 // volume to use the same SELinux label. It is not possible to
4256 // share the same volume among privileged and unprivileged Pods.
4257 // Eligible volumes are in-tree FibreChannel and iSCSI volumes,
4258 // and all CSI volumes whose CSI driver announces SELinux support
4259 // by setting spec.seLinuxMount: true in their CSIDriver
4260 // instance. Other volumes are always re-labelled recursively.
4261 // "MountOption" value is allowed only when SELinuxMount feature
4262 // gate is enabled.
4263 //
4264 // If not specified and SELinuxMount feature gate is enabled,
4265 // "MountOption" is used. If not specified and SELinuxMount
4266 // feature gate is disabled, "MountOption" is used for
4267 // ReadWriteOncePod volumes and "Recursive" for all other
4268 // volumes.
4269 //
4270 // This field affects only Pods that have SELinux label set,
4271 // either in PodSecurityContext or in SecurityContext of all
4272 // containers.
4273 //
4274 // All Pods that use the same volume should use the same
4275 // seLinuxChangePolicy, otherwise some pods can get stuck in
4276 // ContainerCreating state. Note that this field cannot be set
4277 // when spec.os.name is windows.
4278 "seLinuxChangePolicy"?: string
4279
4280 // The SELinux context to be applied to all containers. If
4281 // unspecified, the container runtime will allocate a random
4282 // SELinux context for each container. May also be set in
4283 // SecurityContext. If set in both SecurityContext and
4284 // PodSecurityContext, the value specified in SecurityContext
4285 // takes precedence for that container. Note that this field
4286 // cannot be set when spec.os.name is windows.
4287 "seLinuxOptions"?: #SELinuxOptions
4288
4289 // The seccomp options to use by the containers in this pod. Note
4290 // that this field cannot be set when spec.os.name is windows.
4291 "seccompProfile"?: #SeccompProfile
4292
4293 // A list of groups applied to the first process run in each
4294 // container, in addition to the container's primary GID and
4295 // fsGroup (if specified). If the SupplementalGroupsPolicy
4296 // feature is enabled, the supplementalGroupsPolicy field
4297 // determines whether these are in addition to or instead of any
4298 // group memberships defined in the container image. If
4299 // unspecified, no additional groups are added, though group
4300 // memberships defined in the container image may still be used,
4301 // depending on the supplementalGroupsPolicy field. Note that
4302 // this field cannot be set when spec.os.name is windows.
4303 "supplementalGroups"?: [...int64 & int]
4304
4305 // Defines how supplemental groups of the first container
4306 // processes are calculated. Valid values are "Merge" and
4307 // "Strict". If not specified, "Merge" is used. (Alpha) Using the
4308 // field requires the SupplementalGroupsPolicy feature gate to be
4309 // enabled and the container runtime must implement support for
4310 // this feature. Note that this field cannot be set when
4311 // spec.os.name is windows.
4312 "supplementalGroupsPolicy"?: string
4313
4314 // Sysctls hold a list of namespaced sysctls used for the pod.
4315 // Pods with unsupported sysctls (by the container runtime) might
4316 // fail to launch. Note that this field cannot be set when
4317 // spec.os.name is windows.
4318 "sysctls"?: [...#Sysctl]
4319
4320 // The Windows specific settings applied to all containers. If
4321 // unspecified, the options within a container's SecurityContext
4322 // will be used. If set in both SecurityContext and
4323 // PodSecurityContext, the value specified in SecurityContext
4324 // takes precedence. Note that this field cannot be set when
4325 // spec.os.name is linux.
4326 "windowsOptions"?: #WindowsSecurityContextOptions
4327}
4328
4329// PodSpec is a description of a pod.
4330#PodSpec: {
4331 // Optional duration in seconds the pod may be active on the node
4332 // relative to StartTime before the system will actively try to
4333 // mark it failed and kill associated containers. Value must be a
4334 // positive integer.
4335 "activeDeadlineSeconds"?: int64 & int
4336
4337 // If specified, the pod's scheduling constraints
4338 "affinity"?: #Affinity
4339
4340 // AutomountServiceAccountToken indicates whether a service
4341 // account token should be automatically mounted.
4342 "automountServiceAccountToken"?: bool
4343
4344 // List of containers belonging to the pod. Containers cannot
4345 // currently be added or removed. There must be at least one
4346 // container in a Pod. Cannot be updated.
4347 "containers"!: [...#Container]
4348
4349 // Specifies the DNS parameters of a pod. Parameters specified
4350 // here will be merged to the generated DNS configuration based
4351 // on DNSPolicy.
4352 "dnsConfig"?: #PodDNSConfig
4353
4354 // Set DNS policy for the pod. Defaults to "ClusterFirst". Valid
4355 // values are 'ClusterFirstWithHostNet', 'ClusterFirst',
4356 // 'Default' or 'None'. DNS parameters given in DNSConfig will be
4357 // merged with the policy selected with DNSPolicy. To have DNS
4358 // options set along with hostNetwork, you have to specify DNS
4359 // policy explicitly to 'ClusterFirstWithHostNet'.
4360 "dnsPolicy"?: string
4361
4362 // EnableServiceLinks indicates whether information about services
4363 // should be injected into pod's environment variables, matching
4364 // the syntax of Docker links. Optional: Defaults to true.
4365 "enableServiceLinks"?: bool
4366
4367 // List of ephemeral containers run in this pod. Ephemeral
4368 // containers may be run in an existing pod to perform
4369 // user-initiated actions such as debugging. This list cannot be
4370 // specified when creating a pod, and it cannot be modified by
4371 // updating the pod spec. In order to add an ephemeral container
4372 // to an existing pod, use the pod's ephemeralcontainers
4373 // subresource.
4374 "ephemeralContainers"?: [...#EphemeralContainer]
4375
4376 // HostAliases is an optional list of hosts and IPs that will be
4377 // injected into the pod's hosts file if specified.
4378 "hostAliases"?: [...#HostAlias]
4379
4380 // Use the host's ipc namespace. Optional: Default to false.
4381 "hostIPC"?: bool
4382
4383 // Host networking requested for this pod. Use the host's network
4384 // namespace. When using HostNetwork you should specify ports so
4385 // the scheduler is aware. When `hostNetwork` is true, specified
4386 // `hostPort` fields in port definitions must match
4387 // `containerPort`, and unspecified `hostPort` fields in port
4388 // definitions are defaulted to match `containerPort`. Default to
4389 // false.
4390 "hostNetwork"?: bool
4391
4392 // Use the host's pid namespace. Optional: Default to false.
4393 "hostPID"?: bool
4394
4395 // Use the host's user namespace. Optional: Default to true. If
4396 // set to true or not present, the pod will be run in the host
4397 // user namespace, useful for when the pod needs a feature only
4398 // available to the host user namespace, such as loading a kernel
4399 // module with CAP_SYS_MODULE. When set to false, a new userns is
4400 // created for the pod. Setting false is useful for mitigating
4401 // container breakout vulnerabilities even allowing users to run
4402 // their containers as root without actually having root
4403 // privileges on the host.
4404 "hostUsers"?: bool
4405
4406 // Specifies the hostname of the Pod If not specified, the pod's
4407 // hostname will be set to a system-defined value.
4408 "hostname"?: string
4409
4410 // HostnameOverride specifies an explicit override for the pod's
4411 // hostname as perceived by the pod. This field only specifies
4412 // the pod's hostname and does not affect its DNS records. When
4413 // this field is set to a non-empty string: - It takes precedence
4414 // over the values set in `hostname` and `subdomain`. - The Pod's
4415 // hostname will be set to this value. - `setHostnameAsFQDN` must
4416 // be nil or set to false. - `hostNetwork` must be set to false.
4417 //
4418 // This field must be a valid DNS subdomain as defined in RFC 1123
4419 // and contain at most 64 characters. Requires the
4420 // HostnameOverride feature gate to be enabled.
4421 "hostnameOverride"?: string
4422
4423 // ImagePullSecrets is an optional list of references to secrets
4424 // in the same namespace to use for pulling any of the images
4425 // used by this PodSpec. If specified, these secrets will be
4426 // passed to individual puller implementations for them to use.
4427 // More info:
4428 // https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
4429 "imagePullSecrets"?: [...#LocalObjectReference]
4430
4431 // List of initialization containers belonging to the pod. Init
4432 // containers are executed in order prior to containers being
4433 // started. If any init container fails, the pod is considered to
4434 // have failed and is handled according to its restartPolicy. The
4435 // name for an init container or normal container must be unique
4436 // among all containers. Init containers may not have Lifecycle
4437 // actions, Readiness probes, Liveness probes, or Startup probes.
4438 // The resourceRequirements of an init container are taken into
4439 // account during scheduling by finding the highest request/limit
4440 // for each resource type, and then using the max of that value
4441 // or the sum of the normal containers. Limits are applied to
4442 // init containers in a similar fashion. Init containers cannot
4443 // currently be added or removed. Cannot be updated. More info:
4444 // https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
4445 "initContainers"?: [...#Container]
4446
4447 // NodeName indicates in which node this pod is scheduled. If
4448 // empty, this pod is a candidate for scheduling by the scheduler
4449 // defined in schedulerName. Once this field is set, the kubelet
4450 // for this node becomes responsible for the lifecycle of this
4451 // pod. This field should not be used to express a desire for the
4452 // pod to be scheduled on a specific node.
4453 // https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename
4454 "nodeName"?: string
4455
4456 // NodeSelector is a selector which must be true for the pod to
4457 // fit on a node. Selector which must match a node's labels for
4458 // the pod to be scheduled on that node. More info:
4459 // https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
4460 "nodeSelector"?: {
4461 [string]: string
4462 }
4463
4464 // Specifies the OS of the containers in the pod. Some pod and
4465 // container fields are restricted if this is set.
4466 //
4467 // If the OS field is set to linux, the following fields must be
4468 // unset: -securityContext.windowsOptions
4469 //
4470 // If the OS field is set to windows, following fields must be
4471 // unset: - spec.hostPID - spec.hostIPC - spec.hostUsers -
4472 // spec.resources - spec.securityContext.appArmorProfile -
4473 // spec.securityContext.seLinuxOptions -
4474 // spec.securityContext.seccompProfile -
4475 // spec.securityContext.fsGroup -
4476 // spec.securityContext.fsGroupChangePolicy -
4477 // spec.securityContext.sysctls - spec.shareProcessNamespace -
4478 // spec.securityContext.runAsUser -
4479 // spec.securityContext.runAsGroup -
4480 // spec.securityContext.supplementalGroups -
4481 // spec.securityContext.supplementalGroupsPolicy -
4482 // spec.containers[*].securityContext.appArmorProfile -
4483 // spec.containers[*].securityContext.seLinuxOptions -
4484 // spec.containers[*].securityContext.seccompProfile -
4485 // spec.containers[*].securityContext.capabilities -
4486 // spec.containers[*].securityContext.readOnlyRootFilesystem -
4487 // spec.containers[*].securityContext.privileged -
4488 // spec.containers[*].securityContext.allowPrivilegeEscalation -
4489 // spec.containers[*].securityContext.procMount -
4490 // spec.containers[*].securityContext.runAsUser -
4491 // spec.containers[*].securityContext.runAsGroup
4492 "os"?: #PodOS
4493
4494 // Overhead represents the resource overhead associated with
4495 // running a pod for a given RuntimeClass. This field will be
4496 // autopopulated at admission time by the RuntimeClass admission
4497 // controller. If the RuntimeClass admission controller is
4498 // enabled, overhead must not be set in Pod create requests. The
4499 // RuntimeClass admission controller will reject Pod create
4500 // requests which have the overhead already set. If RuntimeClass
4501 // is configured and selected in the PodSpec, Overhead will be
4502 // set to the value defined in the corresponding RuntimeClass,
4503 // otherwise it will remain unset and treated as zero. More info:
4504 // https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
4505 "overhead"?: {
4506 [string]: resource.#Quantity
4507 }
4508
4509 // PreemptionPolicy is the Policy for preempting pods with lower
4510 // priority. One of Never, PreemptLowerPriority. Defaults to
4511 // PreemptLowerPriority if unset.
4512 "preemptionPolicy"?: string
4513
4514 // The priority value. Various system components use this field to
4515 // find the priority of the pod. When Priority Admission
4516 // Controller is enabled, it prevents users from setting this
4517 // field. The admission controller populates this field from
4518 // PriorityClassName. The higher the value, the higher the
4519 // priority.
4520 "priority"?: int32 & int
4521
4522 // If specified, indicates the pod's priority.
4523 // "system-node-critical" and "system-cluster-critical" are two
4524 // special keywords which indicate the highest priorities with
4525 // the former being the highest priority. Any other name must be
4526 // defined by creating a PriorityClass object with that name. If
4527 // not specified, the pod priority will be default or zero if
4528 // there is no default.
4529 "priorityClassName"?: string
4530
4531 // If specified, all readiness gates will be evaluated for pod
4532 // readiness. A pod is ready when all its containers are ready
4533 // AND all conditions specified in the readiness gates have
4534 // status equal to "True" More info:
4535 // https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
4536 "readinessGates"?: [...#PodReadinessGate]
4537
4538 // ResourceClaims defines which ResourceClaims must be allocated
4539 // and reserved before the Pod is allowed to start. The resources
4540 // will be made available to those containers which consume them
4541 // by name.
4542 //
4543 // This is a stable field but requires that the
4544 // DynamicResourceAllocation feature gate is enabled.
4545 //
4546 // This field is immutable.
4547 "resourceClaims"?: [...#PodResourceClaim]
4548
4549 // Resources is the total amount of CPU and Memory resources
4550 // required by all containers in the pod. It supports specifying
4551 // Requests and Limits for "cpu", "memory" and "hugepages-"
4552 // resource names only. ResourceClaims are not supported.
4553 //
4554 // This field enables fine-grained control over resource
4555 // allocation for the entire pod, allowing resource sharing among
4556 // containers in a pod.
4557 //
4558 // This is an alpha field and requires enabling the
4559 // PodLevelResources feature gate.
4560 "resources"?: #ResourceRequirements
4561
4562 // Restart policy for all containers within the pod. One of
4563 // Always, OnFailure, Never. In some contexts, only a subset of
4564 // those values may be permitted. Default to Always. More info:
4565 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
4566 "restartPolicy"?: string
4567
4568 // RuntimeClassName refers to a RuntimeClass object in the
4569 // node.k8s.io group, which should be used to run this pod. If no
4570 // RuntimeClass resource matches the named class, the pod will
4571 // not be run. If unset or empty, the "legacy" RuntimeClass will
4572 // be used, which is an implicit class with an empty definition
4573 // that uses the default runtime handler. More info:
4574 // https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
4575 "runtimeClassName"?: string
4576
4577 // If specified, the pod will be dispatched by specified
4578 // scheduler. If not specified, the pod will be dispatched by
4579 // default scheduler.
4580 "schedulerName"?: string
4581
4582 // SchedulingGates is an opaque list of values that if specified
4583 // will block scheduling the pod. If schedulingGates is not
4584 // empty, the pod will stay in the SchedulingGated state and the
4585 // scheduler will not attempt to schedule the pod.
4586 //
4587 // SchedulingGates can only be set at pod creation time, and be
4588 // removed only afterwards.
4589 "schedulingGates"?: [...#PodSchedulingGate]
4590
4591 // SchedulingGroup provides a reference to the immediate
4592 // scheduling runtime grouping object that this Pod belongs to.
4593 // This field is used by the scheduler to identify the group and
4594 // apply the correct group scheduling policies. The association
4595 // with a group also impacts other lifecycle aspects of a Pod
4596 // that are relevant in a wider context of scheduling like
4597 // preemption, resource attachment, etc. If not specified, the
4598 // Pod is treated as a single unit in all of these aspects. The
4599 // group object referenced by this field may not exist at the
4600 // time the Pod is created. This field is immutable, but a group
4601 // object with the same name may be recreated with different
4602 // policies. Doing this during pod scheduling may result in the
4603 // placement not conforming to the expected policies.
4604 "schedulingGroup"?: #PodSchedulingGroup
4605
4606 // SecurityContext holds pod-level security attributes and common
4607 // container settings. Optional: Defaults to empty. See type
4608 // description for default values of each field.
4609 "securityContext"?: #PodSecurityContext
4610
4611 // DeprecatedServiceAccount is a deprecated alias for
4612 // ServiceAccountName. Deprecated: Use serviceAccountName
4613 // instead.
4614 "serviceAccount"?: string
4615
4616 // ServiceAccountName is the name of the ServiceAccount to use to
4617 // run this pod. More info:
4618 // https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
4619 "serviceAccountName"?: string
4620
4621 // If true the pod's hostname will be configured as the pod's
4622 // FQDN, rather than the leaf name (the default). In Linux
4623 // containers, this means setting the FQDN in the hostname field
4624 // of the kernel (the nodename field of struct utsname). In
4625 // Windows containers, this means setting the registry value of
4626 // hostname for the registry key
4627 // HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters
4628 // to FQDN. If a pod does not have FQDN, this has no effect.
4629 // Default to false.
4630 "setHostnameAsFQDN"?: bool
4631
4632 // Share a single process namespace between all of the containers
4633 // in a pod. When this is set containers will be able to view and
4634 // signal processes from other containers in the same pod, and
4635 // the first process in each container will not be assigned PID
4636 // 1. HostPID and ShareProcessNamespace cannot both be set.
4637 // Optional: Default to false.
4638 "shareProcessNamespace"?: bool
4639
4640 // If specified, the fully qualified Pod hostname will be
4641 // "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
4642 // If not specified, the pod will not have a domainname at all.
4643 "subdomain"?: string
4644
4645 // Optional duration in seconds the pod needs to terminate
4646 // gracefully. May be decreased in delete request. Value must be
4647 // non-negative integer. The value zero indicates stop
4648 // immediately via the kill signal (no opportunity to shut down).
4649 // If this value is nil, the default grace period will be used
4650 // instead. The grace period is the duration in seconds after the
4651 // processes running in the pod are sent a termination signal and
4652 // the time when the processes are forcibly halted with a kill
4653 // signal. Set this value longer than the expected cleanup time
4654 // for your process. Defaults to 30 seconds.
4655 "terminationGracePeriodSeconds"?: int64 & int
4656
4657 // If specified, the pod's tolerations.
4658 "tolerations"?: [...#Toleration]
4659
4660 // TopologySpreadConstraints describes how a group of pods ought
4661 // to spread across topology domains. Scheduler will schedule
4662 // pods in a way which abides by the constraints. All
4663 // topologySpreadConstraints are ANDed.
4664 "topologySpreadConstraints"?: [...#TopologySpreadConstraint]
4665
4666 // List of volumes that can be mounted by containers belonging to
4667 // the pod. More info:
4668 // https://kubernetes.io/docs/concepts/storage/volumes
4669 "volumes"?: [...#Volume]
4670}
4671
4672// PodStatus represents information about the status of a pod.
4673// Status may trail the actual state of a system, especially if
4674// the node that hosts the pod cannot contact the control plane.
4675#PodStatus: {
4676 // AllocatedResources is the total requests allocated for this pod
4677 // by the node. If pod-level requests are not set, this will be
4678 // the total requests aggregated across containers in the pod.
4679 "allocatedResources"?: [string]: resource.#Quantity
4680
4681 // Current service state of pod. More info:
4682 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
4683 "conditions"?: [...#PodCondition]
4684
4685 // Statuses of containers in this pod. Each container in the pod
4686 // should have at most one status in this list, and all statuses
4687 // should be for containers in the pod. However this is not
4688 // enforced. If a status for a non-existent container is present
4689 // in the list, or the list has duplicate names, the behavior of
4690 // various Kubernetes components is not defined and those
4691 // statuses might be ignored. More info:
4692 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
4693 "containerStatuses"?: [...#ContainerStatus]
4694
4695 // Statuses for any ephemeral containers that have run in this
4696 // pod. Each ephemeral container in the pod should have at most
4697 // one status in this list, and all statuses should be for
4698 // containers in the pod. However this is not enforced. If a
4699 // status for a non-existent container is present in the list, or
4700 // the list has duplicate names, the behavior of various
4701 // Kubernetes components is not defined and those statuses might
4702 // be ignored. More info:
4703 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
4704 "ephemeralContainerStatuses"?: [...#ContainerStatus]
4705
4706 // Status of extended resource claim backed by DRA.
4707 "extendedResourceClaimStatus"?: #PodExtendedResourceClaimStatus
4708
4709 // hostIP holds the IP address of the host to which the pod is
4710 // assigned. Empty if the pod has not started yet. A pod can be
4711 // assigned to a node that has a problem in kubelet which in
4712 // turns mean that HostIP will not be updated even if there is a
4713 // node is assigned to pod
4714 "hostIP"?: string
4715
4716 // hostIPs holds the IP addresses allocated to the host. If this
4717 // field is specified, the first entry must match the hostIP
4718 // field. This list is empty if the pod has not started yet. A
4719 // pod can be assigned to a node that has a problem in kubelet
4720 // which in turns means that HostIPs will not be updated even if
4721 // there is a node is assigned to this pod.
4722 "hostIPs"?: [...#HostIP]
4723
4724 // Statuses of init containers in this pod. The most recent
4725 // successful non-restartable init container will have ready =
4726 // true, the most recently started container will have startTime
4727 // set. Each init container in the pod should have at most one
4728 // status in this list, and all statuses should be for containers
4729 // in the pod. However this is not enforced. If a status for a
4730 // non-existent container is present in the list, or the list has
4731 // duplicate names, the behavior of various Kubernetes components
4732 // is not defined and those statuses might be ignored. More info:
4733 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-and-container-status
4734 "initContainerStatuses"?: [...#ContainerStatus]
4735
4736 // A human readable message indicating details about why the pod
4737 // is in this condition.
4738 "message"?: string
4739
4740 // NodeAllocatableResourceClaimStatuses contains the status of
4741 // node-allocatable resources that were allocated for this pod
4742 // through DRA claims. This includes resources currently reported
4743 // in v1.Node `status.allocatable` that are not extended
4744 // resources (see
4745 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#extended-resources).
4746 // Examples include "cpu", "memory", "ephemeral-storage", and
4747 // hugepages.
4748 "nodeAllocatableResourceClaimStatuses"?: [...#NodeAllocatableResourceClaimStatus]
4749
4750 // nominatedNodeName is set only when this pod preempts other pods
4751 // on the node, but it cannot be scheduled right away as
4752 // preemption victims receive their graceful termination periods.
4753 // This field does not guarantee that the pod will be scheduled
4754 // on this node. Scheduler may decide to place the pod elsewhere
4755 // if other nodes become available sooner. Scheduler may also
4756 // decide to give the resources on this node to a higher priority
4757 // pod that is created after preemption. As a result, this field
4758 // may be different than PodSpec.nodeName when the pod is
4759 // scheduled.
4760 "nominatedNodeName"?: string
4761
4762 // If set, this represents the .metadata.generation that the pod
4763 // status was set based upon. The PodObservedGenerationTracking
4764 // feature gate must be enabled to use this field.
4765 "observedGeneration"?: int64 & int
4766
4767 // The phase of a Pod is a simple, high-level summary of where the
4768 // Pod is in its lifecycle. The conditions array, the reason and
4769 // message fields, and the individual container status arrays
4770 // contain more detail about the pod's status. There are five
4771 // possible phase values:
4772 //
4773 // Pending: The pod has been accepted by the Kubernetes system,
4774 // but one or more of the container images has not been created.
4775 // This includes time before being scheduled as well as time
4776 // spent downloading images over the network, which could take a
4777 // while. Running: The pod has been bound to a node, and all of
4778 // the containers have been created. At least one container is
4779 // still running, or is in the process of starting or restarting.
4780 // Succeeded: All containers in the pod have terminated in
4781 // success, and will not be restarted. Failed: All containers in
4782 // the pod have terminated, and at least one container has
4783 // terminated in failure. The container either exited with
4784 // non-zero status or was terminated by the system. Unknown: For
4785 // some reason the state of the pod could not be obtained,
4786 // typically due to an error in communicating with the host of
4787 // the pod.
4788 //
4789 // More info:
4790 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
4791 "phase"?: string
4792
4793 // podIP address allocated to the pod. Routable at least within
4794 // the cluster. Empty if not yet allocated.
4795 "podIP"?: string
4796
4797 // podIPs holds the IP addresses allocated to the pod. If this
4798 // field is specified, the 0th entry must match the podIP field.
4799 // Pods may be allocated at most 1 value for each of IPv4 and
4800 // IPv6. This list is empty if no IPs have been allocated yet.
4801 "podIPs"?: [...#PodIP]
4802
4803 // The Quality of Service (QOS) classification assigned to the pod
4804 // based on resource requirements See PodQOSClass type for
4805 // available QOS classes More info:
4806 // https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
4807 "qosClass"?: string
4808
4809 // A brief CamelCase message indicating details about why the pod
4810 // is in this state. e.g. 'Evicted'
4811 "reason"?: string
4812
4813 // Status of resources resize desired for pod's containers. It is
4814 // empty if no resources resize is pending. Any changes to
4815 // container resources will automatically set this to "Proposed"
4816 // Deprecated: Resize status is moved to two pod conditions
4817 // PodResizePending and PodResizeInProgress. PodResizePending
4818 // will track states where the spec has been resized, but the
4819 // Kubelet has not yet allocated the resources.
4820 // PodResizeInProgress will track in-progress resizes, and should
4821 // be present whenever allocated resources != acknowledged
4822 // resources.
4823 "resize"?: string
4824
4825 // Status of resource claims.
4826 "resourceClaimStatuses"?: [...#PodResourceClaimStatus]
4827
4828 // Resources represents the compute resource requests and limits
4829 // that have been applied at the pod level if pod-level requests
4830 // or limits are set in PodSpec.Resources
4831 "resources"?: #ResourceRequirements
4832
4833 // RFC 3339 date and time at which the object was acknowledged by
4834 // the Kubelet. This is before the Kubelet pulled the container
4835 // image(s) for the pod.
4836 "startTime"?: v1.#Time
4837}
4838
4839// PodTemplate describes a template for creating copies of a
4840// predefined pod.
4841#PodTemplate: {
4842 // APIVersion defines the versioned schema of this representation
4843 // of an object. Servers should convert recognized schemas to the
4844 // latest internal value, and may reject unrecognized values.
4845 // More info:
4846 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
4847 "apiVersion": "v1"
4848
4849 // Kind is a string value representing the REST resource this
4850 // object represents. Servers may infer this from the endpoint
4851 // the client submits requests to. Cannot be updated. In
4852 // CamelCase. More info:
4853 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
4854 "kind": "PodTemplate"
4855
4856 // Standard object's metadata. More info:
4857 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
4858 "metadata"?: v1.#ObjectMeta
4859
4860 // Template defines the pods that will be created from this pod
4861 // template.
4862 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
4863 "template"?: #PodTemplateSpec
4864}
4865
4866// PodTemplateList is a list of PodTemplates.
4867#PodTemplateList: {
4868 // APIVersion defines the versioned schema of this representation
4869 // of an object. Servers should convert recognized schemas to the
4870 // latest internal value, and may reject unrecognized values.
4871 // More info:
4872 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
4873 "apiVersion": "v1"
4874
4875 // List of pod templates
4876 "items"!: [...#PodTemplate]
4877
4878 // Kind is a string value representing the REST resource this
4879 // object represents. Servers may infer this from the endpoint
4880 // the client submits requests to. Cannot be updated. In
4881 // CamelCase. More info:
4882 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
4883 "kind": "PodTemplateList"
4884
4885 // Standard list metadata. More info:
4886 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
4887 "metadata"?: v1.#ListMeta
4888}
4889
4890// PodTemplateSpec describes the data a pod should have when
4891// created from a template
4892#PodTemplateSpec: {
4893 // Standard object's metadata. More info:
4894 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
4895 "metadata"?: v1.#ObjectMeta
4896
4897 // Specification of the desired behavior of the pod. More info:
4898 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
4899 "spec"?: #PodSpec
4900}
4901
4902// PortStatus represents the error condition of a service port
4903#PortStatus: {
4904 // Error is to record the problem with the service port The format
4905 // of the error shall comply with the following rules: - built-in
4906 // error values shall be specified in this file and those shall
4907 // use
4908 // CamelCase names
4909 // - cloud provider specific error values must have names that
4910 // comply with the
4911 // format foo.example.com/CamelCase.
4912 "error"?: string
4913
4914 // Port is the port number of the service port of which status is
4915 // recorded here
4916 "port"!: int32 & int
4917
4918 // Protocol is the protocol of the service port of which status is
4919 // recorded here The supported values are: "TCP", "UDP", "SCTP"
4920 "protocol"!: string
4921}
4922
4923// PortworxVolumeSource represents a Portworx volume resource.
4924#PortworxVolumeSource: {
4925 // fSType represents the filesystem type to mount Must be a
4926 // filesystem type supported by the host operating system. Ex.
4927 // "ext4", "xfs". Implicitly inferred to be "ext4" if
4928 // unspecified.
4929 "fsType"?: string
4930
4931 // readOnly defaults to false (read/write). ReadOnly here will
4932 // force the ReadOnly setting in VolumeMounts.
4933 "readOnly"?: bool
4934
4935 // volumeID uniquely identifies a Portworx volume
4936 "volumeID"!: string
4937}
4938
4939// An empty preferred scheduling term matches all objects with
4940// implicit weight 0 (i.e. it's a no-op). A null preferred
4941// scheduling term matches no objects (i.e. is also a no-op).
4942#PreferredSchedulingTerm: {
4943 // A node selector term, associated with the corresponding weight.
4944 "preference"!: #NodeSelectorTerm
4945
4946 // Weight associated with matching the corresponding
4947 // nodeSelectorTerm, in the range 1-100.
4948 "weight"!: int32 & int
4949}
4950
4951// Probe describes a health check to be performed against a
4952// container to determine whether it is alive or ready to receive
4953// traffic.
4954#Probe: {
4955 // Exec specifies a command to execute in the container.
4956 "exec"?: #ExecAction
4957
4958 // Minimum consecutive failures for the probe to be considered
4959 // failed after having succeeded. Defaults to 3. Minimum value is
4960 // 1.
4961 "failureThreshold"?: int32 & int
4962
4963 // GRPC specifies a GRPC HealthCheckRequest.
4964 "grpc"?: #GRPCAction
4965
4966 // HTTPGet specifies an HTTP GET request to perform.
4967 "httpGet"?: #HTTPGetAction
4968
4969 // Number of seconds after the container has started before
4970 // liveness probes are initiated. More info:
4971 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
4972 "initialDelaySeconds"?: int32 & int
4973
4974 // How often (in seconds) to perform the probe. Default to 10
4975 // seconds. Minimum value is 1.
4976 "periodSeconds"?: int32 & int
4977
4978 // Minimum consecutive successes for the probe to be considered
4979 // successful after having failed. Defaults to 1. Must be 1 for
4980 // liveness and startup. Minimum value is 1.
4981 "successThreshold"?: int32 & int
4982
4983 // TCPSocket specifies a connection to a TCP port.
4984 "tcpSocket"?: #TCPSocketAction
4985
4986 // Optional duration in seconds the pod needs to terminate
4987 // gracefully upon probe failure. The grace period is the
4988 // duration in seconds after the processes running in the pod are
4989 // sent a termination signal and the time when the processes are
4990 // forcibly halted with a kill signal. Set this value longer than
4991 // the expected cleanup time for your process. If this value is
4992 // nil, the pod's terminationGracePeriodSeconds will be used.
4993 // Otherwise, this value overrides the value provided by the pod
4994 // spec. Value must be non-negative integer. The value zero
4995 // indicates stop immediately via the kill signal (no opportunity
4996 // to shut down). This is a beta field and requires enabling
4997 // ProbeTerminationGracePeriod feature gate. Minimum value is 1.
4998 // spec.terminationGracePeriodSeconds is used if unset.
4999 "terminationGracePeriodSeconds"?: int64 & int
5000
5001 // Number of seconds after which the probe times out. Defaults to
5002 // 1 second. Minimum value is 1. More info:
5003 // https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
5004 "timeoutSeconds"?: int32 & int
5005}
5006
5007// Represents a projected volume source
5008#ProjectedVolumeSource: {
5009 // defaultMode are the mode bits used to set permissions on
5010 // created files by default. Must be an octal value between 0000
5011 // and 0777 or a decimal value between 0 and 511. YAML accepts
5012 // both octal and decimal values, JSON requires decimal values
5013 // for mode bits. Directories within the path are not affected by
5014 // this setting. This might be in conflict with other options
5015 // that affect the file mode, like fsGroup, and the result can be
5016 // other mode bits set.
5017 "defaultMode"?: int32 & int
5018
5019 // sources is the list of volume projections. Each entry in this
5020 // list handles one source.
5021 "sources"?: [...#VolumeProjection]
5022}
5023
5024// Represents a Quobyte mount that lasts the lifetime of a pod.
5025// Quobyte volumes do not support ownership management or SELinux
5026// relabeling.
5027#QuobyteVolumeSource: {
5028 // group to map volume access to Default is no group
5029 "group"?: string
5030
5031 // readOnly here will force the Quobyte volume to be mounted with
5032 // read-only permissions. Defaults to false.
5033 "readOnly"?: bool
5034
5035 // registry represents a single or multiple Quobyte Registry
5036 // services specified as a string as host:port pair (multiple
5037 // entries are separated with commas) which acts as the central
5038 // registry for volumes
5039 "registry"!: string
5040
5041 // tenant owning the given Quobyte volume in the Backend Used with
5042 // dynamically provisioned Quobyte volumes, value is set by the
5043 // plugin
5044 "tenant"?: string
5045
5046 // user to map volume access to Defaults to serivceaccount user
5047 "user"?: string
5048
5049 // volume is a string that references an already created Quobyte
5050 // volume by name.
5051 "volume"!: string
5052}
5053
5054// Represents a Rados Block Device mount that lasts the lifetime
5055// of a pod. RBD volumes support ownership management and SELinux
5056// relabeling.
5057#RBDPersistentVolumeSource: {
5058 // fsType is the filesystem type of the volume that you want to
5059 // mount. Tip: Ensure that the filesystem type is supported by
5060 // the host operating system. Examples: "ext4", "xfs", "ntfs".
5061 // Implicitly inferred to be "ext4" if unspecified. More info:
5062 // https://kubernetes.io/docs/concepts/storage/volumes#rbd
5063 "fsType"?: string
5064
5065 // image is the rados image name. More info:
5066 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5067 "image"!: string
5068
5069 // keyring is the path to key ring for RBDUser. Default is
5070 // /etc/ceph/keyring. More info:
5071 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5072 "keyring"?: string
5073
5074 // monitors is a collection of Ceph monitors. More info:
5075 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5076 "monitors"!: [...string]
5077
5078 // pool is the rados pool name. Default is rbd. More info:
5079 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5080 "pool"?: string
5081
5082 // readOnly here will force the ReadOnly setting in VolumeMounts.
5083 // Defaults to false. More info:
5084 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5085 "readOnly"?: bool
5086
5087 // secretRef is name of the authentication secret for RBDUser. If
5088 // provided overrides keyring. Default is nil. More info:
5089 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5090 "secretRef"?: #SecretReference
5091
5092 // user is the rados user name. Default is admin. More info:
5093 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5094 "user"?: string
5095}
5096
5097// Represents a Rados Block Device mount that lasts the lifetime
5098// of a pod. RBD volumes support ownership management and SELinux
5099// relabeling.
5100#RBDVolumeSource: {
5101 // fsType is the filesystem type of the volume that you want to
5102 // mount. Tip: Ensure that the filesystem type is supported by
5103 // the host operating system. Examples: "ext4", "xfs", "ntfs".
5104 // Implicitly inferred to be "ext4" if unspecified. More info:
5105 // https://kubernetes.io/docs/concepts/storage/volumes#rbd
5106 "fsType"?: string
5107
5108 // image is the rados image name. More info:
5109 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5110 "image"!: string
5111
5112 // keyring is the path to key ring for RBDUser. Default is
5113 // /etc/ceph/keyring. More info:
5114 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5115 "keyring"?: string
5116
5117 // monitors is a collection of Ceph monitors. More info:
5118 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5119 "monitors"!: [...string]
5120
5121 // pool is the rados pool name. Default is rbd. More info:
5122 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5123 "pool"?: string
5124
5125 // readOnly here will force the ReadOnly setting in VolumeMounts.
5126 // Defaults to false. More info:
5127 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5128 "readOnly"?: bool
5129
5130 // secretRef is name of the authentication secret for RBDUser. If
5131 // provided overrides keyring. Default is nil. More info:
5132 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5133 "secretRef"?: #LocalObjectReference
5134
5135 // user is the rados user name. Default is admin. More info:
5136 // https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
5137 "user"?: string
5138}
5139
5140// ReplicationController represents the configuration of a
5141// replication controller.
5142#ReplicationController: {
5143 // APIVersion defines the versioned schema of this representation
5144 // of an object. Servers should convert recognized schemas to the
5145 // latest internal value, and may reject unrecognized values.
5146 // More info:
5147 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5148 "apiVersion": "v1"
5149
5150 // Kind is a string value representing the REST resource this
5151 // object represents. Servers may infer this from the endpoint
5152 // the client submits requests to. Cannot be updated. In
5153 // CamelCase. More info:
5154 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5155 "kind": "ReplicationController"
5156
5157 // If the Labels of a ReplicationController are empty, they are
5158 // defaulted to be the same as the Pod(s) that the replication
5159 // controller manages. Standard object's metadata. More info:
5160 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
5161 "metadata"?: v1.#ObjectMeta
5162
5163 // Spec defines the specification of the desired behavior of the
5164 // replication controller. More info:
5165 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5166 "spec"?: #ReplicationControllerSpec
5167
5168 // Status is the most recently observed status of the replication
5169 // controller. This data may be out of date by some window of
5170 // time. Populated by the system. Read-only. More info:
5171 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5172 "status"?: #ReplicationControllerStatus
5173}
5174
5175// ReplicationControllerCondition describes the state of a
5176// replication controller at a certain point.
5177#ReplicationControllerCondition: {
5178 // The last time the condition transitioned from one status to
5179 // another.
5180 "lastTransitionTime"?: v1.#Time
5181
5182 // A human readable message indicating details about the
5183 // transition.
5184 "message"?: string
5185
5186 // The reason for the condition's last transition.
5187 "reason"?: string
5188
5189 // Status of the condition, one of True, False, Unknown.
5190 "status"!: string
5191
5192 // Type of replication controller condition.
5193 "type"!: string
5194}
5195
5196// ReplicationControllerList is a collection of replication
5197// controllers.
5198#ReplicationControllerList: {
5199 // APIVersion defines the versioned schema of this representation
5200 // of an object. Servers should convert recognized schemas to the
5201 // latest internal value, and may reject unrecognized values.
5202 // More info:
5203 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5204 "apiVersion": "v1"
5205
5206 // List of replication controllers. More info:
5207 // https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
5208 "items"!: [...#ReplicationController]
5209
5210 // Kind is a string value representing the REST resource this
5211 // object represents. Servers may infer this from the endpoint
5212 // the client submits requests to. Cannot be updated. In
5213 // CamelCase. More info:
5214 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5215 "kind": "ReplicationControllerList"
5216
5217 // Standard list metadata. More info:
5218 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5219 "metadata"?: v1.#ListMeta
5220}
5221
5222// ReplicationControllerSpec is the specification of a replication
5223// controller.
5224#ReplicationControllerSpec: {
5225 // Minimum number of seconds for which a newly created pod should
5226 // be ready without any of its container crashing, for it to be
5227 // considered available. Defaults to 0 (pod will be considered
5228 // available as soon as it is ready)
5229 "minReadySeconds"?: int32 & int
5230
5231 // Replicas is the number of desired replicas. This is a pointer
5232 // to distinguish between explicit zero and unspecified. Defaults
5233 // to 1. More info:
5234 // https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
5235 "replicas"?: int32 & int
5236
5237 // Selector is a label query over pods that should match the
5238 // Replicas count. If Selector is empty, it is defaulted to the
5239 // labels present on the Pod template. Label keys and values that
5240 // must match in order to be controlled by this replication
5241 // controller, if empty defaulted to labels on Pod template. More
5242 // info:
5243 // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
5244 "selector"?: {
5245 [string]: string
5246 }
5247
5248 // Template is the object that describes the pod that will be
5249 // created if insufficient replicas are detected. This takes
5250 // precedence over a TemplateRef. The only allowed
5251 // template.spec.restartPolicy value is "Always". More info:
5252 // https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
5253 "template"?: #PodTemplateSpec
5254}
5255
5256// ReplicationControllerStatus represents the current status of a
5257// replication controller.
5258#ReplicationControllerStatus: {
5259 // The number of available replicas (ready for at least
5260 // minReadySeconds) for this replication controller.
5261 "availableReplicas"?: int32 & int
5262
5263 // Represents the latest available observations of a replication
5264 // controller's current state.
5265 "conditions"?: [...#ReplicationControllerCondition]
5266
5267 // The number of pods that have labels matching the labels of the
5268 // pod template of the replication controller.
5269 "fullyLabeledReplicas"?: int32 & int
5270
5271 // ObservedGeneration reflects the generation of the most recently
5272 // observed replication controller.
5273 "observedGeneration"?: int64 & int
5274
5275 // The number of ready replicas for this replication controller.
5276 "readyReplicas"?: int32 & int
5277
5278 // Replicas is the most recently observed number of replicas. More
5279 // info:
5280 // https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
5281 "replicas"!: int32 & int
5282}
5283
5284// ResourceClaim references one entry in PodSpec.ResourceClaims.
5285#ResourceClaim: {
5286 // Name must match the name of one entry in
5287 // pod.spec.resourceClaims of the Pod where this field is used.
5288 // It makes that resource available inside a container.
5289 "name"!: string
5290
5291 // Request is the name chosen for a request in the referenced
5292 // claim. If empty, everything from the claim is made available,
5293 // otherwise only the result of this request.
5294 "request"?: string
5295}
5296
5297// ResourceFieldSelector represents container resources (cpu,
5298// memory) and their output format
5299#ResourceFieldSelector: {
5300 // Container name: required for volumes, optional for env vars
5301 "containerName"?: string
5302
5303 // Specifies the output format of the exposed resources, defaults
5304 // to "1"
5305 "divisor"?: resource.#Quantity
5306
5307 // Required: resource to select
5308 "resource"!: string
5309}
5310
5311// ResourceHealth represents the health of a resource. It has the
5312// latest device health information. This is a part of KEP
5313// https://kep.k8s.io/4680.
5314#ResourceHealth: {
5315 // Health of the resource. can be one of:
5316 // - Healthy: operates as normal
5317 // - Unhealthy: reported unhealthy. We consider this a temporary
5318 // health issue
5319 // since we do not have a mechanism today to distinguish
5320 // temporary and permanent issues.
5321 // - Unknown: The status cannot be determined.
5322 // For example, Device Plugin got unregistered and hasn't been
5323 // re-registered since.
5324 //
5325 // In future we may want to introduce the PermanentlyUnhealthy
5326 // Status.
5327 "health"?: string
5328
5329 // Message provides human-readable context for Health (e.g. "ECC
5330 // error count exceeded threshold"). This field is populated by
5331 // the kubelet when ResourceHealthStatusMessage is enabled if the
5332 // DRA plugin returns a message, and is null otherwise.
5333 "message"?: string
5334
5335 // ResourceID is the unique identifier of the resource. See the
5336 // ResourceID type for more information.
5337 "resourceID"!: string
5338}
5339
5340// ResourceQuota sets aggregate quota restrictions enforced per
5341// namespace
5342#ResourceQuota: {
5343 // APIVersion defines the versioned schema of this representation
5344 // of an object. Servers should convert recognized schemas to the
5345 // latest internal value, and may reject unrecognized values.
5346 // More info:
5347 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5348 "apiVersion": "v1"
5349
5350 // Kind is a string value representing the REST resource this
5351 // object represents. Servers may infer this from the endpoint
5352 // the client submits requests to. Cannot be updated. In
5353 // CamelCase. More info:
5354 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5355 "kind": "ResourceQuota"
5356
5357 // Standard object's metadata. More info:
5358 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
5359 "metadata"?: v1.#ObjectMeta
5360
5361 // Spec defines the desired quota.
5362 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5363 "spec"?: #ResourceQuotaSpec
5364
5365 // Status defines the actual enforced quota and its current usage.
5366 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5367 "status"?: #ResourceQuotaStatus
5368}
5369
5370// ResourceQuotaList is a list of ResourceQuota items.
5371#ResourceQuotaList: {
5372 // APIVersion defines the versioned schema of this representation
5373 // of an object. Servers should convert recognized schemas to the
5374 // latest internal value, and may reject unrecognized values.
5375 // More info:
5376 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5377 "apiVersion": "v1"
5378
5379 // Items is a list of ResourceQuota objects. More info:
5380 // https://kubernetes.io/docs/concepts/policy/resource-quotas/
5381 "items"!: [...#ResourceQuota]
5382
5383 // Kind is a string value representing the REST resource this
5384 // object represents. Servers may infer this from the endpoint
5385 // the client submits requests to. Cannot be updated. In
5386 // CamelCase. More info:
5387 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5388 "kind": "ResourceQuotaList"
5389
5390 // Standard list metadata. More info:
5391 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5392 "metadata"?: v1.#ListMeta
5393}
5394
5395// ResourceQuotaSpec defines the desired hard limits to enforce
5396// for Quota.
5397#ResourceQuotaSpec: {
5398 // hard is the set of desired hard limits for each named resource.
5399 // More info:
5400 // https://kubernetes.io/docs/concepts/policy/resource-quotas/
5401 "hard"?: [string]: resource.#Quantity
5402
5403 // scopeSelector is also a collection of filters like scopes that
5404 // must match each object tracked by a quota but expressed using
5405 // ScopeSelectorOperator in combination with possible values. For
5406 // a resource to match, both scopes AND scopeSelector (if
5407 // specified in spec), must be matched.
5408 "scopeSelector"?: #ScopeSelector
5409
5410 // A collection of filters that must match each object tracked by
5411 // a quota. If not specified, the quota matches all objects.
5412 "scopes"?: [...string]
5413}
5414
5415// ResourceQuotaStatus defines the enforced hard limits and
5416// observed use.
5417#ResourceQuotaStatus: {
5418 // Hard is the set of enforced hard limits for each named
5419 // resource. More info:
5420 // https://kubernetes.io/docs/concepts/policy/resource-quotas/
5421 "hard"?: [string]: resource.#Quantity
5422
5423 // Used is the current observed total usage of the resource in the
5424 // namespace.
5425 "used"?: {
5426 [string]: resource.#Quantity
5427 }
5428}
5429
5430// ResourceRequirements describes the compute resource
5431// requirements.
5432#ResourceRequirements: {
5433 // Claims lists the names of resources, defined in
5434 // spec.resourceClaims, that are used by this container.
5435 //
5436 // This field depends on the DynamicResourceAllocation feature
5437 // gate.
5438 //
5439 // This field is immutable. It can only be set for containers.
5440 "claims"?: [...#ResourceClaim]
5441
5442 // Limits describes the maximum amount of compute resources
5443 // allowed. More info:
5444 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
5445 "limits"?: {
5446 [string]: resource.#Quantity
5447 }
5448
5449 // Requests describes the minimum amount of compute resources
5450 // required. If Requests is omitted for a container, it defaults
5451 // to Limits if that is explicitly specified, otherwise to an
5452 // implementation-defined value. Requests cannot exceed Limits.
5453 // More info:
5454 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
5455 "requests"?: {
5456 [string]: resource.#Quantity
5457 }
5458}
5459
5460// ResourceStatus represents the status of a single resource
5461// allocated to a Pod.
5462#ResourceStatus: {
5463 // Name of the resource. Must be unique within the pod and in case
5464 // of non-DRA resource, match one of the resources from the pod
5465 // spec. For DRA resources, the value must be
5466 // "claim:<claim_name>/<request>". When this status is reported
5467 // about a container, the "claim_name" and "request" must match
5468 // one of the claims of this container.
5469 "name"!: string
5470
5471 // List of unique resources health. Each element in the list
5472 // contains an unique resource ID and its health. At a minimum,
5473 // for the lifetime of a Pod, resource ID must uniquely identify
5474 // the resource allocated to the Pod on the Node. If other Pod on
5475 // the same Node reports the status with the same resource ID, it
5476 // must be the same resource they share. See ResourceID type
5477 // definition for a specific format it has in various use cases.
5478 "resources"?: [...#ResourceHealth]
5479}
5480
5481// SELinuxOptions are the labels to be applied to the container
5482#SELinuxOptions: {
5483 // Level is SELinux level label that applies to the container.
5484 "level"?: string
5485
5486 // Role is a SELinux role label that applies to the container.
5487 "role"?: string
5488
5489 // Type is a SELinux type label that applies to the container.
5490 "type"?: string
5491
5492 // User is a SELinux user label that applies to the container.
5493 "user"?: string
5494}
5495
5496// ScaleIOPersistentVolumeSource represents a persistent ScaleIO
5497// volume
5498#ScaleIOPersistentVolumeSource: {
5499 // fsType is the filesystem type to mount. Must be a filesystem
5500 // type supported by the host operating system. Ex. "ext4",
5501 // "xfs", "ntfs". Default is "xfs"
5502 "fsType"?: string
5503
5504 // gateway is the host address of the ScaleIO API Gateway.
5505 "gateway"!: string
5506
5507 // protectionDomain is the name of the ScaleIO Protection Domain
5508 // for the configured storage.
5509 "protectionDomain"?: string
5510
5511 // readOnly defaults to false (read/write). ReadOnly here will
5512 // force the ReadOnly setting in VolumeMounts.
5513 "readOnly"?: bool
5514
5515 // secretRef references to the secret for ScaleIO user and other
5516 // sensitive information. If this is not provided, Login
5517 // operation will fail.
5518 "secretRef"!: #SecretReference
5519
5520 // sslEnabled is the flag to enable/disable SSL communication with
5521 // Gateway, default false
5522 "sslEnabled"?: bool
5523
5524 // storageMode indicates whether the storage for a volume should
5525 // be ThickProvisioned or ThinProvisioned. Default is
5526 // ThinProvisioned.
5527 "storageMode"?: string
5528
5529 // storagePool is the ScaleIO Storage Pool associated with the
5530 // protection domain.
5531 "storagePool"?: string
5532
5533 // system is the name of the storage system as configured in
5534 // ScaleIO.
5535 "system"!: string
5536
5537 // volumeName is the name of a volume already created in the
5538 // ScaleIO system that is associated with this volume source.
5539 "volumeName"?: string
5540}
5541
5542// ScaleIOVolumeSource represents a persistent ScaleIO volume
5543#ScaleIOVolumeSource: {
5544 // fsType is the filesystem type to mount. Must be a filesystem
5545 // type supported by the host operating system. Ex. "ext4",
5546 // "xfs", "ntfs". Default is "xfs".
5547 "fsType"?: string
5548
5549 // gateway is the host address of the ScaleIO API Gateway.
5550 "gateway"!: string
5551
5552 // protectionDomain is the name of the ScaleIO Protection Domain
5553 // for the configured storage.
5554 "protectionDomain"?: string
5555
5556 // readOnly Defaults to false (read/write). ReadOnly here will
5557 // force the ReadOnly setting in VolumeMounts.
5558 "readOnly"?: bool
5559
5560 // secretRef references to the secret for ScaleIO user and other
5561 // sensitive information. If this is not provided, Login
5562 // operation will fail.
5563 "secretRef"!: #LocalObjectReference
5564
5565 // sslEnabled Flag enable/disable SSL communication with Gateway,
5566 // default false
5567 "sslEnabled"?: bool
5568
5569 // storageMode indicates whether the storage for a volume should
5570 // be ThickProvisioned or ThinProvisioned. Default is
5571 // ThinProvisioned.
5572 "storageMode"?: string
5573
5574 // storagePool is the ScaleIO Storage Pool associated with the
5575 // protection domain.
5576 "storagePool"?: string
5577
5578 // system is the name of the storage system as configured in
5579 // ScaleIO.
5580 "system"!: string
5581
5582 // volumeName is the name of a volume already created in the
5583 // ScaleIO system that is associated with this volume source.
5584 "volumeName"?: string
5585}
5586
5587// A scope selector represents the AND of the selectors
5588// represented by the scoped-resource selector requirements.
5589#ScopeSelector: {
5590 // A list of scope selector requirements by scope of the
5591 // resources.
5592 "matchExpressions"?: [...#ScopedResourceSelectorRequirement]
5593}
5594
5595// A scoped-resource selector requirement is a selector that
5596// contains values, a scope name, and an operator that relates
5597// the scope name and values.
5598#ScopedResourceSelectorRequirement: {
5599 // Represents a scope's relationship to a set of values. Valid
5600 // operators are In, NotIn, Exists, DoesNotExist.
5601 "operator"!: string
5602
5603 // The name of the scope that the selector applies to.
5604 "scopeName"!: string
5605
5606 // An array of string values. If the operator is In or NotIn, the
5607 // values array must be non-empty. If the operator is Exists or
5608 // DoesNotExist, the values array must be empty. This array is
5609 // replaced during a strategic merge patch.
5610 "values"?: [...string]
5611}
5612
5613// SeccompProfile defines a pod/container's seccomp profile
5614// settings. Only one profile source may be set.
5615#SeccompProfile: {
5616 // localhostProfile indicates a profile defined in a file on the
5617 // node should be used. The profile must be preconfigured on the
5618 // node to work. Must be a descending path, relative to the
5619 // kubelet's configured seccomp profile location. Must be set if
5620 // type is "Localhost". Must NOT be set for any other type.
5621 "localhostProfile"?: string
5622
5623 // type indicates which kind of seccomp profile will be applied.
5624 // Valid options are:
5625 //
5626 // Localhost - a profile defined in a file on the node should be
5627 // used. RuntimeDefault - the container runtime default profile
5628 // should be used. Unconfined - no profile should be applied.
5629 "type"!: string
5630}
5631
5632// Secret holds secret data of a certain type. The total bytes of
5633// the values in the Data field must be less than MaxSecretSize
5634// bytes.
5635#Secret: {
5636 // APIVersion defines the versioned schema of this representation
5637 // of an object. Servers should convert recognized schemas to the
5638 // latest internal value, and may reject unrecognized values.
5639 // More info:
5640 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5641 "apiVersion": "v1"
5642
5643 // Data contains the secret data. Each key must consist of
5644 // alphanumeric characters, '-', '_' or '.'. The serialized form
5645 // of the secret data is a base64 encoded string, representing
5646 // the arbitrary (possibly non-string) data value here. Described
5647 // in https://tools.ietf.org/html/rfc4648#section-4
5648 "data"?: {
5649 [string]: string
5650 }
5651
5652 // Immutable, if set to true, ensures that data stored in the
5653 // Secret cannot be updated (only object metadata can be
5654 // modified). If not set to true, the field can be modified at
5655 // any time. Defaulted to nil.
5656 "immutable"?: bool
5657
5658 // Kind is a string value representing the REST resource this
5659 // object represents. Servers may infer this from the endpoint
5660 // the client submits requests to. Cannot be updated. In
5661 // CamelCase. More info:
5662 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5663 "kind": "Secret"
5664
5665 // Standard object's metadata. More info:
5666 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
5667 "metadata"?: v1.#ObjectMeta
5668
5669 // stringData allows specifying non-binary secret data in string
5670 // form. It is provided as a write-only input field for
5671 // convenience. All keys and values are merged into the data
5672 // field on write, overwriting any existing values. The
5673 // stringData field is never output when reading from the API.
5674 "stringData"?: {
5675 [string]: string
5676 }
5677
5678 // Used to facilitate programmatic handling of secret data. More
5679 // info:
5680 // https://kubernetes.io/docs/concepts/configuration/secret/#secret-types
5681 "type"?: string
5682}
5683
5684// SecretEnvSource selects a Secret to populate the environment
5685// variables with.
5686//
5687// The contents of the target Secret's Data field will represent
5688// the key-value pairs as environment variables.
5689#SecretEnvSource: {
5690 // Name of the referent. This field is effectively required, but
5691 // due to backwards compatibility is allowed to be empty.
5692 // Instances of this type with an empty value here are almost
5693 // certainly wrong. More info:
5694 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
5695 "name"?: string
5696
5697 // Specify whether the Secret must be defined
5698 "optional"?: bool
5699}
5700
5701// SecretKeySelector selects a key of a Secret.
5702#SecretKeySelector: {
5703 // The key of the secret to select from. Must be a valid secret
5704 // key.
5705 "key"!: string
5706
5707 // Name of the referent. This field is effectively required, but
5708 // due to backwards compatibility is allowed to be empty.
5709 // Instances of this type with an empty value here are almost
5710 // certainly wrong. More info:
5711 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
5712 "name"?: string
5713
5714 // Specify whether the Secret or its key must be defined
5715 "optional"?: bool
5716}
5717
5718// SecretList is a list of Secret.
5719#SecretList: {
5720 // APIVersion defines the versioned schema of this representation
5721 // of an object. Servers should convert recognized schemas to the
5722 // latest internal value, and may reject unrecognized values.
5723 // More info:
5724 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5725 "apiVersion": "v1"
5726
5727 // Items is a list of secret objects. More info:
5728 // https://kubernetes.io/docs/concepts/configuration/secret
5729 "items"!: [...#Secret]
5730
5731 // Kind is a string value representing the REST resource this
5732 // object represents. Servers may infer this from the endpoint
5733 // the client submits requests to. Cannot be updated. In
5734 // CamelCase. More info:
5735 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5736 "kind": "SecretList"
5737
5738 // Standard list metadata. More info:
5739 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5740 "metadata"?: v1.#ListMeta
5741}
5742
5743// Adapts a secret into a projected volume.
5744//
5745// The contents of the target Secret's Data field will be
5746// presented in a projected volume as files using the keys in the
5747// Data field as the file names. Note that this is identical to a
5748// secret volume source without the default mode.
5749#SecretProjection: {
5750 // items if unspecified, each key-value pair in the Data field of
5751 // the referenced Secret will be projected into the volume as a
5752 // file whose name is the key and content is the value. If
5753 // specified, the listed keys will be projected into the
5754 // specified paths, and unlisted keys will not be present. If a
5755 // key is specified which is not present in the Secret, the
5756 // volume setup will error unless it is marked optional. Paths
5757 // must be relative and may not contain the '..' path or start
5758 // with '..'.
5759 "items"?: [...#KeyToPath]
5760
5761 // Name of the referent. This field is effectively required, but
5762 // due to backwards compatibility is allowed to be empty.
5763 // Instances of this type with an empty value here are almost
5764 // certainly wrong. More info:
5765 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
5766 "name"?: string
5767
5768 // optional field specify whether the Secret or its key must be
5769 // defined
5770 "optional"?: bool
5771}
5772
5773// SecretReference represents a Secret Reference. It has enough
5774// information to retrieve secret in any namespace
5775#SecretReference: {
5776 // name is unique within a namespace to reference a secret
5777 // resource.
5778 "name"?: string
5779
5780 // namespace defines the space within which the secret name must
5781 // be unique.
5782 "namespace"?: string
5783}
5784
5785// Adapts a Secret into a volume.
5786//
5787// The contents of the target Secret's Data field will be
5788// presented in a volume as files using the keys in the Data
5789// field as the file names. Secret volumes support ownership
5790// management and SELinux relabeling.
5791#SecretVolumeSource: {
5792 // defaultMode is Optional: mode bits used to set permissions on
5793 // created files by default. Must be an octal value between 0000
5794 // and 0777 or a decimal value between 0 and 511. YAML accepts
5795 // both octal and decimal values, JSON requires decimal values
5796 // for mode bits. Defaults to 0644. Directories within the path
5797 // are not affected by this setting. This might be in conflict
5798 // with other options that affect the file mode, like fsGroup,
5799 // and the result can be other mode bits set.
5800 "defaultMode"?: int32 & int
5801
5802 // items If unspecified, each key-value pair in the Data field of
5803 // the referenced Secret will be projected into the volume as a
5804 // file whose name is the key and content is the value. If
5805 // specified, the listed keys will be projected into the
5806 // specified paths, and unlisted keys will not be present. If a
5807 // key is specified which is not present in the Secret, the
5808 // volume setup will error unless it is marked optional. Paths
5809 // must be relative and may not contain the '..' path or start
5810 // with '..'.
5811 "items"?: [...#KeyToPath]
5812
5813 // optional field specify whether the Secret or its keys must be
5814 // defined
5815 "optional"?: bool
5816
5817 // secretName is the name of the secret in the pod's namespace to
5818 // use. More info:
5819 // https://kubernetes.io/docs/concepts/storage/volumes#secret
5820 "secretName"?: string
5821}
5822
5823// SecurityContext holds security configuration that will be
5824// applied to a container. Some fields are present in both
5825// SecurityContext and PodSecurityContext. When both are set, the
5826// values in SecurityContext take precedence.
5827#SecurityContext: {
5828 // AllowPrivilegeEscalation controls whether a process can gain
5829 // more privileges than its parent process. This bool directly
5830 // controls if the no_new_privs flag will be set on the container
5831 // process. AllowPrivilegeEscalation is true always when the
5832 // container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note
5833 // that this field cannot be set when spec.os.name is windows.
5834 "allowPrivilegeEscalation"?: bool
5835
5836 // appArmorProfile is the AppArmor options to use by this
5837 // container. If set, this profile overrides the pod's
5838 // appArmorProfile. Note that this field cannot be set when
5839 // spec.os.name is windows.
5840 "appArmorProfile"?: #AppArmorProfile
5841
5842 // The capabilities to add/drop when running containers. Defaults
5843 // to the default set of capabilities granted by the container
5844 // runtime. Note that this field cannot be set when spec.os.name
5845 // is windows.
5846 "capabilities"?: #Capabilities
5847
5848 // Run container in privileged mode. Processes in privileged
5849 // containers are essentially equivalent to root on the host.
5850 // Defaults to false. Note that this field cannot be set when
5851 // spec.os.name is windows.
5852 "privileged"?: bool
5853
5854 // procMount denotes the type of proc mount to use for the
5855 // containers. The default value is Default which uses the
5856 // container runtime defaults for readonly paths and masked
5857 // paths. Note that this field cannot be set when spec.os.name is
5858 // windows.
5859 "procMount"?: string
5860
5861 // Whether this container has a read-only root filesystem. Default
5862 // is false. Note that this field cannot be set when spec.os.name
5863 // is windows.
5864 "readOnlyRootFilesystem"?: bool
5865
5866 // The GID to run the entrypoint of the container process. Uses
5867 // runtime default if unset. May also be set in
5868 // PodSecurityContext. If set in both SecurityContext and
5869 // PodSecurityContext, the value specified in SecurityContext
5870 // takes precedence. Note that this field cannot be set when
5871 // spec.os.name is windows.
5872 "runAsGroup"?: int64 & int
5873
5874 // Indicates that the container must run as a non-root user. If
5875 // true, the Kubelet will validate the image at runtime to ensure
5876 // that it does not run as UID 0 (root) and fail to start the
5877 // container if it does. If unset or false, no such validation
5878 // will be performed. May also be set in PodSecurityContext. If
5879 // set in both SecurityContext and PodSecurityContext, the value
5880 // specified in SecurityContext takes precedence.
5881 "runAsNonRoot"?: bool
5882
5883 // The UID to run the entrypoint of the container process.
5884 // Defaults to user specified in image metadata if unspecified.
5885 // May also be set in PodSecurityContext. If set in both
5886 // SecurityContext and PodSecurityContext, the value specified in
5887 // SecurityContext takes precedence. Note that this field cannot
5888 // be set when spec.os.name is windows.
5889 "runAsUser"?: int64 & int
5890
5891 // The SELinux context to be applied to the container. If
5892 // unspecified, the container runtime will allocate a random
5893 // SELinux context for each container. May also be set in
5894 // PodSecurityContext. If set in both SecurityContext and
5895 // PodSecurityContext, the value specified in SecurityContext
5896 // takes precedence. Note that this field cannot be set when
5897 // spec.os.name is windows.
5898 "seLinuxOptions"?: #SELinuxOptions
5899
5900 // The seccomp options to use by this container. If seccomp
5901 // options are provided at both the pod & container level, the
5902 // container options override the pod options. Note that this
5903 // field cannot be set when spec.os.name is windows.
5904 "seccompProfile"?: #SeccompProfile
5905
5906 // The Windows specific settings applied to all containers. If
5907 // unspecified, the options from the PodSecurityContext will be
5908 // used. If set in both SecurityContext and PodSecurityContext,
5909 // the value specified in SecurityContext takes precedence. Note
5910 // that this field cannot be set when spec.os.name is linux.
5911 "windowsOptions"?: #WindowsSecurityContextOptions
5912}
5913
5914// Service is a named abstraction of software service (for
5915// example, mysql) consisting of local port (for example 3306)
5916// that the proxy listens on, and the selector that determines
5917// which pods will answer requests sent through the proxy.
5918#Service: {
5919 // APIVersion defines the versioned schema of this representation
5920 // of an object. Servers should convert recognized schemas to the
5921 // latest internal value, and may reject unrecognized values.
5922 // More info:
5923 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5924 "apiVersion": "v1"
5925
5926 // Kind is a string value representing the REST resource this
5927 // object represents. Servers may infer this from the endpoint
5928 // the client submits requests to. Cannot be updated. In
5929 // CamelCase. More info:
5930 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5931 "kind": "Service"
5932
5933 // Standard object's metadata. More info:
5934 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
5935 "metadata"?: v1.#ObjectMeta
5936
5937 // Spec defines the behavior of a service.
5938 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5939 "spec"?: #ServiceSpec
5940
5941 // Most recently observed status of the service. Populated by the
5942 // system. Read-only. More info:
5943 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
5944 "status"?: #ServiceStatus
5945}
5946
5947// ServiceAccount binds together: * a name, understood by users,
5948// and perhaps by peripheral systems, for an identity * a
5949// principal that can be authenticated and authorized * a set of
5950// secrets
5951#ServiceAccount: {
5952 // APIVersion defines the versioned schema of this representation
5953 // of an object. Servers should convert recognized schemas to the
5954 // latest internal value, and may reject unrecognized values.
5955 // More info:
5956 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
5957 "apiVersion": "v1"
5958
5959 // AutomountServiceAccountToken indicates whether pods running as
5960 // this service account should have an API token automatically
5961 // mounted. Can be overridden at the pod level.
5962 "automountServiceAccountToken"?: bool
5963
5964 // ImagePullSecrets is a list of references to secrets in the same
5965 // namespace to use for pulling any images in pods that reference
5966 // this ServiceAccount. ImagePullSecrets are distinct from
5967 // Secrets because Secrets can be mounted in the pod, but
5968 // ImagePullSecrets are only accessed by the kubelet. More info:
5969 // https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
5970 "imagePullSecrets"?: [...#LocalObjectReference]
5971
5972 // Kind is a string value representing the REST resource this
5973 // object represents. Servers may infer this from the endpoint
5974 // the client submits requests to. Cannot be updated. In
5975 // CamelCase. More info:
5976 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
5977 "kind": "ServiceAccount"
5978
5979 // Standard object's metadata. More info:
5980 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
5981 "metadata"?: v1.#ObjectMeta
5982
5983 // Secrets is a list of the secrets in the same namespace that
5984 // pods running using this ServiceAccount are allowed to use.
5985 // Pods are only limited to this list if this service account has
5986 // a "kubernetes.io/enforce-mountable-secrets" annotation set to
5987 // "true". The "kubernetes.io/enforce-mountable-secrets"
5988 // annotation is deprecated since v1.32. Prefer separate
5989 // namespaces to isolate access to mounted secrets. This field
5990 // should not be used to find auto-generated service account
5991 // token secrets for use outside of pods. Instead, tokens can be
5992 // requested directly using the TokenRequest API, or service
5993 // account token secrets can be manually created. More info:
5994 // https://kubernetes.io/docs/concepts/configuration/secret
5995 "secrets"?: [...#ObjectReference]
5996}
5997
5998// ServiceAccountList is a list of ServiceAccount objects
5999#ServiceAccountList: {
6000 // APIVersion defines the versioned schema of this representation
6001 // of an object. Servers should convert recognized schemas to the
6002 // latest internal value, and may reject unrecognized values.
6003 // More info:
6004 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
6005 "apiVersion": "v1"
6006
6007 // List of ServiceAccounts. More info:
6008 // https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
6009 "items"!: [...#ServiceAccount]
6010
6011 // Kind is a string value representing the REST resource this
6012 // object represents. Servers may infer this from the endpoint
6013 // the client submits requests to. Cannot be updated. In
6014 // CamelCase. More info:
6015 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
6016 "kind": "ServiceAccountList"
6017
6018 // Standard list metadata. More info:
6019 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
6020 "metadata"?: v1.#ListMeta
6021}
6022
6023// ServiceAccountTokenProjection represents a projected service
6024// account token volume. This projection can be used to insert a
6025// service account token into the pods runtime filesystem for use
6026// against APIs (Kubernetes API Server or otherwise).
6027#ServiceAccountTokenProjection: {
6028 // audience is the intended audience of the token. A recipient of
6029 // a token must identify itself with an identifier specified in
6030 // the audience of the token, and otherwise should reject the
6031 // token. The audience defaults to the identifier of the
6032 // apiserver.
6033 "audience"?: string
6034
6035 // expirationSeconds is the requested duration of validity of the
6036 // service account token. As the token approaches expiration, the
6037 // kubelet volume plugin will proactively rotate the service
6038 // account token. The kubelet will start trying to rotate the
6039 // token if the token is older than 80 percent of its time to
6040 // live or if the token is older than 24 hours.Defaults to 1 hour
6041 // and must be at least 10 minutes.
6042 "expirationSeconds"?: int64 & int
6043
6044 // path is the path relative to the mount point of the file to
6045 // project the token into.
6046 "path"!: string
6047}
6048
6049// ServiceList holds a list of services.
6050#ServiceList: {
6051 // APIVersion defines the versioned schema of this representation
6052 // of an object. Servers should convert recognized schemas to the
6053 // latest internal value, and may reject unrecognized values.
6054 // More info:
6055 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
6056 "apiVersion": "v1"
6057
6058 // List of services
6059 "items"!: [...#Service]
6060
6061 // Kind is a string value representing the REST resource this
6062 // object represents. Servers may infer this from the endpoint
6063 // the client submits requests to. Cannot be updated. In
6064 // CamelCase. More info:
6065 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
6066 "kind": "ServiceList"
6067
6068 // Standard list metadata. More info:
6069 // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
6070 "metadata"?: v1.#ListMeta
6071}
6072
6073// ServicePort contains information on service's port.
6074#ServicePort: {
6075 // The application protocol for this port. This is used as a hint
6076 // for implementations to offer richer behavior for protocols
6077 // that they understand. This field follows standard Kubernetes
6078 // label syntax. Valid values are either:
6079 //
6080 // * Un-prefixed protocol names - reserved for IANA standard
6081 // service names (as per RFC-6335 and
6082 // https://www.iana.org/assignments/service-names).
6083 //
6084 // * Kubernetes-defined prefixed names:
6085 // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext
6086 // as described in
6087 // https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
6088 // * 'kubernetes.io/ws' - WebSocket over cleartext as described in
6089 // https://www.rfc-editor.org/rfc/rfc6455
6090 // * 'kubernetes.io/wss' - WebSocket over TLS as described in
6091 // https://www.rfc-editor.org/rfc/rfc6455
6092 //
6093 // * Other protocols should use implementation-defined prefixed
6094 // names such as mycompany.com/my-custom-protocol.
6095 "appProtocol"?: string
6096
6097 // The name of this port within the service. This must be a
6098 // DNS_LABEL. All ports within a ServiceSpec must have unique
6099 // names. When considering the endpoints for a Service, this must
6100 // match the 'name' field in the EndpointPort. Optional if only
6101 // one ServicePort is defined on this service.
6102 "name"?: string
6103
6104 // The port on each node on which this service is exposed when
6105 // type is NodePort or LoadBalancer. Usually assigned by the
6106 // system. If a value is specified, in-range, and not in use it
6107 // will be used, otherwise the operation will fail. If not
6108 // specified, a port will be allocated if this Service requires
6109 // one. If this field is specified when creating a Service which
6110 // does not need it, creation will fail. This field will be wiped
6111 // when updating a Service to no longer need it (e.g. changing
6112 // type from NodePort to ClusterIP). More info:
6113 // https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
6114 "nodePort"?: int32 & int
6115
6116 // The port that will be exposed by this service.
6117 "port"!: int32 & int
6118
6119 // The IP protocol for this port. Supports "TCP", "UDP", and
6120 // "SCTP". Default is TCP.
6121 "protocol"?: string
6122
6123 // Number or name of the port to access on the pods targeted by
6124 // the service. Number must be in the range 1 to 65535. Name must
6125 // be an IANA_SVC_NAME. If this is a string, it will be looked up
6126 // as a named port in the target Pod's container ports. If this
6127 // is not specified, the value of the 'port' field is used (an
6128 // identity map). This field is ignored for services with
6129 // clusterIP=None, and should be omitted or set equal to the
6130 // 'port' field. More info:
6131 // https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
6132 "targetPort"?: intstr.#IntOrString
6133}
6134
6135// ServiceSpec describes the attributes that a user creates on a
6136// service.
6137#ServiceSpec: {
6138 // allocateLoadBalancerNodePorts defines if NodePorts will be
6139 // automatically allocated for services with type LoadBalancer.
6140 // Default is "true". It may be set to "false" if the cluster
6141 // load-balancer does not rely on NodePorts. If the caller
6142 // requests specific NodePorts (by specifying a value), those
6143 // requests will be respected, regardless of this field. This
6144 // field may only be set for services with type LoadBalancer and
6145 // will be cleared if the type is changed to any other type.
6146 "allocateLoadBalancerNodePorts"?: bool
6147
6148 // clusterIP is the IP address of the service and is usually
6149 // assigned randomly. If an address is specified manually, is
6150 // in-range (as per system configuration), and is not in use, it
6151 // will be allocated to the service; otherwise creation of the
6152 // service will fail. This field may not be changed through
6153 // updates unless the type field is also being changed to
6154 // ExternalName (which requires this field to be blank) or the
6155 // type field is being changed from ExternalName (in which case
6156 // this field may optionally be specified, as describe above).
6157 // Valid values are "None", empty string (""), or a valid IP
6158 // address. Setting this to "None" makes a "headless service" (no
6159 // virtual IP), which is useful when direct endpoint connections
6160 // are preferred and proxying is not required. Only applies to
6161 // types ClusterIP, NodePort, and LoadBalancer. If this field is
6162 // specified when creating a Service of type ExternalName,
6163 // creation will fail. This field will be wiped when updating a
6164 // Service to type ExternalName. More info:
6165 // https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
6166 "clusterIP"?: string
6167
6168 // ClusterIPs is a list of IP addresses assigned to this service,
6169 // and are usually assigned randomly. If an address is specified
6170 // manually, is in-range (as per system configuration), and is
6171 // not in use, it will be allocated to the service; otherwise
6172 // creation of the service will fail. This field may not be
6173 // changed through updates unless the type field is also being
6174 // changed to ExternalName (which requires this field to be
6175 // empty) or the type field is being changed from ExternalName
6176 // (in which case this field may optionally be specified, as
6177 // describe above). Valid values are "None", empty string (""),
6178 // or a valid IP address. Setting this to "None" makes a
6179 // "headless service" (no virtual IP), which is useful when
6180 // direct endpoint connections are preferred and proxying is not
6181 // required. Only applies to types ClusterIP, NodePort, and
6182 // LoadBalancer. If this field is specified when creating a
6183 // Service of type ExternalName, creation will fail. This field
6184 // will be wiped when updating a Service to type ExternalName. If
6185 // this field is not specified, it will be initialized from the
6186 // clusterIP field. If this field is specified, clients must
6187 // ensure that clusterIPs[0] and clusterIP have the same value.
6188 //
6189 // This field may hold a maximum of two entries (dual-stack IPs,
6190 // in either order). These IPs must correspond to the values of
6191 // the ipFamilies field. Both clusterIPs and ipFamilies are
6192 // governed by the ipFamilyPolicy field. More info:
6193 // https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
6194 "clusterIPs"?: [...string]
6195
6196 // externalIPs is a list of IP addresses for which nodes in the
6197 // cluster will also accept traffic for this service. These IPs
6198 // are not managed by Kubernetes. The user is responsible for
6199 // ensuring that traffic arrives at a node with this IP. A common
6200 // example is external load-balancers that are not part of the
6201 // Kubernetes system.
6202 "externalIPs"?: [...string]
6203
6204 // externalName is the external reference that discovery
6205 // mechanisms will return as an alias for this service (e.g. a
6206 // DNS CNAME record). No proxying will be involved. Must be a
6207 // lowercase RFC-1123 hostname
6208 // (https://tools.ietf.org/html/rfc1123) and requires `type` to
6209 // be "ExternalName".
6210 "externalName"?: string
6211
6212 // externalTrafficPolicy describes how nodes distribute service
6213 // traffic they receive on one of the Service's
6214 // "externally-facing" addresses (NodePorts, ExternalIPs, and
6215 // LoadBalancer IPs). If set to "Local", the proxy will configure
6216 // the service in a way that assumes that external load balancers
6217 // will take care of balancing the service traffic between nodes,
6218 // and so each node will deliver traffic only to the node-local
6219 // endpoints of the service, without masquerading the client
6220 // source IP. (Traffic mistakenly sent to a node with no
6221 // endpoints will be dropped.) The default value, "Cluster", uses
6222 // the standard behavior of routing to all endpoints evenly
6223 // (possibly modified by topology and other features). Note that
6224 // traffic sent to an External IP or LoadBalancer IP from within
6225 // the cluster will always get "Cluster" semantics, but clients
6226 // sending to a NodePort from within the cluster may need to take
6227 // traffic policy into account when picking a node.
6228 "externalTrafficPolicy"?: string
6229
6230 // healthCheckNodePort specifies the healthcheck nodePort for the
6231 // service. This only applies when type is set to LoadBalancer
6232 // and externalTrafficPolicy is set to Local. If a value is
6233 // specified, is in-range, and is not in use, it will be used. If
6234 // not specified, a value will be automatically allocated.
6235 // External systems (e.g. load-balancers) can use this port to
6236 // determine if a given node holds endpoints for this service or
6237 // not. If this field is specified when creating a Service which
6238 // does not need it, creation will fail. This field will be wiped
6239 // when updating a Service to no longer need it (e.g. changing
6240 // type). This field cannot be updated once set.
6241 "healthCheckNodePort"?: int32 & int
6242
6243 // InternalTrafficPolicy describes how nodes distribute service
6244 // traffic they receive on the ClusterIP. If set to "Local", the
6245 // proxy will assume that pods only want to talk to endpoints of
6246 // the service on the same node as the pod, dropping the traffic
6247 // if there are no local endpoints. The default value, "Cluster",
6248 // uses the standard behavior of routing to all endpoints evenly
6249 // (possibly modified by topology and other features).
6250 "internalTrafficPolicy"?: string
6251
6252 // IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned
6253 // to this service. This field is usually assigned automatically
6254 // based on cluster configuration and the ipFamilyPolicy field.
6255 // If this field is specified manually, the requested family is
6256 // available in the cluster, and ipFamilyPolicy allows it, it
6257 // will be used; otherwise creation of the service will fail.
6258 // This field is conditionally mutable: it allows for adding or
6259 // removing a secondary IP family, but it does not allow changing
6260 // the primary IP family of the Service. Valid values are "IPv4"
6261 // and "IPv6". This field only applies to Services of types
6262 // ClusterIP, NodePort, and LoadBalancer, and does apply to
6263 // "headless" services. This field will be wiped when updating a
6264 // Service to type ExternalName.
6265 //
6266 // This field may hold a maximum of two entries (dual-stack
6267 // families, in either order). These families must correspond to
6268 // the values of the clusterIPs field, if specified. Both
6269 // clusterIPs and ipFamilies are governed by the ipFamilyPolicy
6270 // field.
6271 "ipFamilies"?: [...string]
6272
6273 // IPFamilyPolicy represents the dual-stack-ness requested or
6274 // required by this Service. If there is no value provided, then
6275 // this field will be set to SingleStack. Services can be
6276 // "SingleStack" (a single IP family), "PreferDualStack" (two IP
6277 // families on dual-stack configured clusters or a single IP
6278 // family on single-stack clusters), or "RequireDualStack" (two
6279 // IP families on dual-stack configured clusters, otherwise
6280 // fail). The ipFamilies and clusterIPs fields depend on the
6281 // value of this field. This field will be wiped when updating a
6282 // service to type ExternalName.
6283 "ipFamilyPolicy"?: string
6284
6285 // loadBalancerClass is the class of the load balancer
6286 // implementation this Service belongs to. If specified, the
6287 // value of this field must be a label-style identifier, with an
6288 // optional prefix, e.g. "internal-vip" or
6289 // "example.com/internal-vip". Unprefixed names are reserved for
6290 // end-users. This field can only be set when the Service type is
6291 // 'LoadBalancer'. If not set, the default load balancer
6292 // implementation is used, today this is typically done through
6293 // the cloud provider integration, but should apply for any
6294 // default implementation. If set, it is assumed that a load
6295 // balancer implementation is watching for Services with a
6296 // matching class. Any default load balancer implementation (e.g.
6297 // cloud providers) should ignore Services that set this field.
6298 // This field can only be set when creating or updating a Service
6299 // to type 'LoadBalancer'. Once set, it can not be changed. This
6300 // field will be wiped when a service is updated to a non
6301 // 'LoadBalancer' type.
6302 "loadBalancerClass"?: string
6303
6304 // Only applies to Service Type: LoadBalancer. This feature
6305 // depends on whether the underlying cloud-provider supports
6306 // specifying the loadBalancerIP when a load balancer is created.
6307 // This field will be ignored if the cloud-provider does not
6308 // support the feature. Deprecated: This field was
6309 // under-specified and its meaning varies across implementations.
6310 // Using it is non-portable and it may not support dual-stack.
6311 // Users are encouraged to use implementation-specific
6312 // annotations when available.
6313 "loadBalancerIP"?: string
6314
6315 // If specified and supported by the platform, this will restrict
6316 // traffic through the cloud-provider load-balancer will be
6317 // restricted to the specified client IPs. This field will be
6318 // ignored if the cloud-provider does not support the feature."
6319 // More info:
6320 // https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
6321 "loadBalancerSourceRanges"?: [...string]
6322
6323 // The list of ports that are exposed by this service. More info:
6324 // https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
6325 "ports"?: [...#ServicePort]
6326
6327 // publishNotReadyAddresses indicates that any agent which deals
6328 // with endpoints for this Service should disregard any
6329 // indications of ready/not-ready. The primary use case for
6330 // setting this field is for a StatefulSet's Headless Service to
6331 // propagate SRV DNS records for its Pods for the purpose of peer
6332 // discovery. The Kubernetes controllers that generate Endpoints
6333 // and EndpointSlice resources for Services interpret this to
6334 // mean that all endpoints are considered "ready" even if the
6335 // Pods themselves are not. Agents which consume only Kubernetes
6336 // generated endpoints through the Endpoints or EndpointSlice
6337 // resources can safely assume this behavior.
6338 "publishNotReadyAddresses"?: bool
6339
6340 // Route service traffic to pods with label keys and values
6341 // matching this selector. If empty or not present, the service
6342 // is assumed to have an external process managing its endpoints,
6343 // which Kubernetes will not modify. Only applies to types
6344 // ClusterIP, NodePort, and LoadBalancer. Ignored if type is
6345 // ExternalName. More info:
6346 // https://kubernetes.io/docs/concepts/services-networking/service/
6347 "selector"?: {
6348 [string]: string
6349 }
6350
6351 // Supports "ClientIP" and "None". Used to maintain session
6352 // affinity. Enable client IP based session affinity. Must be
6353 // ClientIP or None. Defaults to None. More info:
6354 // https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
6355 "sessionAffinity"?: string
6356
6357 // sessionAffinityConfig contains the configurations of session
6358 // affinity.
6359 "sessionAffinityConfig"?: #SessionAffinityConfig
6360
6361 // TrafficDistribution offers a way to express preferences for how
6362 // traffic is distributed to Service endpoints. Implementations
6363 // can use this field as a hint, but are not required to
6364 // guarantee strict adherence. If the field is not set, the
6365 // implementation will apply its default routing strategy. If set
6366 // to "PreferClose", implementations should prioritize endpoints
6367 // that are in the same zone.
6368 "trafficDistribution"?: string
6369
6370 // type determines how the Service is exposed. Defaults to
6371 // ClusterIP. Valid options are ExternalName, ClusterIP,
6372 // NodePort, and LoadBalancer. "ClusterIP" allocates a
6373 // cluster-internal IP address for load-balancing to endpoints.
6374 // Endpoints are determined by the selector or if that is not
6375 // specified, by manual construction of an Endpoints object or
6376 // EndpointSlice objects. If clusterIP is "None", no virtual IP
6377 // is allocated and the endpoints are published as a set of
6378 // endpoints rather than a virtual IP. "NodePort" builds on
6379 // ClusterIP and allocates a port on every node which routes to
6380 // the same endpoints as the clusterIP. "LoadBalancer" builds on
6381 // NodePort and creates an external load-balancer (if supported
6382 // in the current cloud) which routes to the same endpoints as
6383 // the clusterIP. "ExternalName" aliases this service to the
6384 // specified externalName. Several other fields do not apply to
6385 // ExternalName services. More info:
6386 // https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
6387 "type"?: string
6388}
6389
6390// ServiceStatus represents the current status of a service.
6391#ServiceStatus: {
6392 // Current service state
6393 "conditions"?: [...v1.#Condition]
6394
6395 // LoadBalancer contains the current status of the load-balancer,
6396 // if one is present.
6397 "loadBalancer"?: #LoadBalancerStatus
6398}
6399
6400// SessionAffinityConfig represents the configurations of session
6401// affinity.
6402#SessionAffinityConfig: {
6403 // clientIP contains the configurations of Client IP based session
6404 // affinity.
6405 "clientIP"?: #ClientIPConfig
6406}
6407
6408// SleepAction describes a "sleep" action.
6409#SleepAction: {
6410 // Seconds is the number of seconds to sleep.
6411 "seconds"!: int64 & int
6412}
6413
6414// Represents a StorageOS persistent volume resource.
6415#StorageOSPersistentVolumeSource: {
6416 // fsType is the filesystem type to mount. Must be a filesystem
6417 // type supported by the host operating system. Ex. "ext4",
6418 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
6419 // unspecified.
6420 "fsType"?: string
6421
6422 // readOnly defaults to false (read/write). ReadOnly here will
6423 // force the ReadOnly setting in VolumeMounts.
6424 "readOnly"?: bool
6425
6426 // secretRef specifies the secret to use for obtaining the
6427 // StorageOS API credentials. If not specified, default values
6428 // will be attempted.
6429 "secretRef"?: #ObjectReference
6430
6431 // volumeName is the human-readable name of the StorageOS volume.
6432 // Volume names are only unique within a namespace.
6433 "volumeName"?: string
6434
6435 // volumeNamespace specifies the scope of the volume within
6436 // StorageOS. If no namespace is specified then the Pod's
6437 // namespace will be used. This allows the Kubernetes name
6438 // scoping to be mirrored within StorageOS for tighter
6439 // integration. Set VolumeName to any name to override the
6440 // default behaviour. Set to "default" if you are not using
6441 // namespaces within StorageOS. Namespaces that do not pre-exist
6442 // within StorageOS will be created.
6443 "volumeNamespace"?: string
6444}
6445
6446// Represents a StorageOS persistent volume resource.
6447#StorageOSVolumeSource: {
6448 // fsType is the filesystem type to mount. Must be a filesystem
6449 // type supported by the host operating system. Ex. "ext4",
6450 // "xfs", "ntfs". Implicitly inferred to be "ext4" if
6451 // unspecified.
6452 "fsType"?: string
6453
6454 // readOnly defaults to false (read/write). ReadOnly here will
6455 // force the ReadOnly setting in VolumeMounts.
6456 "readOnly"?: bool
6457
6458 // secretRef specifies the secret to use for obtaining the
6459 // StorageOS API credentials. If not specified, default values
6460 // will be attempted.
6461 "secretRef"?: #LocalObjectReference
6462
6463 // volumeName is the human-readable name of the StorageOS volume.
6464 // Volume names are only unique within a namespace.
6465 "volumeName"?: string
6466
6467 // volumeNamespace specifies the scope of the volume within
6468 // StorageOS. If no namespace is specified then the Pod's
6469 // namespace will be used. This allows the Kubernetes name
6470 // scoping to be mirrored within StorageOS for tighter
6471 // integration. Set VolumeName to any name to override the
6472 // default behaviour. Set to "default" if you are not using
6473 // namespaces within StorageOS. Namespaces that do not pre-exist
6474 // within StorageOS will be created.
6475 "volumeNamespace"?: string
6476}
6477
6478// Sysctl defines a kernel parameter to be set
6479#Sysctl: {
6480 // Name of a property to set
6481 "name"!: string
6482
6483 // Value of a property to set
6484 "value"!: string
6485}
6486
6487// TCPSocketAction describes an action based on opening a socket
6488#TCPSocketAction: {
6489 // Optional: Host name to connect to, defaults to the pod IP.
6490 "host"?: string
6491
6492 // Number or name of the port to access on the container. Number
6493 // must be in the range 1 to 65535. Name must be an
6494 // IANA_SVC_NAME.
6495 "port"!: intstr.#IntOrString
6496}
6497
6498// The node this Taint is attached to has the "effect" on any pod
6499// that does not tolerate the Taint.
6500#Taint: {
6501 // Required. The effect of the taint on pods that do not tolerate
6502 // the taint. Valid effects are NoSchedule, PreferNoSchedule and
6503 // NoExecute.
6504 "effect"!: string
6505
6506 // Required. The taint key to be applied to a node.
6507 "key"!: string
6508
6509 // TimeAdded represents the time at which the taint was added.
6510 "timeAdded"?: v1.#Time
6511
6512 // The taint value corresponding to the taint key.
6513 "value"?: string
6514}
6515
6516// The pod this Toleration is attached to tolerates any taint that
6517// matches the triple <key,value,effect> using the matching
6518// operator <operator>.
6519#Toleration: {
6520 // Effect indicates the taint effect to match. Empty means match
6521 // all taint effects. When specified, allowed values are
6522 // NoSchedule, PreferNoSchedule and NoExecute.
6523 "effect"?: string
6524
6525 // Key is the taint key that the toleration applies to. Empty
6526 // means match all taint keys. If the key is empty, operator must
6527 // be Exists; this combination means to match all values and all
6528 // keys.
6529 "key"?: string
6530
6531 // Operator represents a key's relationship to the value. Valid
6532 // operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
6533 // Exists is equivalent to wildcard for value, so that a pod can
6534 // tolerate all taints of a particular category. Lt and Gt
6535 // perform numeric comparisons (requires feature gate
6536 // TaintTolerationComparisonOperators).
6537 "operator"?: string
6538
6539 // TolerationSeconds represents the period of time the toleration
6540 // (which must be of effect NoExecute, otherwise this field is
6541 // ignored) tolerates the taint. By default, it is not set, which
6542 // means tolerate the taint forever (do not evict). Zero and
6543 // negative values will be treated as 0 (evict immediately) by
6544 // the system.
6545 "tolerationSeconds"?: int64 & int
6546
6547 // Value is the taint value the toleration matches to. If the
6548 // operator is Exists, the value should be empty, otherwise just
6549 // a regular string.
6550 "value"?: string
6551}
6552
6553// A topology selector requirement is a selector that matches
6554// given label. This is an alpha feature and may change in the
6555// future.
6556#TopologySelectorLabelRequirement: {
6557 // The label key that the selector applies to.
6558 "key"!: string
6559
6560 // An array of string values. One value must match the label to be
6561 // selected. Each entry in Values is ORed.
6562 "values"!: [...string]
6563}
6564
6565// A topology selector term represents the result of label
6566// queries. A null or empty topology selector term matches no
6567// objects. The requirements of them are ANDed. It provides a
6568// subset of functionality as NodeSelectorTerm. This is an alpha
6569// feature and may change in the future.
6570#TopologySelectorTerm: {
6571 // A list of topology selector requirements by labels.
6572 "matchLabelExpressions"?: [...#TopologySelectorLabelRequirement]
6573}
6574
6575// TopologySpreadConstraint specifies how to spread matching pods
6576// among the given topology.
6577#TopologySpreadConstraint: {
6578 // LabelSelector is used to find matching pods. Pods that match
6579 // this label selector are counted to determine the number of
6580 // pods in their corresponding topology domain.
6581 "labelSelector"?: v1.#LabelSelector
6582
6583 // MatchLabelKeys is a set of pod label keys to select the pods
6584 // over which spreading will be calculated. The keys are used to
6585 // lookup values from the incoming pod labels, those key-value
6586 // labels are ANDed with labelSelector to select the group of
6587 // existing pods over which spreading will be calculated for the
6588 // incoming pod. The same key is forbidden to exist in both
6589 // MatchLabelKeys and LabelSelector. MatchLabelKeys cannot be set
6590 // when LabelSelector isn't set. Keys that don't exist in the
6591 // incoming pod labels will be ignored. A null or empty list
6592 // means only match against labelSelector.
6593 //
6594 // This is a beta field and requires the
6595 // MatchLabelKeysInPodTopologySpread feature gate to be enabled
6596 // (enabled by default).
6597 "matchLabelKeys"?: [...string]
6598
6599 // MaxSkew describes the degree to which pods may be unevenly
6600 // distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the
6601 // maximum permitted difference between the number of matching
6602 // pods in the target topology and the global minimum. The global
6603 // minimum is the minimum number of matching pods in an eligible
6604 // domain or zero if the number of eligible domains is less than
6605 // MinDomains. For example, in a 3-zone cluster, MaxSkew is set
6606 // to 1, and pods with the same labelSelector spread as 2/2/1: In
6607 // this case, the global minimum is 1. | zone1 | zone2 | zone3 |
6608 // | P P | P P | P | - if MaxSkew is 1, incoming pod can only be
6609 // scheduled to zone3 to become 2/2/2; scheduling it onto
6610 // zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)
6611 // violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be
6612 // scheduled onto any zone. When
6613 // `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher
6614 // precedence to topologies that satisfy it. It's a required
6615 // field. Default value is 1 and 0 is not allowed.
6616 "maxSkew"!: int32 & int
6617
6618 // MinDomains indicates a minimum number of eligible domains. When
6619 // the number of eligible domains with matching topology keys is
6620 // less than minDomains, Pod Topology Spread treats "global
6621 // minimum" as 0, and then the calculation of Skew is performed.
6622 // And when the number of eligible domains with matching topology
6623 // keys equals or greater than minDomains, this value has no
6624 // effect on scheduling. As a result, when the number of eligible
6625 // domains is less than minDomains, scheduler won't schedule more
6626 // than maxSkew Pods to those domains. If value is nil, the
6627 // constraint behaves as if MinDomains is equal to 1. Valid
6628 // values are integers greater than 0. When value is not nil,
6629 // WhenUnsatisfiable must be DoNotSchedule.
6630 //
6631 // For example, in a 3-zone cluster, MaxSkew is set to 2,
6632 // MinDomains is set to 5 and pods with the same labelSelector
6633 // spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P P | P P |
6634 // The number of domains is less than 5(MinDomains), so "global
6635 // minimum" is treated as 0. In this situation, new pod with the
6636 // same labelSelector cannot be scheduled, because computed skew
6637 // will be 3(3 - 0) if new Pod is scheduled to any of the three
6638 // zones, it will violate MaxSkew.
6639 "minDomains"?: int32 & int
6640
6641 // NodeAffinityPolicy indicates how we will treat Pod's
6642 // nodeAffinity/nodeSelector when calculating pod topology spread
6643 // skew. Options are: - Honor: only nodes matching
6644 // nodeAffinity/nodeSelector are included in the calculations. -
6645 // Ignore: nodeAffinity/nodeSelector are ignored. All nodes are
6646 // included in the calculations.
6647 //
6648 // If this value is nil, the behavior is equivalent to the Honor
6649 // policy.
6650 "nodeAffinityPolicy"?: string
6651
6652 // NodeTaintsPolicy indicates how we will treat node taints when
6653 // calculating pod topology spread skew. Options are: - Honor:
6654 // nodes without taints, along with tainted nodes for which the
6655 // incoming pod has a toleration, are included. - Ignore: node
6656 // taints are ignored. All nodes are included.
6657 //
6658 // If this value is nil, the behavior is equivalent to the Ignore
6659 // policy.
6660 "nodeTaintsPolicy"?: string
6661
6662 // TopologyKey is the key of node labels. Nodes that have a label
6663 // with this key and identical values are considered to be in the
6664 // same topology. We consider each <key, value> as a "bucket",
6665 // and try to put balanced number of pods into each bucket. We
6666 // define a domain as a particular instance of a topology. Also,
6667 // we define an eligible domain as a domain whose nodes meet the
6668 // requirements of nodeAffinityPolicy and nodeTaintsPolicy. e.g.
6669 // If TopologyKey is "kubernetes.io/hostname", each Node is a
6670 // domain of that topology. And, if TopologyKey is
6671 // "topology.kubernetes.io/zone", each zone is a domain of that
6672 // topology. It's a required field.
6673 "topologyKey"!: string
6674
6675 // WhenUnsatisfiable indicates how to deal with a pod if it
6676 // doesn't satisfy the spread constraint. - DoNotSchedule
6677 // (default) tells the scheduler not to schedule it. -
6678 // ScheduleAnyway tells the scheduler to schedule the pod in any
6679 // location,
6680 // but giving higher precedence to topologies that would help
6681 // reduce the
6682 // skew.
6683 // A constraint is considered "Unsatisfiable" for an incoming pod
6684 // if and only if every possible node assignment for that pod
6685 // would violate "MaxSkew" on some topology. For example, in a
6686 // 3-zone cluster, MaxSkew is set to 1, and pods with the same
6687 // labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P
6688 // P | P | P | If WhenUnsatisfiable is set to DoNotSchedule,
6689 // incoming pod can only be scheduled to zone2(zone3) to become
6690 // 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies
6691 // MaxSkew(1). In other words, the cluster can still be
6692 // imbalanced, but scheduler won't make it *more* imbalanced.
6693 // It's a required field.
6694 "whenUnsatisfiable"!: string
6695}
6696
6697// TypedLocalObjectReference contains enough information to let
6698// you locate the typed referenced object inside the same
6699// namespace.
6700#TypedLocalObjectReference: {
6701 // APIGroup is the group for the resource being referenced. If
6702 // APIGroup is not specified, the specified Kind must be in the
6703 // core API group. For any other third-party types, APIGroup is
6704 // required.
6705 "apiGroup"?: string
6706
6707 // Kind is the type of resource being referenced
6708 "kind"!: string
6709
6710 // Name is the name of resource being referenced
6711 "name"!: string
6712}
6713
6714// TypedObjectReference contains enough information to let you
6715// locate the typed referenced object
6716#TypedObjectReference: {
6717 // APIGroup is the group for the resource being referenced. If
6718 // APIGroup is not specified, the specified Kind must be in the
6719 // core API group. For any other third-party types, APIGroup is
6720 // required.
6721 "apiGroup"?: string
6722
6723 // Kind is the type of resource being referenced
6724 "kind"!: string
6725
6726 // Name is the name of resource being referenced
6727 "name"!: string
6728
6729 // Namespace is the namespace of resource being referenced Note
6730 // that when a namespace is specified, a
6731 // gateway.networking.k8s.io/ReferenceGrant object is required in
6732 // the referent namespace to allow that namespace's owner to
6733 // accept the reference. See the ReferenceGrant documentation for
6734 // details. (Alpha) This field requires the
6735 // CrossNamespaceVolumeDataSource feature gate to be enabled.
6736 "namespace"?: string
6737}
6738
6739// Volume represents a named volume in a pod that may be accessed
6740// by any container in the pod.
6741#Volume: {
6742 // awsElasticBlockStore represents an AWS Disk resource that is
6743 // attached to a kubelet's host machine and then exposed to the
6744 // pod. Deprecated: AWSElasticBlockStore is deprecated. All
6745 // operations for the in-tree awsElasticBlockStore type are
6746 // redirected to the ebs.csi.aws.com CSI driver. More info:
6747 // https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
6748 "awsElasticBlockStore"?: #AWSElasticBlockStoreVolumeSource
6749
6750 // azureDisk represents an Azure Data Disk mount on the host and
6751 // bind mount to the pod. Deprecated: AzureDisk is deprecated.
6752 // All operations for the in-tree azureDisk type are redirected
6753 // to the disk.csi.azure.com CSI driver.
6754 "azureDisk"?: #AzureDiskVolumeSource
6755
6756 // azureFile represents an Azure File Service mount on the host
6757 // and bind mount to the pod. Deprecated: AzureFile is
6758 // deprecated. All operations for the in-tree azureFile type are
6759 // redirected to the file.csi.azure.com CSI driver.
6760 "azureFile"?: #AzureFileVolumeSource
6761
6762 // cephFS represents a Ceph FS mount on the host that shares a
6763 // pod's lifetime. Deprecated: CephFS is deprecated and the
6764 // in-tree cephfs type is no longer supported.
6765 "cephfs"?: #CephFSVolumeSource
6766
6767 // cinder represents a cinder volume attached and mounted on
6768 // kubelets host machine. Deprecated: Cinder is deprecated. All
6769 // operations for the in-tree cinder type are redirected to the
6770 // cinder.csi.openstack.org CSI driver. More info:
6771 // https://examples.k8s.io/mysql-cinder-pd/README.md
6772 "cinder"?: #CinderVolumeSource
6773
6774 // configMap represents a configMap that should populate this
6775 // volume
6776 "configMap"?: #ConfigMapVolumeSource
6777
6778 // csi (Container Storage Interface) represents ephemeral storage
6779 // that is handled by certain external CSI drivers.
6780 "csi"?: #CSIVolumeSource
6781
6782 // downwardAPI represents downward API about the pod that should
6783 // populate this volume
6784 "downwardAPI"?: #DownwardAPIVolumeSource
6785
6786 // emptyDir represents a temporary directory that shares a pod's
6787 // lifetime. More info:
6788 // https://kubernetes.io/docs/concepts/storage/volumes#emptydir
6789 "emptyDir"?: #EmptyDirVolumeSource
6790
6791 // ephemeral represents a volume that is handled by a cluster
6792 // storage driver. The volume's lifecycle is tied to the pod that
6793 // defines it - it will be created before the pod starts, and
6794 // deleted when the pod is removed.
6795 //
6796 // Use this if: a) the volume is only needed while the pod runs,
6797 // b) features of normal volumes like restoring from snapshot or
6798 // capacity
6799 // tracking are needed,
6800 // c) the storage driver is specified through a storage class, and
6801 // d) the storage driver supports dynamic volume provisioning
6802 // through
6803 // a PersistentVolumeClaim (see EphemeralVolumeSource for more
6804 // information on the connection between this volume type
6805 // and PersistentVolumeClaim).
6806 //
6807 // Use PersistentVolumeClaim or one of the vendor-specific APIs
6808 // for volumes that persist for longer than the lifecycle of an
6809 // individual pod.
6810 //
6811 // Use CSI for light-weight local ephemeral volumes if the CSI
6812 // driver is meant to be used that way - see the documentation of
6813 // the driver for more information.
6814 //
6815 // A pod can use both types of ephemeral volumes and persistent
6816 // volumes at the same time.
6817 "ephemeral"?: #EphemeralVolumeSource
6818
6819 // fc represents a Fibre Channel resource that is attached to a
6820 // kubelet's host machine and then exposed to the pod.
6821 "fc"?: #FCVolumeSource
6822
6823 // flexVolume represents a generic volume resource that is
6824 // provisioned/attached using an exec based plugin. Deprecated:
6825 // FlexVolume is deprecated. Consider using a CSIDriver instead.
6826 "flexVolume"?: #FlexVolumeSource
6827
6828 // flocker represents a Flocker volume attached to a kubelet's
6829 // host machine. This depends on the Flocker control service
6830 // being running. Deprecated: Flocker is deprecated and the
6831 // in-tree flocker type is no longer supported.
6832 "flocker"?: #FlockerVolumeSource
6833
6834 // gcePersistentDisk represents a GCE Disk resource that is
6835 // attached to a kubelet's host machine and then exposed to the
6836 // pod. Deprecated: GCEPersistentDisk is deprecated. All
6837 // operations for the in-tree gcePersistentDisk type are
6838 // redirected to the pd.csi.storage.gke.io CSI driver. More info:
6839 // https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
6840 "gcePersistentDisk"?: #GCEPersistentDiskVolumeSource
6841
6842 // gitRepo represents a git repository at a particular revision.
6843 // Deprecated: GitRepo is deprecated. To provision a container
6844 // with a git repo, mount an EmptyDir into an InitContainer that
6845 // clones the repo using git, then mount the EmptyDir into the
6846 // Pod's container.
6847 "gitRepo"?: #GitRepoVolumeSource
6848
6849 // glusterfs represents a Glusterfs mount on the host that shares
6850 // a pod's lifetime. Deprecated: Glusterfs is deprecated and the
6851 // in-tree glusterfs type is no longer supported.
6852 "glusterfs"?: #GlusterfsVolumeSource
6853
6854 // hostPath represents a pre-existing file or directory on the
6855 // host machine that is directly exposed to the container. This
6856 // is generally used for system agents or other privileged things
6857 // that are allowed to see the host machine. Most containers will
6858 // NOT need this. More info:
6859 // https://kubernetes.io/docs/concepts/storage/volumes#hostpath
6860 "hostPath"?: #HostPathVolumeSource
6861
6862 // image represents an OCI object (a container image or artifact)
6863 // pulled and mounted on the kubelet's host machine. The volume
6864 // is resolved at pod startup depending on which PullPolicy value
6865 // is provided:
6866 //
6867 // - Always: the kubelet always attempts to pull the reference.
6868 // Container creation will fail If the pull fails. - Never: the
6869 // kubelet never pulls the reference and only uses a local image
6870 // or artifact. Container creation will fail if the reference
6871 // isn't present. - IfNotPresent: the kubelet pulls if the
6872 // reference isn't already present on disk. Container creation
6873 // will fail if the reference isn't present and the pull fails.
6874 //
6875 // The volume gets re-resolved if the pod gets deleted and
6876 // recreated, which means that new remote content will become
6877 // available on pod recreation. A failure to resolve or pull the
6878 // image during pod startup will block containers from starting
6879 // and may add significant latency. Failures will be retried
6880 // using normal volume backoff and will be reported on the pod
6881 // reason and message. The types of objects that may be mounted
6882 // by this volume are defined by the container runtime
6883 // implementation on a host machine and at minimum must include
6884 // all valid types supported by the container image field. The
6885 // OCI object gets mounted in a single directory
6886 // (spec.containers[*].volumeMounts.mountPath) by merging the
6887 // manifest layers in the same way as for container images. The
6888 // volume will be mounted read-only (ro). Sub path mounts for
6889 // containers are not supported
6890 // (spec.containers[*].volumeMounts.subpath) before 1.33. The
6891 // field spec.securityContext.fsGroupChangePolicy has no effect
6892 // on this volume type.
6893 "image"?: #ImageVolumeSource
6894
6895 // iscsi represents an ISCSI Disk resource that is attached to a
6896 // kubelet's host machine and then exposed to the pod. More info:
6897 // https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
6898 "iscsi"?: #ISCSIVolumeSource
6899
6900 // name of the volume. Must be a DNS_LABEL and unique within the
6901 // pod. More info:
6902 // https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
6903 "name"!: string
6904
6905 // nfs represents an NFS mount on the host that shares a pod's
6906 // lifetime More info:
6907 // https://kubernetes.io/docs/concepts/storage/volumes#nfs
6908 "nfs"?: #NFSVolumeSource
6909
6910 // persistentVolumeClaimVolumeSource represents a reference to a
6911 // PersistentVolumeClaim in the same namespace. More info:
6912 // https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
6913 "persistentVolumeClaim"?: #PersistentVolumeClaimVolumeSource
6914
6915 // photonPersistentDisk represents a PhotonController persistent
6916 // disk attached and mounted on kubelets host machine.
6917 // Deprecated: PhotonPersistentDisk is deprecated and the in-tree
6918 // photonPersistentDisk type is no longer supported.
6919 "photonPersistentDisk"?: #PhotonPersistentDiskVolumeSource
6920
6921 // portworxVolume represents a portworx volume attached and
6922 // mounted on kubelets host machine. Deprecated: PortworxVolume
6923 // is deprecated. All operations for the in-tree portworxVolume
6924 // type are redirected to the pxd.portworx.com CSI driver.
6925 "portworxVolume"?: #PortworxVolumeSource
6926
6927 // projected items for all in one resources secrets, configmaps,
6928 // and downward API
6929 "projected"?: #ProjectedVolumeSource
6930
6931 // quobyte represents a Quobyte mount on the host that shares a
6932 // pod's lifetime. Deprecated: Quobyte is deprecated and the
6933 // in-tree quobyte type is no longer supported.
6934 "quobyte"?: #QuobyteVolumeSource
6935
6936 // rbd represents a Rados Block Device mount on the host that
6937 // shares a pod's lifetime. Deprecated: RBD is deprecated and the
6938 // in-tree rbd type is no longer supported.
6939 "rbd"?: #RBDVolumeSource
6940
6941 // scaleIO represents a ScaleIO persistent volume attached and
6942 // mounted on Kubernetes nodes. Deprecated: ScaleIO is deprecated
6943 // and the in-tree scaleIO type is no longer supported.
6944 "scaleIO"?: #ScaleIOVolumeSource
6945
6946 // secret represents a secret that should populate this volume.
6947 // More info:
6948 // https://kubernetes.io/docs/concepts/storage/volumes#secret
6949 "secret"?: #SecretVolumeSource
6950
6951 // storageOS represents a StorageOS volume attached and mounted on
6952 // Kubernetes nodes. Deprecated: StorageOS is deprecated and the
6953 // in-tree storageos type is no longer supported.
6954 "storageos"?: #StorageOSVolumeSource
6955
6956 // vsphereVolume represents a vSphere volume attached and mounted
6957 // on kubelets host machine. Deprecated: VsphereVolume is
6958 // deprecated. All operations for the in-tree vsphereVolume type
6959 // are redirected to the csi.vsphere.vmware.com CSI driver.
6960 "vsphereVolume"?: #VsphereVirtualDiskVolumeSource
6961}
6962
6963// volumeDevice describes a mapping of a raw block device within a
6964// container.
6965#VolumeDevice: {
6966 // devicePath is the path inside of the container that the device
6967 // will be mapped to.
6968 "devicePath"!: string
6969
6970 // name must match the name of a persistentVolumeClaim in the pod
6971 "name"!: string
6972}
6973
6974// VolumeMount describes a mounting of a Volume within a
6975// container.
6976#VolumeMount: {
6977 // Path within the container at which the volume should be
6978 // mounted. Must not contain ':'.
6979 "mountPath"!: string
6980
6981 // mountPropagation determines how mounts are propagated from the
6982 // host to container and the other way around. When not set,
6983 // MountPropagationNone is used. This field is beta in 1.10. When
6984 // RecursiveReadOnly is set to IfPossible or to Enabled,
6985 // MountPropagation must be None or unspecified (which defaults
6986 // to None).
6987 "mountPropagation"?: string
6988
6989 // This must match the Name of a Volume.
6990 "name"!: string
6991
6992 // Mounted read-only if true, read-write otherwise (false or
6993 // unspecified). Defaults to false.
6994 "readOnly"?: bool
6995
6996 // RecursiveReadOnly specifies whether read-only mounts should be
6997 // handled recursively.
6998 //
6999 // If ReadOnly is false, this field has no meaning and must be
7000 // unspecified.
7001 //
7002 // If ReadOnly is true, and this field is set to Disabled, the
7003 // mount is not made recursively read-only. If this field is set
7004 // to IfPossible, the mount is made recursively read-only, if it
7005 // is supported by the container runtime. If this field is set to
7006 // Enabled, the mount is made recursively read-only if it is
7007 // supported by the container runtime, otherwise the pod will not
7008 // be started and an error will be generated to indicate the
7009 // reason.
7010 //
7011 // If this field is set to IfPossible or Enabled, MountPropagation
7012 // must be set to None (or be unspecified, which defaults to
7013 // None).
7014 //
7015 // If this field is not specified, it is treated as an equivalent
7016 // of Disabled.
7017 "recursiveReadOnly"?: string
7018
7019 // Path within the volume from which the container's volume should
7020 // be mounted. Defaults to "" (volume's root).
7021 "subPath"?: string
7022
7023 // Expanded path within the volume from which the container's
7024 // volume should be mounted. Behaves similarly to SubPath but
7025 // environment variable references $(VAR_NAME) are expanded using
7026 // the container's environment. Defaults to "" (volume's root).
7027 // SubPathExpr and SubPath are mutually exclusive.
7028 "subPathExpr"?: string
7029}
7030
7031// VolumeMountStatus shows status of volume mounts.
7032#VolumeMountStatus: {
7033 // MountPath corresponds to the original VolumeMount.
7034 "mountPath"!: string
7035
7036 // Name corresponds to the name of the original VolumeMount.
7037 "name"!: string
7038
7039 // ReadOnly corresponds to the original VolumeMount.
7040 "readOnly"?: bool
7041
7042 // RecursiveReadOnly must be set to Disabled, Enabled, or
7043 // unspecified (for non-readonly mounts). An IfPossible value in
7044 // the original VolumeMount must be translated to Disabled or
7045 // Enabled, depending on the mount result.
7046 "recursiveReadOnly"?: string
7047
7048 // volumeStatus represents volume-type-specific status about the
7049 // mounted volume.
7050 "volumeStatus"?: #VolumeStatus
7051}
7052
7053// VolumeNodeAffinity defines constraints that limit what nodes
7054// this volume can be accessed from.
7055#VolumeNodeAffinity: {
7056 // required specifies hard node constraints that must be met.
7057 "required"?: #NodeSelector
7058}
7059
7060// Projection that may be projected along with other supported
7061// volume types. Exactly one of these fields must be set.
7062#VolumeProjection: {
7063 // ClusterTrustBundle allows a pod to access the
7064 // `.spec.trustBundle` field of ClusterTrustBundle objects in an
7065 // auto-updating file.
7066 //
7067 // Alpha, gated by the ClusterTrustBundleProjection feature gate.
7068 //
7069 // ClusterTrustBundle objects can either be selected by name, or
7070 // by the combination of signer name and a label selector.
7071 //
7072 // Kubelet performs aggressive normalization of the PEM contents
7073 // written into the pod filesystem. Esoteric PEM features such as
7074 // inter-block comments and block headers are stripped.
7075 // Certificates are deduplicated. The ordering of certificates
7076 // within the file is arbitrary, and Kubelet may change the order
7077 // over time.
7078 "clusterTrustBundle"?: #ClusterTrustBundleProjection
7079
7080 // configMap information about the configMap data to project
7081 "configMap"?: #ConfigMapProjection
7082
7083 // downwardAPI information about the downwardAPI data to project
7084 "downwardAPI"?: #DownwardAPIProjection
7085
7086 // Projects an auto-rotating credential bundle (private key and
7087 // certificate chain) that the pod can use either as a TLS client
7088 // or server.
7089 //
7090 // Kubelet generates a private key and uses it to send a
7091 // PodCertificateRequest to the named signer. Once the signer
7092 // approves the request and issues a certificate chain, Kubelet
7093 // writes the key and certificate chain to the pod filesystem.
7094 // The pod does not start until certificates have been issued for
7095 // each podCertificate projected volume source in its spec.
7096 //
7097 // Kubelet will begin trying to rotate the certificate at the time
7098 // indicated by the signer using the
7099 // PodCertificateRequest.Status.BeginRefreshAt timestamp.
7100 //
7101 // Kubelet can write a single file, indicated by the
7102 // credentialBundlePath field, or separate files, indicated by
7103 // the keyPath and certificateChainPath fields.
7104 //
7105 // The credential bundle is a single file in PEM format. The first
7106 // PEM entry is the private key (in PKCS#8 format), and the
7107 // remaining PEM entries are the certificate chain issued by the
7108 // signer (typically, signers will return their certificate chain
7109 // in leaf-to-root order).
7110 //
7111 // Prefer using the credential bundle format, since your
7112 // application code can read it atomically. If you use keyPath
7113 // and certificateChainPath, your application must make two
7114 // separate file reads. If these coincide with a certificate
7115 // rotation, it is possible that the private key and leaf
7116 // certificate you read may not correspond to each other. Your
7117 // application will need to check for this condition, and re-read
7118 // until they are consistent.
7119 //
7120 // The named signer controls chooses the format of the certificate
7121 // it issues; consult the signer implementation's documentation
7122 // to learn how to use the certificates it issues.
7123 "podCertificate"?: #PodCertificateProjection
7124
7125 // secret information about the secret data to project
7126 "secret"?: #SecretProjection
7127
7128 // serviceAccountToken is information about the
7129 // serviceAccountToken data to project
7130 "serviceAccountToken"?: #ServiceAccountTokenProjection
7131}
7132
7133// VolumeResourceRequirements describes the storage resource
7134// requirements for a volume.
7135#VolumeResourceRequirements: {
7136 // Limits describes the maximum amount of compute resources
7137 // allowed. More info:
7138 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
7139 "limits"?: [string]: resource.#Quantity
7140
7141 // Requests describes the minimum amount of compute resources
7142 // required. If Requests is omitted for a container, it defaults
7143 // to Limits if that is explicitly specified, otherwise to an
7144 // implementation-defined value. Requests cannot exceed Limits.
7145 // More info:
7146 // https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
7147 "requests"?: {
7148 [string]: resource.#Quantity
7149 }
7150}
7151
7152// VolumeStatus represents the status of a mounted volume. At most
7153// one of its members must be specified.
7154#VolumeStatus: {
7155 // image represents an OCI object (a container image or artifact)
7156 // pulled and mounted on the kubelet's host machine.
7157 "image"?: #ImageVolumeStatus
7158}
7159
7160// Represents a vSphere volume resource.
7161#VsphereVirtualDiskVolumeSource: {
7162 // fsType is filesystem type to mount. Must be a filesystem type
7163 // supported by the host operating system. Ex. "ext4", "xfs",
7164 // "ntfs". Implicitly inferred to be "ext4" if unspecified.
7165 "fsType"?: string
7166
7167 // storagePolicyID is the storage Policy Based Management (SPBM)
7168 // profile ID associated with the StoragePolicyName.
7169 "storagePolicyID"?: string
7170
7171 // storagePolicyName is the storage Policy Based Management (SPBM)
7172 // profile name.
7173 "storagePolicyName"?: string
7174
7175 // volumePath is the path that identifies vSphere volume vmdk
7176 "volumePath"!: string
7177}
7178
7179// The weights of all of the matched WeightedPodAffinityTerm
7180// fields are added per-node to find the most preferred node(s)
7181#WeightedPodAffinityTerm: {
7182 // Required. A pod affinity term, associated with the
7183 // corresponding weight.
7184 "podAffinityTerm"!: #PodAffinityTerm
7185
7186 // weight associated with matching the corresponding
7187 // podAffinityTerm, in the range 1-100.
7188 "weight"!: int32 & int
7189}
7190
7191// WindowsSecurityContextOptions contain Windows-specific options
7192// and credentials.
7193#WindowsSecurityContextOptions: {
7194 // GMSACredentialSpec is where the GMSA admission webhook
7195 // (https://github.com/kubernetes-sigs/windows-gmsa) inlines the
7196 // contents of the GMSA credential spec named by the
7197 // GMSACredentialSpecName field.
7198 "gmsaCredentialSpec"?: string
7199
7200 // GMSACredentialSpecName is the name of the GMSA credential spec
7201 // to use.
7202 "gmsaCredentialSpecName"?: string
7203
7204 // HostProcess determines if a container should be run as a 'Host
7205 // Process' container. All of a Pod's containers must have the
7206 // same effective HostProcess value (it is not allowed to have a
7207 // mix of HostProcess containers and non-HostProcess containers).
7208 // In addition, if HostProcess is true then HostNetwork must also
7209 // be set to true.
7210 "hostProcess"?: bool
7211
7212 // The UserName in Windows to run the entrypoint of the container
7213 // process. Defaults to the user specified in image metadata if
7214 // unspecified. May also be set in PodSecurityContext. If set in
7215 // both SecurityContext and PodSecurityContext, the value
7216 // specified in SecurityContext takes precedence.
7217 "runAsUserName"?: string
7218}