blob: 742627b094a4d2737931840046883a98af29ea53 [file] [log] [blame]
Zack Williamse940c7a2019-08-21 14:25:39 -07001/*
2Copyright The Kubernetes Authors.
3
4Licensed under the Apache License, Version 2.0 (the "License");
5you may not use this file except in compliance with the License.
6You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10Unless required by applicable law or agreed to in writing, software
11distributed under the License is distributed on an "AS IS" BASIS,
12WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13See the License for the specific language governing permissions and
14limitations under the License.
15*/
16
17
18// This file was autogenerated by go-to-protobuf. Do not edit it manually!
19
20syntax = 'proto2';
21
22package k8s.io.api.core.v1;
23
24import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
25import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
26import "k8s.io/apimachinery/pkg/runtime/generated.proto";
27import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
28import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
29
30// Package-wide variables from generator "generated".
31option go_package = "v1";
32
33// Represents a Persistent Disk resource in AWS.
34//
35// An AWS EBS disk must exist before mounting to a container. The disk
36// must also be in the same AWS zone as the kubelet. An AWS EBS disk
37// can only be mounted as read/write once. AWS EBS volumes support
38// ownership management and SELinux relabeling.
39message AWSElasticBlockStoreVolumeSource {
40 // Unique ID of the persistent disk resource in AWS (Amazon EBS volume).
41 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
42 optional string volumeID = 1;
43
44 // Filesystem type of the volume that you want to mount.
45 // Tip: Ensure that the filesystem type is supported by the host operating system.
46 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
47 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
48 // TODO: how do we prevent errors in the filesystem from compromising the machine
49 // +optional
50 optional string fsType = 2;
51
52 // The partition in the volume that you want to mount.
53 // If omitted, the default is to mount by volume name.
54 // Examples: For volume /dev/sda1, you specify the partition as "1".
55 // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
56 // +optional
57 optional int32 partition = 3;
58
59 // Specify "true" to force and set the ReadOnly property in VolumeMounts to "true".
60 // If omitted, the default is "false".
61 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
62 // +optional
63 optional bool readOnly = 4;
64}
65
66// Affinity is a group of affinity scheduling rules.
67message Affinity {
68 // Describes node affinity scheduling rules for the pod.
69 // +optional
70 optional NodeAffinity nodeAffinity = 1;
71
72 // Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
73 // +optional
74 optional PodAffinity podAffinity = 2;
75
76 // Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
77 // +optional
78 optional PodAntiAffinity podAntiAffinity = 3;
79}
80
81// AttachedVolume describes a volume attached to a node
82message AttachedVolume {
83 // Name of the attached volume
84 optional string name = 1;
85
86 // DevicePath represents the device path where the volume should be available
87 optional string devicePath = 2;
88}
89
90// AvoidPods describes pods that should avoid this node. This is the value for a
91// Node annotation with key scheduler.alpha.kubernetes.io/preferAvoidPods and
92// will eventually become a field of NodeStatus.
93message AvoidPods {
94 // Bounded-sized list of signatures of pods that should avoid this node, sorted
95 // in timestamp order from oldest to newest. Size of the slice is unspecified.
96 // +optional
97 repeated PreferAvoidPodsEntry preferAvoidPods = 1;
98}
99
100// AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
101message AzureDiskVolumeSource {
102 // The Name of the data disk in the blob storage
103 optional string diskName = 1;
104
105 // The URI the data disk in the blob storage
106 optional string diskURI = 2;
107
108 // Host Caching mode: None, Read Only, Read Write.
109 // +optional
110 optional string cachingMode = 3;
111
112 // Filesystem type to mount.
113 // Must be a filesystem type supported by the host operating system.
114 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
115 // +optional
116 optional string fsType = 4;
117
118 // Defaults to false (read/write). ReadOnly here will force
119 // the ReadOnly setting in VolumeMounts.
120 // +optional
121 optional bool readOnly = 5;
122
123 // Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared
124 optional string kind = 6;
125}
126
127// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
128message AzureFilePersistentVolumeSource {
129 // the name of secret that contains Azure Storage Account Name and Key
130 optional string secretName = 1;
131
132 // Share Name
133 optional string shareName = 2;
134
135 // Defaults to false (read/write). ReadOnly here will force
136 // the ReadOnly setting in VolumeMounts.
137 // +optional
138 optional bool readOnly = 3;
139
140 // the namespace of the secret that contains Azure Storage Account Name and Key
141 // default is the same as the Pod
142 // +optional
143 optional string secretNamespace = 4;
144}
145
146// AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
147message AzureFileVolumeSource {
148 // the name of secret that contains Azure Storage Account Name and Key
149 optional string secretName = 1;
150
151 // Share Name
152 optional string shareName = 2;
153
154 // Defaults to false (read/write). ReadOnly here will force
155 // the ReadOnly setting in VolumeMounts.
156 // +optional
157 optional bool readOnly = 3;
158}
159
160// Binding ties one object to another; for example, a pod is bound to a node by a scheduler.
161// Deprecated in 1.7, please use the bindings subresource of pods instead.
162message Binding {
163 // Standard object's metadata.
164 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
165 // +optional
166 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
167
168 // The target object that you want to bind to the standard object.
169 optional ObjectReference target = 2;
170}
171
172// Represents storage that is managed by an external CSI volume driver (Beta feature)
173message CSIPersistentVolumeSource {
174 // Driver is the name of the driver to use for this volume.
175 // Required.
176 optional string driver = 1;
177
178 // VolumeHandle is the unique volume name returned by the CSI volume
179 // plugin’s CreateVolume to refer to the volume on all subsequent calls.
180 // Required.
181 optional string volumeHandle = 2;
182
183 // Optional: The value to pass to ControllerPublishVolumeRequest.
184 // Defaults to false (read/write).
185 // +optional
186 optional bool readOnly = 3;
187
188 // Filesystem type to mount.
189 // Must be a filesystem type supported by the host operating system.
190 // Ex. "ext4", "xfs", "ntfs".
191 // +optional
192 optional string fsType = 4;
193
194 // Attributes of the volume to publish.
195 // +optional
196 map<string, string> volumeAttributes = 5;
197
198 // ControllerPublishSecretRef is a reference to the secret object containing
199 // sensitive information to pass to the CSI driver to complete the CSI
200 // ControllerPublishVolume and ControllerUnpublishVolume calls.
201 // This field is optional, and may be empty if no secret is required. If the
202 // secret object contains more than one secret, all secrets are passed.
203 // +optional
204 optional SecretReference controllerPublishSecretRef = 6;
205
206 // NodeStageSecretRef is a reference to the secret object containing sensitive
207 // information to pass to the CSI driver to complete the CSI NodeStageVolume
208 // and NodeStageVolume and NodeUnstageVolume calls.
209 // This field is optional, and may be empty if no secret is required. If the
210 // secret object contains more than one secret, all secrets are passed.
211 // +optional
212 optional SecretReference nodeStageSecretRef = 7;
213
214 // NodePublishSecretRef is a reference to the secret object containing
215 // sensitive information to pass to the CSI driver to complete the CSI
216 // NodePublishVolume and NodeUnpublishVolume calls.
217 // This field is optional, and may be empty if no secret is required. If the
218 // secret object contains more than one secret, all secrets are passed.
219 // +optional
220 optional SecretReference nodePublishSecretRef = 8;
221
222 // ControllerExpandSecretRef is a reference to the secret object containing
223 // sensitive information to pass to the CSI driver to complete the CSI
224 // ControllerExpandVolume call.
225 // This is an alpha field and requires enabling ExpandCSIVolumes feature gate.
226 // This field is optional, and may be empty if no secret is required. If the
227 // secret object contains more than one secret, all secrets are passed.
228 // +optional
229 optional SecretReference controllerExpandSecretRef = 9;
230}
231
232// Represents a source location of a volume to mount, managed by an external CSI driver
233message CSIVolumeSource {
234 // Driver is the name of the CSI driver that handles this volume.
235 // Consult with your admin for the correct name as registered in the cluster.
236 optional string driver = 1;
237
238 // Specifies a read-only configuration for the volume.
239 // Defaults to false (read/write).
240 // +optional
241 optional bool readOnly = 2;
242
243 // Filesystem type to mount. Ex. "ext4", "xfs", "ntfs".
244 // If not provided, the empty value is passed to the associated CSI driver
245 // which will determine the default filesystem to apply.
246 // +optional
247 optional string fsType = 3;
248
249 // VolumeAttributes stores driver-specific properties that are passed to the CSI
250 // driver. Consult your driver's documentation for supported values.
251 // +optional
252 map<string, string> volumeAttributes = 4;
253
254 // NodePublishSecretRef is a reference to the secret object containing
255 // sensitive information to pass to the CSI driver to complete the CSI
256 // NodePublishVolume and NodeUnpublishVolume calls.
257 // This field is optional, and may be empty if no secret is required. If the
258 // secret object contains more than one secret, all secret references are passed.
259 // +optional
260 optional LocalObjectReference nodePublishSecretRef = 5;
261}
262
263// Adds and removes POSIX capabilities from running containers.
264message Capabilities {
265 // Added capabilities
266 // +optional
267 repeated string add = 1;
268
269 // Removed capabilities
270 // +optional
271 repeated string drop = 2;
272}
273
274// Represents a Ceph Filesystem mount that lasts the lifetime of a pod
275// Cephfs volumes do not support ownership management or SELinux relabeling.
276message CephFSPersistentVolumeSource {
277 // Required: Monitors is a collection of Ceph monitors
278 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
279 repeated string monitors = 1;
280
281 // Optional: Used as the mounted root, rather than the full Ceph tree, default is /
282 // +optional
283 optional string path = 2;
284
285 // Optional: User is the rados user name, default is admin
286 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
287 // +optional
288 optional string user = 3;
289
290 // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
291 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
292 // +optional
293 optional string secretFile = 4;
294
295 // Optional: SecretRef is reference to the authentication secret for User, default is empty.
296 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
297 // +optional
298 optional SecretReference secretRef = 5;
299
300 // Optional: Defaults to false (read/write). ReadOnly here will force
301 // the ReadOnly setting in VolumeMounts.
302 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
303 // +optional
304 optional bool readOnly = 6;
305}
306
307// Represents a Ceph Filesystem mount that lasts the lifetime of a pod
308// Cephfs volumes do not support ownership management or SELinux relabeling.
309message CephFSVolumeSource {
310 // Required: Monitors is a collection of Ceph monitors
311 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
312 repeated string monitors = 1;
313
314 // Optional: Used as the mounted root, rather than the full Ceph tree, default is /
315 // +optional
316 optional string path = 2;
317
318 // Optional: User is the rados user name, default is admin
319 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
320 // +optional
321 optional string user = 3;
322
323 // Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
324 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
325 // +optional
326 optional string secretFile = 4;
327
328 // Optional: SecretRef is reference to the authentication secret for User, default is empty.
329 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
330 // +optional
331 optional LocalObjectReference secretRef = 5;
332
333 // Optional: Defaults to false (read/write). ReadOnly here will force
334 // the ReadOnly setting in VolumeMounts.
335 // More info: https://releases.k8s.io/HEAD/examples/volumes/cephfs/README.md#how-to-use-it
336 // +optional
337 optional bool readOnly = 6;
338}
339
340// Represents a cinder volume resource in Openstack.
341// A Cinder volume must exist before mounting to a container.
342// The volume must also be in the same region as the kubelet.
343// Cinder volumes support ownership management and SELinux relabeling.
344message CinderPersistentVolumeSource {
345 // volume id used to identify the volume in cinder
346 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
347 optional string volumeID = 1;
348
349 // Filesystem type to mount.
350 // Must be a filesystem type supported by the host operating system.
351 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
352 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
353 // +optional
354 optional string fsType = 2;
355
356 // Optional: Defaults to false (read/write). ReadOnly here will force
357 // the ReadOnly setting in VolumeMounts.
358 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
359 // +optional
360 optional bool readOnly = 3;
361
362 // Optional: points to a secret object containing parameters used to connect
363 // to OpenStack.
364 // +optional
365 optional SecretReference secretRef = 4;
366}
367
368// Represents a cinder volume resource in Openstack.
369// A Cinder volume must exist before mounting to a container.
370// The volume must also be in the same region as the kubelet.
371// Cinder volumes support ownership management and SELinux relabeling.
372message CinderVolumeSource {
373 // volume id used to identify the volume in cinder
374 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
375 optional string volumeID = 1;
376
377 // Filesystem type to mount.
378 // Must be a filesystem type supported by the host operating system.
379 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
380 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
381 // +optional
382 optional string fsType = 2;
383
384 // Optional: Defaults to false (read/write). ReadOnly here will force
385 // the ReadOnly setting in VolumeMounts.
386 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
387 // +optional
388 optional bool readOnly = 3;
389
390 // Optional: points to a secret object containing parameters used to connect
391 // to OpenStack.
392 // +optional
393 optional LocalObjectReference secretRef = 4;
394}
395
396// ClientIPConfig represents the configurations of Client IP based session affinity.
397message ClientIPConfig {
398 // timeoutSeconds specifies the seconds of ClientIP type session sticky time.
399 // The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP".
400 // Default value is 10800(for 3 hours).
401 // +optional
402 optional int32 timeoutSeconds = 1;
403}
404
405// Information about the condition of a component.
406message ComponentCondition {
407 // Type of condition for a component.
408 // Valid value: "Healthy"
409 optional string type = 1;
410
411 // Status of the condition for a component.
412 // Valid values for "Healthy": "True", "False", or "Unknown".
413 optional string status = 2;
414
415 // Message about the condition for a component.
416 // For example, information about a health check.
417 // +optional
418 optional string message = 3;
419
420 // Condition error code for a component.
421 // For example, a health check error code.
422 // +optional
423 optional string error = 4;
424}
425
426// ComponentStatus (and ComponentStatusList) holds the cluster validation info.
427message ComponentStatus {
428 // Standard object's metadata.
429 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
430 // +optional
431 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
432
433 // List of component conditions observed
434 // +optional
435 // +patchMergeKey=type
436 // +patchStrategy=merge
437 repeated ComponentCondition conditions = 2;
438}
439
440// Status of all the conditions for the component as a list of ComponentStatus objects.
441message ComponentStatusList {
442 // Standard list metadata.
443 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
444 // +optional
445 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
446
447 // List of ComponentStatus objects.
448 repeated ComponentStatus items = 2;
449}
450
451// ConfigMap holds configuration data for pods to consume.
452message ConfigMap {
453 // Standard object's metadata.
454 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
455 // +optional
456 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
457
458 // Data contains the configuration data.
459 // Each key must consist of alphanumeric characters, '-', '_' or '.'.
460 // Values with non-UTF-8 byte sequences must use the BinaryData field.
461 // The keys stored in Data must not overlap with the keys in
462 // the BinaryData field, this is enforced during validation process.
463 // +optional
464 map<string, string> data = 2;
465
466 // BinaryData contains the binary data.
467 // Each key must consist of alphanumeric characters, '-', '_' or '.'.
468 // BinaryData can contain byte sequences that are not in the UTF-8 range.
469 // The keys stored in BinaryData must not overlap with the ones in
470 // the Data field, this is enforced during validation process.
471 // Using this field will require 1.10+ apiserver and
472 // kubelet.
473 // +optional
474 map<string, bytes> binaryData = 3;
475}
476
477// ConfigMapEnvSource selects a ConfigMap to populate the environment
478// variables with.
479//
480// The contents of the target ConfigMap's Data field will represent the
481// key-value pairs as environment variables.
482message ConfigMapEnvSource {
483 // The ConfigMap to select from.
484 optional LocalObjectReference localObjectReference = 1;
485
486 // Specify whether the ConfigMap must be defined
487 // +optional
488 optional bool optional = 2;
489}
490
491// Selects a key from a ConfigMap.
492message ConfigMapKeySelector {
493 // The ConfigMap to select from.
494 optional LocalObjectReference localObjectReference = 1;
495
496 // The key to select.
497 optional string key = 2;
498
499 // Specify whether the ConfigMap or its key must be defined
500 // +optional
501 optional bool optional = 3;
502}
503
504// ConfigMapList is a resource containing a list of ConfigMap objects.
505message ConfigMapList {
506 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
507 // +optional
508 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
509
510 // Items is the list of ConfigMaps.
511 repeated ConfigMap items = 2;
512}
513
514// ConfigMapNodeConfigSource contains the information to reference a ConfigMap as a config source for the Node.
515message ConfigMapNodeConfigSource {
516 // Namespace is the metadata.namespace of the referenced ConfigMap.
517 // This field is required in all cases.
518 optional string namespace = 1;
519
520 // Name is the metadata.name of the referenced ConfigMap.
521 // This field is required in all cases.
522 optional string name = 2;
523
524 // UID is the metadata.UID of the referenced ConfigMap.
525 // This field is forbidden in Node.Spec, and required in Node.Status.
526 // +optional
527 optional string uid = 3;
528
529 // ResourceVersion is the metadata.ResourceVersion of the referenced ConfigMap.
530 // This field is forbidden in Node.Spec, and required in Node.Status.
531 // +optional
532 optional string resourceVersion = 4;
533
534 // KubeletConfigKey declares which key of the referenced ConfigMap corresponds to the KubeletConfiguration structure
535 // This field is required in all cases.
536 optional string kubeletConfigKey = 5;
537}
538
539// Adapts a ConfigMap into a projected volume.
540//
541// The contents of the target ConfigMap's Data field will be presented in a
542// projected volume as files using the keys in the Data field as the file names,
543// unless the items element is populated with specific mappings of keys to paths.
544// Note that this is identical to a configmap volume source without the default
545// mode.
546message ConfigMapProjection {
547 optional LocalObjectReference localObjectReference = 1;
548
549 // If unspecified, each key-value pair in the Data field of the referenced
550 // ConfigMap will be projected into the volume as a file whose name is the
551 // key and content is the value. If specified, the listed keys will be
552 // projected into the specified paths, and unlisted keys will not be
553 // present. If a key is specified which is not present in the ConfigMap,
554 // the volume setup will error unless it is marked optional. Paths must be
555 // relative and may not contain the '..' path or start with '..'.
556 // +optional
557 repeated KeyToPath items = 2;
558
559 // Specify whether the ConfigMap or its keys must be defined
560 // +optional
561 optional bool optional = 4;
562}
563
564// Adapts a ConfigMap into a volume.
565//
566// The contents of the target ConfigMap's Data field will be presented in a
567// volume as files using the keys in the Data field as the file names, unless
568// the items element is populated with specific mappings of keys to paths.
569// ConfigMap volumes support ownership management and SELinux relabeling.
570message ConfigMapVolumeSource {
571 optional LocalObjectReference localObjectReference = 1;
572
573 // If unspecified, each key-value pair in the Data field of the referenced
574 // ConfigMap will be projected into the volume as a file whose name is the
575 // key and content is the value. If specified, the listed keys will be
576 // projected into the specified paths, and unlisted keys will not be
577 // present. If a key is specified which is not present in the ConfigMap,
578 // the volume setup will error unless it is marked optional. Paths must be
579 // relative and may not contain the '..' path or start with '..'.
580 // +optional
581 repeated KeyToPath items = 2;
582
583 // Optional: mode bits to use on created files by default. Must be a
584 // value between 0 and 0777. Defaults to 0644.
585 // Directories within the path are not affected by this setting.
586 // This might be in conflict with other options that affect the file
587 // mode, like fsGroup, and the result can be other mode bits set.
588 // +optional
589 optional int32 defaultMode = 3;
590
591 // Specify whether the ConfigMap or its keys must be defined
592 // +optional
593 optional bool optional = 4;
594}
595
596// A single application container that you want to run within a pod.
597message Container {
598 // Name of the container specified as a DNS_LABEL.
599 // Each container in a pod must have a unique name (DNS_LABEL).
600 // Cannot be updated.
601 optional string name = 1;
602
603 // Docker image name.
604 // More info: https://kubernetes.io/docs/concepts/containers/images
605 // This field is optional to allow higher level config management to default or override
606 // container images in workload controllers like Deployments and StatefulSets.
607 // +optional
608 optional string image = 2;
609
610 // Entrypoint array. Not executed within a shell.
611 // The docker image's ENTRYPOINT is used if this is not provided.
612 // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
613 // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
614 // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
615 // regardless of whether the variable exists or not.
616 // Cannot be updated.
617 // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
618 // +optional
619 repeated string command = 3;
620
621 // Arguments to the entrypoint.
622 // The docker image's CMD is used if this is not provided.
623 // Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
624 // cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax
625 // can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
626 // regardless of whether the variable exists or not.
627 // Cannot be updated.
628 // More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
629 // +optional
630 repeated string args = 4;
631
632 // Container's working directory.
633 // If not specified, the container runtime's default will be used, which
634 // might be configured in the container image.
635 // Cannot be updated.
636 // +optional
637 optional string workingDir = 5;
638
639 // List of ports to expose from the container. Exposing a port here gives
640 // the system additional information about the network connections a
641 // container uses, but is primarily informational. Not specifying a port here
642 // DOES NOT prevent that port from being exposed. Any port which is
643 // listening on the default "0.0.0.0" address inside a container will be
644 // accessible from the network.
645 // Cannot be updated.
646 // +optional
647 // +patchMergeKey=containerPort
648 // +patchStrategy=merge
649 // +listType=map
650 // +listMapKey=containerPort
651 // +listMapKey=protocol
652 repeated ContainerPort ports = 6;
653
654 // List of sources to populate environment variables in the container.
655 // The keys defined within a source must be a C_IDENTIFIER. All invalid keys
656 // will be reported as an event when the container is starting. When a key exists in multiple
657 // sources, the value associated with the last source will take precedence.
658 // Values defined by an Env with a duplicate key will take precedence.
659 // Cannot be updated.
660 // +optional
661 repeated EnvFromSource envFrom = 19;
662
663 // List of environment variables to set in the container.
664 // Cannot be updated.
665 // +optional
666 // +patchMergeKey=name
667 // +patchStrategy=merge
668 repeated EnvVar env = 7;
669
670 // Compute Resources required by this container.
671 // Cannot be updated.
672 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
673 // +optional
674 optional ResourceRequirements resources = 8;
675
676 // Pod volumes to mount into the container's filesystem.
677 // Cannot be updated.
678 // +optional
679 // +patchMergeKey=mountPath
680 // +patchStrategy=merge
681 repeated VolumeMount volumeMounts = 9;
682
683 // volumeDevices is the list of block devices to be used by the container.
684 // This is a beta feature.
685 // +patchMergeKey=devicePath
686 // +patchStrategy=merge
687 // +optional
688 repeated VolumeDevice volumeDevices = 21;
689
690 // Periodic probe of container liveness.
691 // Container will be restarted if the probe fails.
692 // Cannot be updated.
693 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
694 // +optional
695 optional Probe livenessProbe = 10;
696
697 // Periodic probe of container service readiness.
698 // Container will be removed from service endpoints if the probe fails.
699 // Cannot be updated.
700 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
701 // +optional
702 optional Probe readinessProbe = 11;
703
704 // Actions that the management system should take in response to container lifecycle events.
705 // Cannot be updated.
706 // +optional
707 optional Lifecycle lifecycle = 12;
708
709 // Optional: Path at which the file to which the container's termination message
710 // will be written is mounted into the container's filesystem.
711 // Message written is intended to be brief final status, such as an assertion failure message.
712 // Will be truncated by the node if greater than 4096 bytes. The total message length across
713 // all containers will be limited to 12kb.
714 // Defaults to /dev/termination-log.
715 // Cannot be updated.
716 // +optional
717 optional string terminationMessagePath = 13;
718
719 // Indicate how the termination message should be populated. File will use the contents of
720 // terminationMessagePath to populate the container status message on both success and failure.
721 // FallbackToLogsOnError will use the last chunk of container log output if the termination
722 // message file is empty and the container exited with an error.
723 // The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
724 // Defaults to File.
725 // Cannot be updated.
726 // +optional
727 optional string terminationMessagePolicy = 20;
728
729 // Image pull policy.
730 // One of Always, Never, IfNotPresent.
731 // Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
732 // Cannot be updated.
733 // More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
734 // +optional
735 optional string imagePullPolicy = 14;
736
737 // Security options the pod should run with.
738 // More info: https://kubernetes.io/docs/concepts/policy/security-context/
739 // More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
740 // +optional
741 optional SecurityContext securityContext = 15;
742
743 // Whether this container should allocate a buffer for stdin in the container runtime. If this
744 // is not set, reads from stdin in the container will always result in EOF.
745 // Default is false.
746 // +optional
747 optional bool stdin = 16;
748
749 // Whether the container runtime should close the stdin channel after it has been opened by
750 // a single attach. When stdin is true the stdin stream will remain open across multiple attach
751 // sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
752 // first client attaches to stdin, and then remains open and accepts data until the client disconnects,
753 // at which time stdin is closed and remains closed until the container is restarted. If this
754 // flag is false, a container processes that reads from stdin will never receive an EOF.
755 // Default is false
756 // +optional
757 optional bool stdinOnce = 17;
758
759 // Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
760 // Default is false.
761 // +optional
762 optional bool tty = 18;
763}
764
765// Describe a container image
766message ContainerImage {
767 // Names by which this image is known.
768 // e.g. ["k8s.gcr.io/hyperkube:v1.0.7", "dockerhub.io/google_containers/hyperkube:v1.0.7"]
769 repeated string names = 1;
770
771 // The size of the image in bytes.
772 // +optional
773 optional int64 sizeBytes = 2;
774}
775
776// ContainerPort represents a network port in a single container.
777message ContainerPort {
778 // If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
779 // named port in a pod must have a unique name. Name for the port that can be
780 // referred to by services.
781 // +optional
782 optional string name = 1;
783
784 // Number of port to expose on the host.
785 // If specified, this must be a valid port number, 0 < x < 65536.
786 // If HostNetwork is specified, this must match ContainerPort.
787 // Most containers do not need this.
788 // +optional
789 optional int32 hostPort = 2;
790
791 // Number of port to expose on the pod's IP address.
792 // This must be a valid port number, 0 < x < 65536.
793 optional int32 containerPort = 3;
794
795 // Protocol for port. Must be UDP, TCP, or SCTP.
796 // Defaults to "TCP".
797 // +optional
798 optional string protocol = 4;
799
800 // What host IP to bind the external port to.
801 // +optional
802 optional string hostIP = 5;
803}
804
805// ContainerState holds a possible state of container.
806// Only one of its members may be specified.
807// If none of them is specified, the default one is ContainerStateWaiting.
808message ContainerState {
809 // Details about a waiting container
810 // +optional
811 optional ContainerStateWaiting waiting = 1;
812
813 // Details about a running container
814 // +optional
815 optional ContainerStateRunning running = 2;
816
817 // Details about a terminated container
818 // +optional
819 optional ContainerStateTerminated terminated = 3;
820}
821
822// ContainerStateRunning is a running state of a container.
823message ContainerStateRunning {
824 // Time at which the container was last (re-)started
825 // +optional
826 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 1;
827}
828
829// ContainerStateTerminated is a terminated state of a container.
830message ContainerStateTerminated {
831 // Exit status from the last termination of the container
832 optional int32 exitCode = 1;
833
834 // Signal from the last termination of the container
835 // +optional
836 optional int32 signal = 2;
837
838 // (brief) reason from the last termination of the container
839 // +optional
840 optional string reason = 3;
841
842 // Message regarding the last termination of the container
843 // +optional
844 optional string message = 4;
845
846 // Time at which previous execution of the container started
847 // +optional
848 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startedAt = 5;
849
850 // Time at which the container last terminated
851 // +optional
852 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time finishedAt = 6;
853
854 // Container's ID in the format 'docker://<container_id>'
855 // +optional
856 optional string containerID = 7;
857}
858
859// ContainerStateWaiting is a waiting state of a container.
860message ContainerStateWaiting {
861 // (brief) reason the container is not yet running.
862 // +optional
863 optional string reason = 1;
864
865 // Message regarding why the container is not yet running.
866 // +optional
867 optional string message = 2;
868}
869
870// ContainerStatus contains details for the current status of this container.
871message ContainerStatus {
872 // This must be a DNS_LABEL. Each container in a pod must have a unique name.
873 // Cannot be updated.
874 optional string name = 1;
875
876 // Details about the container's current condition.
877 // +optional
878 optional ContainerState state = 2;
879
880 // Details about the container's last termination condition.
881 // +optional
882 optional ContainerState lastState = 3;
883
884 // Specifies whether the container has passed its readiness probe.
885 optional bool ready = 4;
886
887 // The number of times the container has been restarted, currently based on
888 // the number of dead containers that have not yet been removed.
889 // Note that this is calculated from dead containers. But those containers are subject to
890 // garbage collection. This value will get capped at 5 by GC.
891 optional int32 restartCount = 5;
892
893 // The image the container is running.
894 // More info: https://kubernetes.io/docs/concepts/containers/images
895 // TODO(dchen1107): Which image the container is running with?
896 optional string image = 6;
897
898 // ImageID of the container's image.
899 optional string imageID = 7;
900
901 // Container's ID in the format 'docker://<container_id>'.
902 // +optional
903 optional string containerID = 8;
904}
905
906// DaemonEndpoint contains information about a single Daemon endpoint.
907message DaemonEndpoint {
908 // Port number of the given endpoint.
909 optional int32 Port = 1;
910}
911
912// Represents downward API info for projecting into a projected volume.
913// Note that this is identical to a downwardAPI volume source without the default
914// mode.
915message DownwardAPIProjection {
916 // Items is a list of DownwardAPIVolume file
917 // +optional
918 repeated DownwardAPIVolumeFile items = 1;
919}
920
921// DownwardAPIVolumeFile represents information to create the file containing the pod field
922message DownwardAPIVolumeFile {
923 // Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'
924 optional string path = 1;
925
926 // Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.
927 // +optional
928 optional ObjectFieldSelector fieldRef = 2;
929
930 // Selects a resource of the container: only resources limits and requests
931 // (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
932 // +optional
933 optional ResourceFieldSelector resourceFieldRef = 3;
934
935 // Optional: mode bits to use on this file, must be a value between 0
936 // and 0777. If not specified, the volume defaultMode will be used.
937 // This might be in conflict with other options that affect the file
938 // mode, like fsGroup, and the result can be other mode bits set.
939 // +optional
940 optional int32 mode = 4;
941}
942
943// DownwardAPIVolumeSource represents a volume containing downward API info.
944// Downward API volumes support ownership management and SELinux relabeling.
945message DownwardAPIVolumeSource {
946 // Items is a list of downward API volume file
947 // +optional
948 repeated DownwardAPIVolumeFile items = 1;
949
950 // Optional: mode bits to use on created files by default. Must be a
951 // value between 0 and 0777. Defaults to 0644.
952 // Directories within the path are not affected by this setting.
953 // This might be in conflict with other options that affect the file
954 // mode, like fsGroup, and the result can be other mode bits set.
955 // +optional
956 optional int32 defaultMode = 2;
957}
958
959// Represents an empty directory for a pod.
960// Empty directory volumes support ownership management and SELinux relabeling.
961message EmptyDirVolumeSource {
962 // What type of storage medium should back this directory.
963 // The default is "" which means to use the node's default medium.
964 // Must be an empty string (default) or Memory.
965 // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
966 // +optional
967 optional string medium = 1;
968
969 // Total amount of local storage required for this EmptyDir volume.
970 // The size limit is also applicable for memory medium.
971 // The maximum usage on memory medium EmptyDir would be the minimum value between
972 // the SizeLimit specified here and the sum of memory limits of all containers in a pod.
973 // The default is nil which means that the limit is undefined.
974 // More info: http://kubernetes.io/docs/user-guide/volumes#emptydir
975 // +optional
976 optional k8s.io.apimachinery.pkg.api.resource.Quantity sizeLimit = 2;
977}
978
979// EndpointAddress is a tuple that describes single IP address.
980message EndpointAddress {
981 // The IP of this endpoint.
982 // May not be loopback (127.0.0.0/8), link-local (169.254.0.0/16),
983 // or link-local multicast ((224.0.0.0/24).
984 // IPv6 is also accepted but not fully supported on all platforms. Also, certain
985 // kubernetes components, like kube-proxy, are not IPv6 ready.
986 // TODO: This should allow hostname or IP, See #4447.
987 optional string ip = 1;
988
989 // The Hostname of this endpoint
990 // +optional
991 optional string hostname = 3;
992
993 // Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.
994 // +optional
995 optional string nodeName = 4;
996
997 // Reference to object providing the endpoint.
998 // +optional
999 optional ObjectReference targetRef = 2;
1000}
1001
1002// EndpointPort is a tuple that describes a single port.
1003message EndpointPort {
1004 // The name of this port (corresponds to ServicePort.Name).
1005 // Must be a DNS_LABEL.
1006 // Optional only if one port is defined.
1007 // +optional
1008 optional string name = 1;
1009
1010 // The port number of the endpoint.
1011 optional int32 port = 2;
1012
1013 // The IP protocol for this port.
1014 // Must be UDP, TCP, or SCTP.
1015 // Default is TCP.
1016 // +optional
1017 optional string protocol = 3;
1018}
1019
1020// EndpointSubset is a group of addresses with a common set of ports. The
1021// expanded set of endpoints is the Cartesian product of Addresses x Ports.
1022// For example, given:
1023// {
1024// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
1025// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
1026// }
1027// The resulting set of endpoints can be viewed as:
1028// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],
1029// b: [ 10.10.1.1:309, 10.10.2.2:309 ]
1030message EndpointSubset {
1031 // IP addresses which offer the related ports that are marked as ready. These endpoints
1032 // should be considered safe for load balancers and clients to utilize.
1033 // +optional
1034 repeated EndpointAddress addresses = 1;
1035
1036 // IP addresses which offer the related ports but are not currently marked as ready
1037 // because they have not yet finished starting, have recently failed a readiness check,
1038 // or have recently failed a liveness check.
1039 // +optional
1040 repeated EndpointAddress notReadyAddresses = 2;
1041
1042 // Port numbers available on the related IP addresses.
1043 // +optional
1044 repeated EndpointPort ports = 3;
1045}
1046
1047// Endpoints is a collection of endpoints that implement the actual service. Example:
1048// Name: "mysvc",
1049// Subsets: [
1050// {
1051// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}],
1052// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}]
1053// },
1054// {
1055// Addresses: [{"ip": "10.10.3.3"}],
1056// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}]
1057// },
1058// ]
1059message Endpoints {
1060 // Standard object's metadata.
1061 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
1062 // +optional
1063 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
1064
1065 // The set of all endpoints is the union of all subsets. Addresses are placed into
1066 // subsets according to the IPs they share. A single address with multiple ports,
1067 // some of which are ready and some of which are not (because they come from
1068 // different containers) will result in the address being displayed in different
1069 // subsets for the different ports. No address will appear in both Addresses and
1070 // NotReadyAddresses in the same subset.
1071 // Sets of addresses and ports that comprise a service.
1072 // +optional
1073 repeated EndpointSubset subsets = 2;
1074}
1075
1076// EndpointsList is a list of endpoints.
1077message EndpointsList {
1078 // Standard list metadata.
1079 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
1080 // +optional
1081 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1082
1083 // List of endpoints.
1084 repeated Endpoints items = 2;
1085}
1086
1087// EnvFromSource represents the source of a set of ConfigMaps
1088message EnvFromSource {
1089 // An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
1090 // +optional
1091 optional string prefix = 1;
1092
1093 // The ConfigMap to select from
1094 // +optional
1095 optional ConfigMapEnvSource configMapRef = 2;
1096
1097 // The Secret to select from
1098 // +optional
1099 optional SecretEnvSource secretRef = 3;
1100}
1101
1102// EnvVar represents an environment variable present in a Container.
1103message EnvVar {
1104 // Name of the environment variable. Must be a C_IDENTIFIER.
1105 optional string name = 1;
1106
1107 // Variable references $(VAR_NAME) are expanded
1108 // using the previous defined environment variables in the container and
1109 // any service environment variables. If a variable cannot be resolved,
1110 // the reference in the input string will be unchanged. The $(VAR_NAME)
1111 // syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped
1112 // references will never be expanded, regardless of whether the variable
1113 // exists or not.
1114 // Defaults to "".
1115 // +optional
1116 optional string value = 2;
1117
1118 // Source for the environment variable's value. Cannot be used if value is not empty.
1119 // +optional
1120 optional EnvVarSource valueFrom = 3;
1121}
1122
1123// EnvVarSource represents a source for the value of an EnvVar.
1124message EnvVarSource {
1125 // Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations,
1126 // spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP.
1127 // +optional
1128 optional ObjectFieldSelector fieldRef = 1;
1129
1130 // Selects a resource of the container: only resources limits and requests
1131 // (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
1132 // +optional
1133 optional ResourceFieldSelector resourceFieldRef = 2;
1134
1135 // Selects a key of a ConfigMap.
1136 // +optional
1137 optional ConfigMapKeySelector configMapKeyRef = 3;
1138
1139 // Selects a key of a secret in the pod's namespace
1140 // +optional
1141 optional SecretKeySelector secretKeyRef = 4;
1142}
1143
1144// Event is a report of an event somewhere in the cluster.
1145message Event {
1146 // Standard object's metadata.
1147 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
1148 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
1149
1150 // The object that this event is about.
1151 optional ObjectReference involvedObject = 2;
1152
1153 // This should be a short, machine understandable string that gives the reason
1154 // for the transition into the object's current status.
1155 // TODO: provide exact specification for format.
1156 // +optional
1157 optional string reason = 3;
1158
1159 // A human-readable description of the status of this operation.
1160 // TODO: decide on maximum length.
1161 // +optional
1162 optional string message = 4;
1163
1164 // The component reporting this event. Should be a short machine understandable string.
1165 // +optional
1166 optional EventSource source = 5;
1167
1168 // The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)
1169 // +optional
1170 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time firstTimestamp = 6;
1171
1172 // The time at which the most recent occurrence of this event was recorded.
1173 // +optional
1174 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTimestamp = 7;
1175
1176 // The number of times this event has occurred.
1177 // +optional
1178 optional int32 count = 8;
1179
1180 // Type of this event (Normal, Warning), new types could be added in the future
1181 // +optional
1182 optional string type = 9;
1183
1184 // Time when this Event was first observed.
1185 // +optional
1186 optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime eventTime = 10;
1187
1188 // Data about the Event series this event represents or nil if it's a singleton Event.
1189 // +optional
1190 optional EventSeries series = 11;
1191
1192 // What action was taken/failed regarding to the Regarding object.
1193 // +optional
1194 optional string action = 12;
1195
1196 // Optional secondary object for more complex actions.
1197 // +optional
1198 optional ObjectReference related = 13;
1199
1200 // Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`.
1201 // +optional
1202 optional string reportingComponent = 14;
1203
1204 // ID of the controller instance, e.g. `kubelet-xyzf`.
1205 // +optional
1206 optional string reportingInstance = 15;
1207}
1208
1209// EventList is a list of events.
1210message EventList {
1211 // Standard list metadata.
1212 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
1213 // +optional
1214 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1215
1216 // List of events
1217 repeated Event items = 2;
1218}
1219
1220// EventSeries contain information on series of events, i.e. thing that was/is happening
1221// continuously for some time.
1222message EventSeries {
1223 // Number of occurrences in this series up to the last heartbeat time
1224 optional int32 count = 1;
1225
1226 // Time of the last occurrence observed
1227 optional k8s.io.apimachinery.pkg.apis.meta.v1.MicroTime lastObservedTime = 2;
1228
1229 // State of this Series: Ongoing or Finished
1230 // Deprecated. Planned removal for 1.18
1231 optional string state = 3;
1232}
1233
1234// EventSource contains information for an event.
1235message EventSource {
1236 // Component from which the event is generated.
1237 // +optional
1238 optional string component = 1;
1239
1240 // Node name on which the event is generated.
1241 // +optional
1242 optional string host = 2;
1243}
1244
1245// ExecAction describes a "run in container" action.
1246message ExecAction {
1247 // Command is the command line to execute inside the container, the working directory for the
1248 // command is root ('/') in the container's filesystem. The command is simply exec'd, it is
1249 // not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
1250 // a shell, you need to explicitly call out to that shell.
1251 // Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
1252 // +optional
1253 repeated string command = 1;
1254}
1255
1256// Represents a Fibre Channel volume.
1257// Fibre Channel volumes can only be mounted as read/write once.
1258// Fibre Channel volumes support ownership management and SELinux relabeling.
1259message FCVolumeSource {
1260 // Optional: FC target worldwide names (WWNs)
1261 // +optional
1262 repeated string targetWWNs = 1;
1263
1264 // Optional: FC target lun number
1265 // +optional
1266 optional int32 lun = 2;
1267
1268 // Filesystem type to mount.
1269 // Must be a filesystem type supported by the host operating system.
1270 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
1271 // TODO: how do we prevent errors in the filesystem from compromising the machine
1272 // +optional
1273 optional string fsType = 3;
1274
1275 // Optional: Defaults to false (read/write). ReadOnly here will force
1276 // the ReadOnly setting in VolumeMounts.
1277 // +optional
1278 optional bool readOnly = 4;
1279
1280 // Optional: FC volume world wide identifiers (wwids)
1281 // Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
1282 // +optional
1283 repeated string wwids = 5;
1284}
1285
1286// FlexPersistentVolumeSource represents a generic persistent volume resource that is
1287// provisioned/attached using an exec based plugin.
1288message FlexPersistentVolumeSource {
1289 // Driver is the name of the driver to use for this volume.
1290 optional string driver = 1;
1291
1292 // Filesystem type to mount.
1293 // Must be a filesystem type supported by the host operating system.
1294 // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
1295 // +optional
1296 optional string fsType = 2;
1297
1298 // Optional: SecretRef is reference to the secret object containing
1299 // sensitive information to pass to the plugin scripts. This may be
1300 // empty if no secret object is specified. If the secret object
1301 // contains more than one secret, all secrets are passed to the plugin
1302 // scripts.
1303 // +optional
1304 optional SecretReference secretRef = 3;
1305
1306 // Optional: Defaults to false (read/write). ReadOnly here will force
1307 // the ReadOnly setting in VolumeMounts.
1308 // +optional
1309 optional bool readOnly = 4;
1310
1311 // Optional: Extra command options if any.
1312 // +optional
1313 map<string, string> options = 5;
1314}
1315
1316// FlexVolume represents a generic volume resource that is
1317// provisioned/attached using an exec based plugin.
1318message FlexVolumeSource {
1319 // Driver is the name of the driver to use for this volume.
1320 optional string driver = 1;
1321
1322 // Filesystem type to mount.
1323 // Must be a filesystem type supported by the host operating system.
1324 // Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
1325 // +optional
1326 optional string fsType = 2;
1327
1328 // Optional: SecretRef is reference to the secret object containing
1329 // sensitive information to pass to the plugin scripts. This may be
1330 // empty if no secret object is specified. If the secret object
1331 // contains more than one secret, all secrets are passed to the plugin
1332 // scripts.
1333 // +optional
1334 optional LocalObjectReference secretRef = 3;
1335
1336 // Optional: Defaults to false (read/write). ReadOnly here will force
1337 // the ReadOnly setting in VolumeMounts.
1338 // +optional
1339 optional bool readOnly = 4;
1340
1341 // Optional: Extra command options if any.
1342 // +optional
1343 map<string, string> options = 5;
1344}
1345
1346// Represents a Flocker volume mounted by the Flocker agent.
1347// One and only one of datasetName and datasetUUID should be set.
1348// Flocker volumes do not support ownership management or SELinux relabeling.
1349message FlockerVolumeSource {
1350 // Name of the dataset stored as metadata -> name on the dataset for Flocker
1351 // should be considered as deprecated
1352 // +optional
1353 optional string datasetName = 1;
1354
1355 // UUID of the dataset. This is unique identifier of a Flocker dataset
1356 // +optional
1357 optional string datasetUUID = 2;
1358}
1359
1360// Represents a Persistent Disk resource in Google Compute Engine.
1361//
1362// A GCE PD must exist before mounting to a container. The disk must
1363// also be in the same GCE project and zone as the kubelet. A GCE PD
1364// can only be mounted as read/write once or read-only many times. GCE
1365// PDs support ownership management and SELinux relabeling.
1366message GCEPersistentDiskVolumeSource {
1367 // Unique name of the PD resource in GCE. Used to identify the disk in GCE.
1368 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1369 optional string pdName = 1;
1370
1371 // Filesystem type of the volume that you want to mount.
1372 // Tip: Ensure that the filesystem type is supported by the host operating system.
1373 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
1374 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1375 // TODO: how do we prevent errors in the filesystem from compromising the machine
1376 // +optional
1377 optional string fsType = 2;
1378
1379 // The partition in the volume that you want to mount.
1380 // If omitted, the default is to mount by volume name.
1381 // Examples: For volume /dev/sda1, you specify the partition as "1".
1382 // Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
1383 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1384 // +optional
1385 optional int32 partition = 3;
1386
1387 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
1388 // Defaults to false.
1389 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
1390 // +optional
1391 optional bool readOnly = 4;
1392}
1393
1394// Represents a volume that is populated with the contents of a git repository.
1395// Git repo volumes do not support ownership management.
1396// Git repo volumes support SELinux relabeling.
1397//
1398// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
1399// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
1400// into the Pod's container.
1401message GitRepoVolumeSource {
1402 // Repository URL
1403 optional string repository = 1;
1404
1405 // Commit hash for the specified revision.
1406 // +optional
1407 optional string revision = 2;
1408
1409 // Target directory name.
1410 // Must not contain or start with '..'. If '.' is supplied, the volume directory will be the
1411 // git repository. Otherwise, if specified, the volume will contain the git repository in
1412 // the subdirectory with the given name.
1413 // +optional
1414 optional string directory = 3;
1415}
1416
1417// Represents a Glusterfs mount that lasts the lifetime of a pod.
1418// Glusterfs volumes do not support ownership management or SELinux relabeling.
1419message GlusterfsPersistentVolumeSource {
1420 // EndpointsName is the endpoint name that details Glusterfs topology.
1421 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1422 optional string endpoints = 1;
1423
1424 // Path is the Glusterfs volume path.
1425 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1426 optional string path = 2;
1427
1428 // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
1429 // Defaults to false.
1430 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1431 // +optional
1432 optional bool readOnly = 3;
1433
1434 // EndpointsNamespace is the namespace that contains Glusterfs endpoint.
1435 // If this field is empty, the EndpointNamespace defaults to the same namespace as the bound PVC.
1436 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1437 // +optional
1438 optional string endpointsNamespace = 4;
1439}
1440
1441// Represents a Glusterfs mount that lasts the lifetime of a pod.
1442// Glusterfs volumes do not support ownership management or SELinux relabeling.
1443message GlusterfsVolumeSource {
1444 // EndpointsName is the endpoint name that details Glusterfs topology.
1445 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1446 optional string endpoints = 1;
1447
1448 // Path is the Glusterfs volume path.
1449 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1450 optional string path = 2;
1451
1452 // ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.
1453 // Defaults to false.
1454 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md#create-a-pod
1455 // +optional
1456 optional bool readOnly = 3;
1457}
1458
1459// HTTPGetAction describes an action based on HTTP Get requests.
1460message HTTPGetAction {
1461 // Path to access on the HTTP server.
1462 // +optional
1463 optional string path = 1;
1464
1465 // Name or number of the port to access on the container.
1466 // Number must be in the range 1 to 65535.
1467 // Name must be an IANA_SVC_NAME.
1468 optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 2;
1469
1470 // Host name to connect to, defaults to the pod IP. You probably want to set
1471 // "Host" in httpHeaders instead.
1472 // +optional
1473 optional string host = 3;
1474
1475 // Scheme to use for connecting to the host.
1476 // Defaults to HTTP.
1477 // +optional
1478 optional string scheme = 4;
1479
1480 // Custom headers to set in the request. HTTP allows repeated headers.
1481 // +optional
1482 repeated HTTPHeader httpHeaders = 5;
1483}
1484
1485// HTTPHeader describes a custom header to be used in HTTP probes
1486message HTTPHeader {
1487 // The header field name
1488 optional string name = 1;
1489
1490 // The header field value
1491 optional string value = 2;
1492}
1493
1494// Handler defines a specific action that should be taken
1495// TODO: pass structured data to these actions, and document that data here.
1496message Handler {
1497 // One and only one of the following should be specified.
1498 // Exec specifies the action to take.
1499 // +optional
1500 optional ExecAction exec = 1;
1501
1502 // HTTPGet specifies the http request to perform.
1503 // +optional
1504 optional HTTPGetAction httpGet = 2;
1505
1506 // TCPSocket specifies an action involving a TCP port.
1507 // TCP hooks not yet supported
1508 // TODO: implement a realistic TCP lifecycle hook
1509 // +optional
1510 optional TCPSocketAction tcpSocket = 3;
1511}
1512
1513// HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
1514// pod's hosts file.
1515message HostAlias {
1516 // IP address of the host file entry.
1517 optional string ip = 1;
1518
1519 // Hostnames for the above IP address.
1520 repeated string hostnames = 2;
1521}
1522
1523// Represents a host path mapped into a pod.
1524// Host path volumes do not support ownership management or SELinux relabeling.
1525message HostPathVolumeSource {
1526 // Path of the directory on the host.
1527 // If the path is a symlink, it will follow the link to the real path.
1528 // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
1529 optional string path = 1;
1530
1531 // Type for HostPath Volume
1532 // Defaults to ""
1533 // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
1534 // +optional
1535 optional string type = 2;
1536}
1537
1538// ISCSIPersistentVolumeSource represents an ISCSI disk.
1539// ISCSI volumes can only be mounted as read/write once.
1540// ISCSI volumes support ownership management and SELinux relabeling.
1541message ISCSIPersistentVolumeSource {
1542 // iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
1543 // is other than default (typically TCP ports 860 and 3260).
1544 optional string targetPortal = 1;
1545
1546 // Target iSCSI Qualified Name.
1547 optional string iqn = 2;
1548
1549 // iSCSI Target Lun number.
1550 optional int32 lun = 3;
1551
1552 // iSCSI Interface Name that uses an iSCSI transport.
1553 // Defaults to 'default' (tcp).
1554 // +optional
1555 optional string iscsiInterface = 4;
1556
1557 // Filesystem type of the volume that you want to mount.
1558 // Tip: Ensure that the filesystem type is supported by the host operating system.
1559 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
1560 // More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
1561 // TODO: how do we prevent errors in the filesystem from compromising the machine
1562 // +optional
1563 optional string fsType = 5;
1564
1565 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
1566 // Defaults to false.
1567 // +optional
1568 optional bool readOnly = 6;
1569
1570 // iSCSI Target Portal List. The Portal is either an IP or ip_addr:port if the port
1571 // is other than default (typically TCP ports 860 and 3260).
1572 // +optional
1573 repeated string portals = 7;
1574
1575 // whether support iSCSI Discovery CHAP authentication
1576 // +optional
1577 optional bool chapAuthDiscovery = 8;
1578
1579 // whether support iSCSI Session CHAP authentication
1580 // +optional
1581 optional bool chapAuthSession = 11;
1582
1583 // CHAP Secret for iSCSI target and initiator authentication
1584 // +optional
1585 optional SecretReference secretRef = 10;
1586
1587 // Custom iSCSI Initiator Name.
1588 // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
1589 // <target portal>:<volume name> will be created for the connection.
1590 // +optional
1591 optional string initiatorName = 12;
1592}
1593
1594// Represents an ISCSI disk.
1595// ISCSI volumes can only be mounted as read/write once.
1596// ISCSI volumes support ownership management and SELinux relabeling.
1597message ISCSIVolumeSource {
1598 // iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
1599 // is other than default (typically TCP ports 860 and 3260).
1600 optional string targetPortal = 1;
1601
1602 // Target iSCSI Qualified Name.
1603 optional string iqn = 2;
1604
1605 // iSCSI Target Lun number.
1606 optional int32 lun = 3;
1607
1608 // iSCSI Interface Name that uses an iSCSI transport.
1609 // Defaults to 'default' (tcp).
1610 // +optional
1611 optional string iscsiInterface = 4;
1612
1613 // Filesystem type of the volume that you want to mount.
1614 // Tip: Ensure that the filesystem type is supported by the host operating system.
1615 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
1616 // More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
1617 // TODO: how do we prevent errors in the filesystem from compromising the machine
1618 // +optional
1619 optional string fsType = 5;
1620
1621 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
1622 // Defaults to false.
1623 // +optional
1624 optional bool readOnly = 6;
1625
1626 // iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
1627 // is other than default (typically TCP ports 860 and 3260).
1628 // +optional
1629 repeated string portals = 7;
1630
1631 // whether support iSCSI Discovery CHAP authentication
1632 // +optional
1633 optional bool chapAuthDiscovery = 8;
1634
1635 // whether support iSCSI Session CHAP authentication
1636 // +optional
1637 optional bool chapAuthSession = 11;
1638
1639 // CHAP Secret for iSCSI target and initiator authentication
1640 // +optional
1641 optional LocalObjectReference secretRef = 10;
1642
1643 // Custom iSCSI Initiator Name.
1644 // If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
1645 // <target portal>:<volume name> will be created for the connection.
1646 // +optional
1647 optional string initiatorName = 12;
1648}
1649
1650// Maps a string key to a path within a volume.
1651message KeyToPath {
1652 // The key to project.
1653 optional string key = 1;
1654
1655 // The relative path of the file to map the key to.
1656 // May not be an absolute path.
1657 // May not contain the path element '..'.
1658 // May not start with the string '..'.
1659 optional string path = 2;
1660
1661 // Optional: mode bits to use on this file, must be a value between 0
1662 // and 0777. If not specified, the volume defaultMode will be used.
1663 // This might be in conflict with other options that affect the file
1664 // mode, like fsGroup, and the result can be other mode bits set.
1665 // +optional
1666 optional int32 mode = 3;
1667}
1668
1669// Lifecycle describes actions that the management system should take in response to container lifecycle
1670// events. For the PostStart and PreStop lifecycle handlers, management of the container blocks
1671// until the action is complete, unless the container process fails, in which case the handler is aborted.
1672message Lifecycle {
1673 // PostStart is called immediately after a container is created. If the handler fails,
1674 // the container is terminated and restarted according to its restart policy.
1675 // Other management of the container blocks until the hook completes.
1676 // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
1677 // +optional
1678 optional Handler postStart = 1;
1679
1680 // PreStop is called immediately before a container is terminated due to an
1681 // API request or management event such as liveness probe failure,
1682 // preemption, resource contention, etc. The handler is not called if the
1683 // container crashes or exits. The reason for termination is passed to the
1684 // handler. The Pod's termination grace period countdown begins before the
1685 // PreStop hooked is executed. Regardless of the outcome of the handler, the
1686 // container will eventually terminate within the Pod's termination grace
1687 // period. Other management of the container blocks until the hook completes
1688 // or until the termination grace period is reached.
1689 // More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
1690 // +optional
1691 optional Handler preStop = 2;
1692}
1693
1694// LimitRange sets resource usage limits for each kind of resource in a Namespace.
1695message LimitRange {
1696 // Standard object's metadata.
1697 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
1698 // +optional
1699 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
1700
1701 // Spec defines the limits enforced.
1702 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
1703 // +optional
1704 optional LimitRangeSpec spec = 2;
1705}
1706
1707// LimitRangeItem defines a min/max usage limit for any resource that matches on kind.
1708message LimitRangeItem {
1709 // Type of resource that this limit applies to.
1710 // +optional
1711 optional string type = 1;
1712
1713 // Max usage constraints on this kind by resource name.
1714 // +optional
1715 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> max = 2;
1716
1717 // Min usage constraints on this kind by resource name.
1718 // +optional
1719 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> min = 3;
1720
1721 // Default resource requirement limit value by resource name if resource limit is omitted.
1722 // +optional
1723 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> default = 4;
1724
1725 // DefaultRequest is the default resource requirement request value by resource name if resource request is omitted.
1726 // +optional
1727 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> defaultRequest = 5;
1728
1729 // MaxLimitRequestRatio if specified, the named resource must have a request and limit that are both non-zero where limit divided by request is less than or equal to the enumerated value; this represents the max burst for the named resource.
1730 // +optional
1731 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> maxLimitRequestRatio = 6;
1732}
1733
1734// LimitRangeList is a list of LimitRange items.
1735message LimitRangeList {
1736 // Standard list metadata.
1737 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
1738 // +optional
1739 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1740
1741 // Items is a list of LimitRange objects.
1742 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
1743 repeated LimitRange items = 2;
1744}
1745
1746// LimitRangeSpec defines a min/max usage limit for resources that match on kind.
1747message LimitRangeSpec {
1748 // Limits is the list of LimitRangeItem objects that are enforced.
1749 repeated LimitRangeItem limits = 1;
1750}
1751
1752// List holds a list of objects, which may not be known by the server.
1753message List {
1754 // Standard list metadata.
1755 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
1756 // +optional
1757 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1758
1759 // List of objects
1760 repeated k8s.io.apimachinery.pkg.runtime.RawExtension items = 2;
1761}
1762
1763// LoadBalancerIngress represents the status of a load-balancer ingress point:
1764// traffic intended for the service should be sent to an ingress point.
1765message LoadBalancerIngress {
1766 // IP is set for load-balancer ingress points that are IP based
1767 // (typically GCE or OpenStack load-balancers)
1768 // +optional
1769 optional string ip = 1;
1770
1771 // Hostname is set for load-balancer ingress points that are DNS based
1772 // (typically AWS load-balancers)
1773 // +optional
1774 optional string hostname = 2;
1775}
1776
1777// LoadBalancerStatus represents the status of a load-balancer.
1778message LoadBalancerStatus {
1779 // Ingress is a list containing ingress points for the load-balancer.
1780 // Traffic intended for the service should be sent to these ingress points.
1781 // +optional
1782 repeated LoadBalancerIngress ingress = 1;
1783}
1784
1785// LocalObjectReference contains enough information to let you locate the
1786// referenced object inside the same namespace.
1787message LocalObjectReference {
1788 // Name of the referent.
1789 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
1790 // TODO: Add other useful fields. apiVersion, kind, uid?
1791 // +optional
1792 optional string name = 1;
1793}
1794
1795// Local represents directly-attached storage with node affinity (Beta feature)
1796message LocalVolumeSource {
1797 // The full path to the volume on the node.
1798 // It can be either a directory or block device (disk, partition, ...).
1799 optional string path = 1;
1800
1801 // Filesystem type to mount.
1802 // It applies only when the Path is a block device.
1803 // Must be a filesystem type supported by the host operating system.
1804 // Ex. "ext4", "xfs", "ntfs". The default value is to auto-select a fileystem if unspecified.
1805 // +optional
1806 optional string fsType = 2;
1807}
1808
1809// Represents an NFS mount that lasts the lifetime of a pod.
1810// NFS volumes do not support ownership management or SELinux relabeling.
1811message NFSVolumeSource {
1812 // Server is the hostname or IP address of the NFS server.
1813 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
1814 optional string server = 1;
1815
1816 // Path that is exported by the NFS server.
1817 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
1818 optional string path = 2;
1819
1820 // ReadOnly here will force
1821 // the NFS export to be mounted with read-only permissions.
1822 // Defaults to false.
1823 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
1824 // +optional
1825 optional bool readOnly = 3;
1826}
1827
1828// Namespace provides a scope for Names.
1829// Use of multiple namespaces is optional.
1830message Namespace {
1831 // Standard object's metadata.
1832 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
1833 // +optional
1834 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
1835
1836 // Spec defines the behavior of the Namespace.
1837 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
1838 // +optional
1839 optional NamespaceSpec spec = 2;
1840
1841 // Status describes the current status of a Namespace.
1842 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
1843 // +optional
1844 optional NamespaceStatus status = 3;
1845}
1846
1847// NamespaceList is a list of Namespaces.
1848message NamespaceList {
1849 // Standard list metadata.
1850 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
1851 // +optional
1852 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
1853
1854 // Items is the list of Namespace objects in the list.
1855 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
1856 repeated Namespace items = 2;
1857}
1858
1859// NamespaceSpec describes the attributes on a Namespace.
1860message NamespaceSpec {
1861 // Finalizers is an opaque list of values that must be empty to permanently remove object from storage.
1862 // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
1863 // +optional
1864 repeated string finalizers = 1;
1865}
1866
1867// NamespaceStatus is information about the current status of a Namespace.
1868message NamespaceStatus {
1869 // Phase is the current lifecycle phase of the namespace.
1870 // More info: https://kubernetes.io/docs/tasks/administer-cluster/namespaces/
1871 // +optional
1872 optional string phase = 1;
1873}
1874
1875// Node is a worker node in Kubernetes.
1876// Each node will have a unique identifier in the cache (i.e. in etcd).
1877message Node {
1878 // Standard object's metadata.
1879 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
1880 // +optional
1881 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
1882
1883 // Spec defines the behavior of a node.
1884 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
1885 // +optional
1886 optional NodeSpec spec = 2;
1887
1888 // Most recently observed status of the node.
1889 // Populated by the system.
1890 // Read-only.
1891 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
1892 // +optional
1893 optional NodeStatus status = 3;
1894}
1895
1896// NodeAddress contains information for the node's address.
1897message NodeAddress {
1898 // Node address type, one of Hostname, ExternalIP or InternalIP.
1899 optional string type = 1;
1900
1901 // The node address.
1902 optional string address = 2;
1903}
1904
1905// Node affinity is a group of node affinity scheduling rules.
1906message NodeAffinity {
1907 // If the affinity requirements specified by this field are not met at
1908 // scheduling time, the pod will not be scheduled onto the node.
1909 // If the affinity requirements specified by this field cease to be met
1910 // at some point during pod execution (e.g. due to an update), the system
1911 // may or may not try to eventually evict the pod from its node.
1912 // +optional
1913 optional NodeSelector requiredDuringSchedulingIgnoredDuringExecution = 1;
1914
1915 // The scheduler will prefer to schedule pods to nodes that satisfy
1916 // the affinity expressions specified by this field, but it may choose
1917 // a node that violates one or more of the expressions. The node that is
1918 // most preferred is the one with the greatest sum of weights, i.e.
1919 // for each node that meets all of the scheduling requirements (resource
1920 // request, requiredDuringScheduling affinity expressions, etc.),
1921 // compute a sum by iterating through the elements of this field and adding
1922 // "weight" to the sum if the node matches the corresponding matchExpressions; the
1923 // node(s) with the highest sum are the most preferred.
1924 // +optional
1925 repeated PreferredSchedulingTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
1926}
1927
1928// NodeCondition contains condition information for a node.
1929message NodeCondition {
1930 // Type of node condition.
1931 optional string type = 1;
1932
1933 // Status of the condition, one of True, False, Unknown.
1934 optional string status = 2;
1935
1936 // Last time we got an update on a given condition.
1937 // +optional
1938 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastHeartbeatTime = 3;
1939
1940 // Last time the condition transit from one status to another.
1941 // +optional
1942 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
1943
1944 // (brief) reason for the condition's last transition.
1945 // +optional
1946 optional string reason = 5;
1947
1948 // Human readable message indicating details about last transition.
1949 // +optional
1950 optional string message = 6;
1951}
1952
1953// NodeConfigSource specifies a source of node configuration. Exactly one subfield (excluding metadata) must be non-nil.
1954message NodeConfigSource {
1955 // ConfigMap is a reference to a Node's ConfigMap
1956 optional ConfigMapNodeConfigSource configMap = 2;
1957}
1958
1959// NodeConfigStatus describes the status of the config assigned by Node.Spec.ConfigSource.
1960message NodeConfigStatus {
1961 // Assigned reports the checkpointed config the node will try to use.
1962 // When Node.Spec.ConfigSource is updated, the node checkpoints the associated
1963 // config payload to local disk, along with a record indicating intended
1964 // config. The node refers to this record to choose its config checkpoint, and
1965 // reports this record in Assigned. Assigned only updates in the status after
1966 // the record has been checkpointed to disk. When the Kubelet is restarted,
1967 // it tries to make the Assigned config the Active config by loading and
1968 // validating the checkpointed payload identified by Assigned.
1969 // +optional
1970 optional NodeConfigSource assigned = 1;
1971
1972 // Active reports the checkpointed config the node is actively using.
1973 // Active will represent either the current version of the Assigned config,
1974 // or the current LastKnownGood config, depending on whether attempting to use the
1975 // Assigned config results in an error.
1976 // +optional
1977 optional NodeConfigSource active = 2;
1978
1979 // LastKnownGood reports the checkpointed config the node will fall back to
1980 // when it encounters an error attempting to use the Assigned config.
1981 // The Assigned config becomes the LastKnownGood config when the node determines
1982 // that the Assigned config is stable and correct.
1983 // This is currently implemented as a 10-minute soak period starting when the local
1984 // record of Assigned config is updated. If the Assigned config is Active at the end
1985 // of this period, it becomes the LastKnownGood. Note that if Spec.ConfigSource is
1986 // reset to nil (use local defaults), the LastKnownGood is also immediately reset to nil,
1987 // because the local default config is always assumed good.
1988 // You should not make assumptions about the node's method of determining config stability
1989 // and correctness, as this may change or become configurable in the future.
1990 // +optional
1991 optional NodeConfigSource lastKnownGood = 3;
1992
1993 // Error describes any problems reconciling the Spec.ConfigSource to the Active config.
1994 // Errors may occur, for example, attempting to checkpoint Spec.ConfigSource to the local Assigned
1995 // record, attempting to checkpoint the payload associated with Spec.ConfigSource, attempting
1996 // to load or validate the Assigned config, etc.
1997 // Errors may occur at different points while syncing config. Earlier errors (e.g. download or
1998 // checkpointing errors) will not result in a rollback to LastKnownGood, and may resolve across
1999 // Kubelet retries. Later errors (e.g. loading or validating a checkpointed config) will result in
2000 // a rollback to LastKnownGood. In the latter case, it is usually possible to resolve the error
2001 // by fixing the config assigned in Spec.ConfigSource.
2002 // You can find additional information for debugging by searching the error message in the Kubelet log.
2003 // Error is a human-readable description of the error state; machines can check whether or not Error
2004 // is empty, but should not rely on the stability of the Error text across Kubelet versions.
2005 // +optional
2006 optional string error = 4;
2007}
2008
2009// NodeDaemonEndpoints lists ports opened by daemons running on the Node.
2010message NodeDaemonEndpoints {
2011 // Endpoint on which Kubelet is listening.
2012 // +optional
2013 optional DaemonEndpoint kubeletEndpoint = 1;
2014}
2015
2016// NodeList is the whole list of all Nodes which have been registered with master.
2017message NodeList {
2018 // Standard list metadata.
2019 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
2020 // +optional
2021 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
2022
2023 // List of nodes
2024 repeated Node items = 2;
2025}
2026
2027// NodeProxyOptions is the query options to a Node's proxy call.
2028message NodeProxyOptions {
2029 // Path is the URL path to use for the current proxy request to node.
2030 // +optional
2031 optional string path = 1;
2032}
2033
2034// NodeResources is an object for conveying resource information about a node.
2035// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details.
2036message NodeResources {
2037 // Capacity represents the available resources of a node
2038 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
2039}
2040
2041// A node selector represents the union of the results of one or more label queries
2042// over a set of nodes; that is, it represents the OR of the selectors represented
2043// by the node selector terms.
2044message NodeSelector {
2045 // Required. A list of node selector terms. The terms are ORed.
2046 repeated NodeSelectorTerm nodeSelectorTerms = 1;
2047}
2048
2049// A node selector requirement is a selector that contains values, a key, and an operator
2050// that relates the key and values.
2051message NodeSelectorRequirement {
2052 // The label key that the selector applies to.
2053 optional string key = 1;
2054
2055 // Represents a key's relationship to a set of values.
2056 // Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
2057 optional string operator = 2;
2058
2059 // An array of string values. If the operator is In or NotIn,
2060 // the values array must be non-empty. If the operator is Exists or DoesNotExist,
2061 // the values array must be empty. If the operator is Gt or Lt, the values
2062 // array must have a single element, which will be interpreted as an integer.
2063 // This array is replaced during a strategic merge patch.
2064 // +optional
2065 repeated string values = 3;
2066}
2067
2068// A null or empty node selector term matches no objects. The requirements of
2069// them are ANDed.
2070// The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
2071message NodeSelectorTerm {
2072 // A list of node selector requirements by node's labels.
2073 // +optional
2074 repeated NodeSelectorRequirement matchExpressions = 1;
2075
2076 // A list of node selector requirements by node's fields.
2077 // +optional
2078 repeated NodeSelectorRequirement matchFields = 2;
2079}
2080
2081// NodeSpec describes the attributes that a node is created with.
2082message NodeSpec {
2083 // PodCIDR represents the pod IP range assigned to the node.
2084 // +optional
2085 optional string podCIDR = 1;
2086
2087 // ID of the node assigned by the cloud provider in the format: <ProviderName>://<ProviderSpecificNodeID>
2088 // +optional
2089 optional string providerID = 3;
2090
2091 // Unschedulable controls node schedulability of new pods. By default, node is schedulable.
2092 // More info: https://kubernetes.io/docs/concepts/nodes/node/#manual-node-administration
2093 // +optional
2094 optional bool unschedulable = 4;
2095
2096 // If specified, the node's taints.
2097 // +optional
2098 repeated Taint taints = 5;
2099
2100 // If specified, the source to get node configuration from
2101 // The DynamicKubeletConfig feature gate must be enabled for the Kubelet to use this field
2102 // +optional
2103 optional NodeConfigSource configSource = 6;
2104
2105 // Deprecated. Not all kubelets will set this field. Remove field after 1.13.
2106 // see: https://issues.k8s.io/61966
2107 // +optional
2108 optional string externalID = 2;
2109}
2110
2111// NodeStatus is information about the current status of a node.
2112message NodeStatus {
2113 // Capacity represents the total resources of a node.
2114 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
2115 // +optional
2116 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
2117
2118 // Allocatable represents the resources of a node that are available for scheduling.
2119 // Defaults to Capacity.
2120 // +optional
2121 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> allocatable = 2;
2122
2123 // NodePhase is the recently observed lifecycle phase of the node.
2124 // More info: https://kubernetes.io/docs/concepts/nodes/node/#phase
2125 // The field is never populated, and now is deprecated.
2126 // +optional
2127 optional string phase = 3;
2128
2129 // Conditions is an array of current observed node conditions.
2130 // More info: https://kubernetes.io/docs/concepts/nodes/node/#condition
2131 // +optional
2132 // +patchMergeKey=type
2133 // +patchStrategy=merge
2134 repeated NodeCondition conditions = 4;
2135
2136 // List of addresses reachable to the node.
2137 // Queried from cloud provider, if available.
2138 // More info: https://kubernetes.io/docs/concepts/nodes/node/#addresses
2139 // +optional
2140 // +patchMergeKey=type
2141 // +patchStrategy=merge
2142 repeated NodeAddress addresses = 5;
2143
2144 // Endpoints of daemons running on the Node.
2145 // +optional
2146 optional NodeDaemonEndpoints daemonEndpoints = 6;
2147
2148 // Set of ids/uuids to uniquely identify the node.
2149 // More info: https://kubernetes.io/docs/concepts/nodes/node/#info
2150 // +optional
2151 optional NodeSystemInfo nodeInfo = 7;
2152
2153 // List of container images on this node
2154 // +optional
2155 repeated ContainerImage images = 8;
2156
2157 // List of attachable volumes in use (mounted) by the node.
2158 // +optional
2159 repeated string volumesInUse = 9;
2160
2161 // List of volumes that are attached to the node.
2162 // +optional
2163 repeated AttachedVolume volumesAttached = 10;
2164
2165 // Status of the config assigned to the node via the dynamic Kubelet config feature.
2166 // +optional
2167 optional NodeConfigStatus config = 11;
2168}
2169
2170// NodeSystemInfo is a set of ids/uuids to uniquely identify the node.
2171message NodeSystemInfo {
2172 // MachineID reported by the node. For unique machine identification
2173 // in the cluster this field is preferred. Learn more from man(5)
2174 // machine-id: http://man7.org/linux/man-pages/man5/machine-id.5.html
2175 optional string machineID = 1;
2176
2177 // SystemUUID reported by the node. For unique machine identification
2178 // MachineID is preferred. This field is specific to Red Hat hosts
2179 // https://access.redhat.com/documentation/en-US/Red_Hat_Subscription_Management/1/html/RHSM/getting-system-uuid.html
2180 optional string systemUUID = 2;
2181
2182 // Boot ID reported by the node.
2183 optional string bootID = 3;
2184
2185 // Kernel Version reported by the node from 'uname -r' (e.g. 3.16.0-0.bpo.4-amd64).
2186 optional string kernelVersion = 4;
2187
2188 // OS Image reported by the node from /etc/os-release (e.g. Debian GNU/Linux 7 (wheezy)).
2189 optional string osImage = 5;
2190
2191 // ContainerRuntime Version reported by the node through runtime remote API (e.g. docker://1.5.0).
2192 optional string containerRuntimeVersion = 6;
2193
2194 // Kubelet Version reported by the node.
2195 optional string kubeletVersion = 7;
2196
2197 // KubeProxy Version reported by the node.
2198 optional string kubeProxyVersion = 8;
2199
2200 // The Operating System reported by the node
2201 optional string operatingSystem = 9;
2202
2203 // The Architecture reported by the node
2204 optional string architecture = 10;
2205}
2206
2207// ObjectFieldSelector selects an APIVersioned field of an object.
2208message ObjectFieldSelector {
2209 // Version of the schema the FieldPath is written in terms of, defaults to "v1".
2210 // +optional
2211 optional string apiVersion = 1;
2212
2213 // Path of the field to select in the specified API version.
2214 optional string fieldPath = 2;
2215}
2216
2217// ObjectReference contains enough information to let you inspect or modify the referred object.
2218// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
2219message ObjectReference {
2220 // Kind of the referent.
2221 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
2222 // +optional
2223 optional string kind = 1;
2224
2225 // Namespace of the referent.
2226 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
2227 // +optional
2228 optional string namespace = 2;
2229
2230 // Name of the referent.
2231 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
2232 // +optional
2233 optional string name = 3;
2234
2235 // UID of the referent.
2236 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
2237 // +optional
2238 optional string uid = 4;
2239
2240 // API version of the referent.
2241 // +optional
2242 optional string apiVersion = 5;
2243
2244 // Specific resourceVersion to which this reference is made, if any.
2245 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency
2246 // +optional
2247 optional string resourceVersion = 6;
2248
2249 // If referring to a piece of an object instead of an entire object, this string
2250 // should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
2251 // For example, if the object reference is to a container within a pod, this would take on a value like:
2252 // "spec.containers{name}" (where "name" refers to the name of the container that triggered
2253 // the event) or if no container name is specified "spec.containers[2]" (container with
2254 // index 2 in this pod). This syntax is chosen only to have some well-defined way of
2255 // referencing a part of an object.
2256 // TODO: this design is not final and this field is subject to change in the future.
2257 // +optional
2258 optional string fieldPath = 7;
2259}
2260
2261// PersistentVolume (PV) is a storage resource provisioned by an administrator.
2262// It is analogous to a node.
2263// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
2264message PersistentVolume {
2265 // Standard object's metadata.
2266 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2267 // +optional
2268 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
2269
2270 // Spec defines a specification of a persistent volume owned by the cluster.
2271 // Provisioned by an administrator.
2272 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
2273 // +optional
2274 optional PersistentVolumeSpec spec = 2;
2275
2276 // Status represents the current information/status for the persistent volume.
2277 // Populated by the system.
2278 // Read-only.
2279 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistent-volumes
2280 // +optional
2281 optional PersistentVolumeStatus status = 3;
2282}
2283
2284// PersistentVolumeClaim is a user's request for and claim to a persistent volume
2285message PersistentVolumeClaim {
2286 // Standard object's metadata.
2287 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2288 // +optional
2289 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
2290
2291 // Spec defines the desired characteristics of a volume requested by a pod author.
2292 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
2293 // +optional
2294 optional PersistentVolumeClaimSpec spec = 2;
2295
2296 // Status represents the current information/status of a persistent volume claim.
2297 // Read-only.
2298 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
2299 // +optional
2300 optional PersistentVolumeClaimStatus status = 3;
2301}
2302
2303// PersistentVolumeClaimCondition contails details about state of pvc
2304message PersistentVolumeClaimCondition {
2305 optional string type = 1;
2306
2307 optional string status = 2;
2308
2309 // Last time we probed the condition.
2310 // +optional
2311 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
2312
2313 // Last time the condition transitioned from one status to another.
2314 // +optional
2315 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
2316
2317 // Unique, this should be a short, machine understandable string that gives the reason
2318 // for condition's last transition. If it reports "ResizeStarted" that means the underlying
2319 // persistent volume is being resized.
2320 // +optional
2321 optional string reason = 5;
2322
2323 // Human-readable message indicating details about last transition.
2324 // +optional
2325 optional string message = 6;
2326}
2327
2328// PersistentVolumeClaimList is a list of PersistentVolumeClaim items.
2329message PersistentVolumeClaimList {
2330 // Standard list metadata.
2331 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
2332 // +optional
2333 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
2334
2335 // A list of persistent volume claims.
2336 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
2337 repeated PersistentVolumeClaim items = 2;
2338}
2339
2340// PersistentVolumeClaimSpec describes the common attributes of storage devices
2341// and allows a Source for provider-specific attributes
2342message PersistentVolumeClaimSpec {
2343 // AccessModes contains the desired access modes the volume should have.
2344 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
2345 // +optional
2346 repeated string accessModes = 1;
2347
2348 // A label query over volumes to consider for binding.
2349 // +optional
2350 optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
2351
2352 // Resources represents the minimum resources the volume should have.
2353 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
2354 // +optional
2355 optional ResourceRequirements resources = 2;
2356
2357 // VolumeName is the binding reference to the PersistentVolume backing this claim.
2358 // +optional
2359 optional string volumeName = 3;
2360
2361 // Name of the StorageClass required by the claim.
2362 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
2363 // +optional
2364 optional string storageClassName = 5;
2365
2366 // volumeMode defines what type of volume is required by the claim.
2367 // Value of Filesystem is implied when not included in claim spec.
2368 // This is a beta feature.
2369 // +optional
2370 optional string volumeMode = 6;
2371
2372 // This field requires the VolumeSnapshotDataSource alpha feature gate to be
2373 // enabled and currently VolumeSnapshot is the only supported data source.
2374 // If the provisioner can support VolumeSnapshot data source, it will create
2375 // a new volume and data will be restored to the volume at the same time.
2376 // If the provisioner does not support VolumeSnapshot data source, volume will
2377 // not be created and the failure will be reported as an event.
2378 // In the future, we plan to support more data source types and the behavior
2379 // of the provisioner may change.
2380 // +optional
2381 optional TypedLocalObjectReference dataSource = 7;
2382}
2383
2384// PersistentVolumeClaimStatus is the current status of a persistent volume claim.
2385message PersistentVolumeClaimStatus {
2386 // Phase represents the current phase of PersistentVolumeClaim.
2387 // +optional
2388 optional string phase = 1;
2389
2390 // AccessModes contains the actual access modes the volume backing the PVC has.
2391 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
2392 // +optional
2393 repeated string accessModes = 2;
2394
2395 // Represents the actual resources of the underlying volume.
2396 // +optional
2397 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 3;
2398
2399 // Current Condition of persistent volume claim. If underlying persistent volume is being
2400 // resized then the Condition will be set to 'ResizeStarted'.
2401 // +optional
2402 // +patchMergeKey=type
2403 // +patchStrategy=merge
2404 repeated PersistentVolumeClaimCondition conditions = 4;
2405}
2406
2407// PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.
2408// This volume finds the bound PV and mounts that volume for the pod. A
2409// PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another
2410// type of volume that is owned by someone else (the system).
2411message PersistentVolumeClaimVolumeSource {
2412 // ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
2413 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
2414 optional string claimName = 1;
2415
2416 // Will force the ReadOnly setting in VolumeMounts.
2417 // Default false.
2418 // +optional
2419 optional bool readOnly = 2;
2420}
2421
2422// PersistentVolumeList is a list of PersistentVolume items.
2423message PersistentVolumeList {
2424 // Standard list metadata.
2425 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
2426 // +optional
2427 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
2428
2429 // List of persistent volumes.
2430 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes
2431 repeated PersistentVolume items = 2;
2432}
2433
2434// PersistentVolumeSource is similar to VolumeSource but meant for the
2435// administrator who creates PVs. Exactly one of its members must be set.
2436message PersistentVolumeSource {
2437 // GCEPersistentDisk represents a GCE Disk resource that is attached to a
2438 // kubelet's host machine and then exposed to the pod. Provisioned by an admin.
2439 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
2440 // +optional
2441 optional GCEPersistentDiskVolumeSource gcePersistentDisk = 1;
2442
2443 // AWSElasticBlockStore represents an AWS Disk resource that is attached to a
2444 // kubelet's host machine and then exposed to the pod.
2445 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
2446 // +optional
2447 optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 2;
2448
2449 // HostPath represents a directory on the host.
2450 // Provisioned by a developer or tester.
2451 // This is useful for single-node development and testing only!
2452 // On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster.
2453 // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
2454 // +optional
2455 optional HostPathVolumeSource hostPath = 3;
2456
2457 // Glusterfs represents a Glusterfs volume that is attached to a host and
2458 // exposed to the pod. Provisioned by an admin.
2459 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
2460 // +optional
2461 optional GlusterfsPersistentVolumeSource glusterfs = 4;
2462
2463 // NFS represents an NFS mount on the host. Provisioned by an admin.
2464 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
2465 // +optional
2466 optional NFSVolumeSource nfs = 5;
2467
2468 // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
2469 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
2470 // +optional
2471 optional RBDPersistentVolumeSource rbd = 6;
2472
2473 // ISCSI represents an ISCSI Disk resource that is attached to a
2474 // kubelet's host machine and then exposed to the pod. Provisioned by an admin.
2475 // +optional
2476 optional ISCSIPersistentVolumeSource iscsi = 7;
2477
2478 // Cinder represents a cinder volume attached and mounted on kubelets host machine
2479 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
2480 // +optional
2481 optional CinderPersistentVolumeSource cinder = 8;
2482
2483 // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
2484 // +optional
2485 optional CephFSPersistentVolumeSource cephfs = 9;
2486
2487 // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
2488 // +optional
2489 optional FCVolumeSource fc = 10;
2490
2491 // Flocker represents a Flocker volume attached to a kubelet's host machine and exposed to the pod for its usage. This depends on the Flocker control service being running
2492 // +optional
2493 optional FlockerVolumeSource flocker = 11;
2494
2495 // FlexVolume represents a generic volume resource that is
2496 // provisioned/attached using an exec based plugin.
2497 // +optional
2498 optional FlexPersistentVolumeSource flexVolume = 12;
2499
2500 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
2501 // +optional
2502 optional AzureFilePersistentVolumeSource azureFile = 13;
2503
2504 // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
2505 // +optional
2506 optional VsphereVirtualDiskVolumeSource vsphereVolume = 14;
2507
2508 // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
2509 // +optional
2510 optional QuobyteVolumeSource quobyte = 15;
2511
2512 // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
2513 // +optional
2514 optional AzureDiskVolumeSource azureDisk = 16;
2515
2516 // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
2517 optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 17;
2518
2519 // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
2520 // +optional
2521 optional PortworxVolumeSource portworxVolume = 18;
2522
2523 // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
2524 // +optional
2525 optional ScaleIOPersistentVolumeSource scaleIO = 19;
2526
2527 // Local represents directly-attached storage with node affinity
2528 // +optional
2529 optional LocalVolumeSource local = 20;
2530
2531 // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod
2532 // More info: https://releases.k8s.io/HEAD/examples/volumes/storageos/README.md
2533 // +optional
2534 optional StorageOSPersistentVolumeSource storageos = 21;
2535
2536 // CSI represents storage that is handled by an external CSI driver (Beta feature).
2537 // +optional
2538 optional CSIPersistentVolumeSource csi = 22;
2539}
2540
2541// PersistentVolumeSpec is the specification of a persistent volume.
2542message PersistentVolumeSpec {
2543 // A description of the persistent volume's resources and capacity.
2544 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity
2545 // +optional
2546 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> capacity = 1;
2547
2548 // The actual volume backing the persistent volume.
2549 optional PersistentVolumeSource persistentVolumeSource = 2;
2550
2551 // AccessModes contains all ways the volume can be mounted.
2552 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes
2553 // +optional
2554 repeated string accessModes = 3;
2555
2556 // ClaimRef is part of a bi-directional binding between PersistentVolume and PersistentVolumeClaim.
2557 // Expected to be non-nil when bound.
2558 // claim.VolumeName is the authoritative bind between PV and PVC.
2559 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
2560 // +optional
2561 optional ObjectReference claimRef = 4;
2562
2563 // What happens to a persistent volume when released from its claim.
2564 // Valid options are Retain (default for manually created PersistentVolumes), Delete (default
2565 // for dynamically provisioned PersistentVolumes), and Recycle (deprecated).
2566 // Recycle must be supported by the volume plugin underlying this PersistentVolume.
2567 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
2568 // +optional
2569 optional string persistentVolumeReclaimPolicy = 5;
2570
2571 // Name of StorageClass to which this persistent volume belongs. Empty value
2572 // means that this volume does not belong to any StorageClass.
2573 // +optional
2574 optional string storageClassName = 6;
2575
2576 // A list of mount options, e.g. ["ro", "soft"]. Not validated - mount will
2577 // simply fail if one is invalid.
2578 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options
2579 // +optional
2580 repeated string mountOptions = 7;
2581
2582 // volumeMode defines if a volume is intended to be used with a formatted filesystem
2583 // or to remain in raw block state. Value of Filesystem is implied when not included in spec.
2584 // This is a beta feature.
2585 // +optional
2586 optional string volumeMode = 8;
2587
2588 // NodeAffinity defines constraints that limit what nodes this volume can be accessed from.
2589 // This field influences the scheduling of pods that use this volume.
2590 // +optional
2591 optional VolumeNodeAffinity nodeAffinity = 9;
2592}
2593
2594// PersistentVolumeStatus is the current status of a persistent volume.
2595message PersistentVolumeStatus {
2596 // Phase indicates if a volume is available, bound to a claim, or released by a claim.
2597 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase
2598 // +optional
2599 optional string phase = 1;
2600
2601 // A human-readable message indicating details about why the volume is in this state.
2602 // +optional
2603 optional string message = 2;
2604
2605 // Reason is a brief CamelCase string that describes any failure and is meant
2606 // for machine parsing and tidy display in the CLI.
2607 // +optional
2608 optional string reason = 3;
2609}
2610
2611// Represents a Photon Controller persistent disk resource.
2612message PhotonPersistentDiskVolumeSource {
2613 // ID that identifies Photon Controller persistent disk
2614 optional string pdID = 1;
2615
2616 // Filesystem type to mount.
2617 // Must be a filesystem type supported by the host operating system.
2618 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
2619 optional string fsType = 2;
2620}
2621
2622// Pod is a collection of containers that can run on a host. This resource is created
2623// by clients and scheduled onto hosts.
2624message Pod {
2625 // Standard object's metadata.
2626 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
2627 // +optional
2628 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
2629
2630 // Specification of the desired behavior of the pod.
2631 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
2632 // +optional
2633 optional PodSpec spec = 2;
2634
2635 // Most recently observed status of the pod.
2636 // This data may not be up to date.
2637 // Populated by the system.
2638 // Read-only.
2639 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
2640 // +optional
2641 optional PodStatus status = 3;
2642}
2643
2644// Pod affinity is a group of inter pod affinity scheduling rules.
2645message PodAffinity {
2646 // If the affinity requirements specified by this field are not met at
2647 // scheduling time, the pod will not be scheduled onto the node.
2648 // If the affinity requirements specified by this field cease to be met
2649 // at some point during pod execution (e.g. due to a pod label update), the
2650 // system may or may not try to eventually evict the pod from its node.
2651 // When there are multiple elements, the lists of nodes corresponding to each
2652 // podAffinityTerm are intersected, i.e. all terms must be satisfied.
2653 // +optional
2654 repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
2655
2656 // The scheduler will prefer to schedule pods to nodes that satisfy
2657 // the affinity expressions specified by this field, but it may choose
2658 // a node that violates one or more of the expressions. The node that is
2659 // most preferred is the one with the greatest sum of weights, i.e.
2660 // for each node that meets all of the scheduling requirements (resource
2661 // request, requiredDuringScheduling affinity expressions, etc.),
2662 // compute a sum by iterating through the elements of this field and adding
2663 // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
2664 // node(s) with the highest sum are the most preferred.
2665 // +optional
2666 repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
2667}
2668
2669// Defines a set of pods (namely those matching the labelSelector
2670// relative to the given namespace(s)) that this pod should be
2671// co-located (affinity) or not co-located (anti-affinity) with,
2672// where co-located is defined as running on a node whose value of
2673// the label with key <topologyKey> matches that of any node on which
2674// a pod of the set of pods is running
2675message PodAffinityTerm {
2676 // A label query over a set of resources, in this case pods.
2677 // +optional
2678 optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector labelSelector = 1;
2679
2680 // namespaces specifies which namespaces the labelSelector applies to (matches against);
2681 // null or empty list means "this pod's namespace"
2682 // +optional
2683 repeated string namespaces = 2;
2684
2685 // This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
2686 // the labelSelector in the specified namespaces, where co-located is defined as running on a node
2687 // whose value of the label with key topologyKey matches that of any node on which any of the
2688 // selected pods is running.
2689 // Empty topologyKey is not allowed.
2690 optional string topologyKey = 3;
2691}
2692
2693// Pod anti affinity is a group of inter pod anti affinity scheduling rules.
2694message PodAntiAffinity {
2695 // If the anti-affinity requirements specified by this field are not met at
2696 // scheduling time, the pod will not be scheduled onto the node.
2697 // If the anti-affinity requirements specified by this field cease to be met
2698 // at some point during pod execution (e.g. due to a pod label update), the
2699 // system may or may not try to eventually evict the pod from its node.
2700 // When there are multiple elements, the lists of nodes corresponding to each
2701 // podAffinityTerm are intersected, i.e. all terms must be satisfied.
2702 // +optional
2703 repeated PodAffinityTerm requiredDuringSchedulingIgnoredDuringExecution = 1;
2704
2705 // The scheduler will prefer to schedule pods to nodes that satisfy
2706 // the anti-affinity expressions specified by this field, but it may choose
2707 // a node that violates one or more of the expressions. The node that is
2708 // most preferred is the one with the greatest sum of weights, i.e.
2709 // for each node that meets all of the scheduling requirements (resource
2710 // request, requiredDuringScheduling anti-affinity expressions, etc.),
2711 // compute a sum by iterating through the elements of this field and adding
2712 // "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
2713 // node(s) with the highest sum are the most preferred.
2714 // +optional
2715 repeated WeightedPodAffinityTerm preferredDuringSchedulingIgnoredDuringExecution = 2;
2716}
2717
2718// PodAttachOptions is the query options to a Pod's remote attach call.
2719// ---
2720// TODO: merge w/ PodExecOptions below for stdin, stdout, etc
2721// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
2722message PodAttachOptions {
2723 // Stdin if true, redirects the standard input stream of the pod for this call.
2724 // Defaults to false.
2725 // +optional
2726 optional bool stdin = 1;
2727
2728 // Stdout if true indicates that stdout is to be redirected for the attach call.
2729 // Defaults to true.
2730 // +optional
2731 optional bool stdout = 2;
2732
2733 // Stderr if true indicates that stderr is to be redirected for the attach call.
2734 // Defaults to true.
2735 // +optional
2736 optional bool stderr = 3;
2737
2738 // TTY if true indicates that a tty will be allocated for the attach call.
2739 // This is passed through the container runtime so the tty
2740 // is allocated on the worker node by the container runtime.
2741 // Defaults to false.
2742 // +optional
2743 optional bool tty = 4;
2744
2745 // The container in which to execute the command.
2746 // Defaults to only container if there is only one container in the pod.
2747 // +optional
2748 optional string container = 5;
2749}
2750
2751// PodCondition contains details for the current condition of this pod.
2752message PodCondition {
2753 // Type is the type of the condition.
2754 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
2755 optional string type = 1;
2756
2757 // Status is the status of the condition.
2758 // Can be True, False, Unknown.
2759 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
2760 optional string status = 2;
2761
2762 // Last time we probed the condition.
2763 // +optional
2764 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastProbeTime = 3;
2765
2766 // Last time the condition transitioned from one status to another.
2767 // +optional
2768 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;
2769
2770 // Unique, one-word, CamelCase reason for the condition's last transition.
2771 // +optional
2772 optional string reason = 5;
2773
2774 // Human-readable message indicating details about last transition.
2775 // +optional
2776 optional string message = 6;
2777}
2778
2779// PodDNSConfig defines the DNS parameters of a pod in addition to
2780// those generated from DNSPolicy.
2781message PodDNSConfig {
2782 // A list of DNS name server IP addresses.
2783 // This will be appended to the base nameservers generated from DNSPolicy.
2784 // Duplicated nameservers will be removed.
2785 // +optional
2786 repeated string nameservers = 1;
2787
2788 // A list of DNS search domains for host-name lookup.
2789 // This will be appended to the base search paths generated from DNSPolicy.
2790 // Duplicated search paths will be removed.
2791 // +optional
2792 repeated string searches = 2;
2793
2794 // A list of DNS resolver options.
2795 // This will be merged with the base options generated from DNSPolicy.
2796 // Duplicated entries will be removed. Resolution options given in Options
2797 // will override those that appear in the base DNSPolicy.
2798 // +optional
2799 repeated PodDNSConfigOption options = 3;
2800}
2801
2802// PodDNSConfigOption defines DNS resolver options of a pod.
2803message PodDNSConfigOption {
2804 // Required.
2805 optional string name = 1;
2806
2807 // +optional
2808 optional string value = 2;
2809}
2810
2811// PodExecOptions is the query options to a Pod's remote exec call.
2812// ---
2813// TODO: This is largely identical to PodAttachOptions above, make sure they stay in sync and see about merging
2814// and also when we cut V2, we should export a "StreamOptions" or somesuch that contains Stdin, Stdout, Stder and TTY
2815message PodExecOptions {
2816 // Redirect the standard input stream of the pod for this call.
2817 // Defaults to false.
2818 // +optional
2819 optional bool stdin = 1;
2820
2821 // Redirect the standard output stream of the pod for this call.
2822 // Defaults to true.
2823 // +optional
2824 optional bool stdout = 2;
2825
2826 // Redirect the standard error stream of the pod for this call.
2827 // Defaults to true.
2828 // +optional
2829 optional bool stderr = 3;
2830
2831 // TTY if true indicates that a tty will be allocated for the exec call.
2832 // Defaults to false.
2833 // +optional
2834 optional bool tty = 4;
2835
2836 // Container in which to execute the command.
2837 // Defaults to only container if there is only one container in the pod.
2838 // +optional
2839 optional string container = 5;
2840
2841 // Command is the remote command to execute. argv array. Not executed within a shell.
2842 repeated string command = 6;
2843}
2844
2845// PodList is a list of Pods.
2846message PodList {
2847 // Standard list metadata.
2848 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
2849 // +optional
2850 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
2851
2852 // List of pods.
2853 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md
2854 repeated Pod items = 2;
2855}
2856
2857// PodLogOptions is the query options for a Pod's logs REST call.
2858message PodLogOptions {
2859 // The container for which to stream logs. Defaults to only container if there is one container in the pod.
2860 // +optional
2861 optional string container = 1;
2862
2863 // Follow the log stream of the pod. Defaults to false.
2864 // +optional
2865 optional bool follow = 2;
2866
2867 // Return previous terminated container logs. Defaults to false.
2868 // +optional
2869 optional bool previous = 3;
2870
2871 // A relative time in seconds before the current time from which to show logs. If this value
2872 // precedes the time a pod was started, only logs since the pod start will be returned.
2873 // If this value is in the future, no logs will be returned.
2874 // Only one of sinceSeconds or sinceTime may be specified.
2875 // +optional
2876 optional int64 sinceSeconds = 4;
2877
2878 // An RFC3339 timestamp from which to show logs. If this value
2879 // precedes the time a pod was started, only logs since the pod start will be returned.
2880 // If this value is in the future, no logs will be returned.
2881 // Only one of sinceSeconds or sinceTime may be specified.
2882 // +optional
2883 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time sinceTime = 5;
2884
2885 // If true, add an RFC3339 or RFC3339Nano timestamp at the beginning of every line
2886 // of log output. Defaults to false.
2887 // +optional
2888 optional bool timestamps = 6;
2889
2890 // If set, the number of lines from the end of the logs to show. If not specified,
2891 // logs are shown from the creation of the container or sinceSeconds or sinceTime
2892 // +optional
2893 optional int64 tailLines = 7;
2894
2895 // If set, the number of bytes to read from the server before terminating the
2896 // log output. This may not display a complete final line of logging, and may return
2897 // slightly more or slightly less than the specified limit.
2898 // +optional
2899 optional int64 limitBytes = 8;
2900}
2901
2902// PodPortForwardOptions is the query options to a Pod's port forward call
2903// when using WebSockets.
2904// The `port` query parameter must specify the port or
2905// ports (comma separated) to forward over.
2906// Port forwarding over SPDY does not use these options. It requires the port
2907// to be passed in the `port` header as part of request.
2908message PodPortForwardOptions {
2909 // List of ports to forward
2910 // Required when using WebSockets
2911 // +optional
2912 repeated int32 ports = 1;
2913}
2914
2915// PodProxyOptions is the query options to a Pod's proxy call.
2916message PodProxyOptions {
2917 // Path is the URL path to use for the current proxy request to pod.
2918 // +optional
2919 optional string path = 1;
2920}
2921
2922// PodReadinessGate contains the reference to a pod condition
2923message PodReadinessGate {
2924 // ConditionType refers to a condition in the pod's condition list with matching type.
2925 optional string conditionType = 1;
2926}
2927
2928// PodSecurityContext holds pod-level security attributes and common container settings.
2929// Some fields are also present in container.securityContext. Field values of
2930// container.securityContext take precedence over field values of PodSecurityContext.
2931message PodSecurityContext {
2932 // The SELinux context to be applied to all containers.
2933 // If unspecified, the container runtime will allocate a random SELinux context for each
2934 // container. May also be set in SecurityContext. If set in
2935 // both SecurityContext and PodSecurityContext, the value specified in SecurityContext
2936 // takes precedence for that container.
2937 // +optional
2938 optional SELinuxOptions seLinuxOptions = 1;
2939
2940 // Windows security options.
2941 // +optional
2942 optional WindowsSecurityContextOptions windowsOptions = 8;
2943
2944 // The UID to run the entrypoint of the container process.
2945 // Defaults to user specified in image metadata if unspecified.
2946 // May also be set in SecurityContext. If set in both SecurityContext and
2947 // PodSecurityContext, the value specified in SecurityContext takes precedence
2948 // for that container.
2949 // +optional
2950 optional int64 runAsUser = 2;
2951
2952 // The GID to run the entrypoint of the container process.
2953 // Uses runtime default if unset.
2954 // May also be set in SecurityContext. If set in both SecurityContext and
2955 // PodSecurityContext, the value specified in SecurityContext takes precedence
2956 // for that container.
2957 // +optional
2958 optional int64 runAsGroup = 6;
2959
2960 // Indicates that the container must run as a non-root user.
2961 // If true, the Kubelet will validate the image at runtime to ensure that it
2962 // does not run as UID 0 (root) and fail to start the container if it does.
2963 // If unset or false, no such validation will be performed.
2964 // May also be set in SecurityContext. If set in both SecurityContext and
2965 // PodSecurityContext, the value specified in SecurityContext takes precedence.
2966 // +optional
2967 optional bool runAsNonRoot = 3;
2968
2969 // A list of groups applied to the first process run in each container, in addition
2970 // to the container's primary GID. If unspecified, no groups will be added to
2971 // any container.
2972 // +optional
2973 repeated int64 supplementalGroups = 4;
2974
2975 // A special supplemental group that applies to all containers in a pod.
2976 // Some volume types allow the Kubelet to change the ownership of that volume
2977 // to be owned by the pod:
2978 //
2979 // 1. The owning GID will be the FSGroup
2980 // 2. The setgid bit is set (new files created in the volume will be owned by FSGroup)
2981 // 3. The permission bits are OR'd with rw-rw----
2982 //
2983 // If unset, the Kubelet will not modify the ownership and permissions of any volume.
2984 // +optional
2985 optional int64 fsGroup = 5;
2986
2987 // Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported
2988 // sysctls (by the container runtime) might fail to launch.
2989 // +optional
2990 repeated Sysctl sysctls = 7;
2991}
2992
2993// Describes the class of pods that should avoid this node.
2994// Exactly one field should be set.
2995message PodSignature {
2996 // Reference to controller whose pods should avoid this node.
2997 // +optional
2998 optional k8s.io.apimachinery.pkg.apis.meta.v1.OwnerReference podController = 1;
2999}
3000
3001// PodSpec is a description of a pod.
3002message PodSpec {
3003 // List of volumes that can be mounted by containers belonging to the pod.
3004 // More info: https://kubernetes.io/docs/concepts/storage/volumes
3005 // +optional
3006 // +patchMergeKey=name
3007 // +patchStrategy=merge,retainKeys
3008 repeated Volume volumes = 1;
3009
3010 // List of initialization containers belonging to the pod.
3011 // Init containers are executed in order prior to containers being started. If any
3012 // init container fails, the pod is considered to have failed and is handled according
3013 // to its restartPolicy. The name for an init container or normal container must be
3014 // unique among all containers.
3015 // Init containers may not have Lifecycle actions, Readiness probes, or Liveness probes.
3016 // The resourceRequirements of an init container are taken into account during scheduling
3017 // by finding the highest request/limit for each resource type, and then using the max of
3018 // of that value or the sum of the normal containers. Limits are applied to init containers
3019 // in a similar fashion.
3020 // Init containers cannot currently be added or removed.
3021 // Cannot be updated.
3022 // More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
3023 // +patchMergeKey=name
3024 // +patchStrategy=merge
3025 repeated Container initContainers = 20;
3026
3027 // List of containers belonging to the pod.
3028 // Containers cannot currently be added or removed.
3029 // There must be at least one container in a Pod.
3030 // Cannot be updated.
3031 // +patchMergeKey=name
3032 // +patchStrategy=merge
3033 repeated Container containers = 2;
3034
3035 // Restart policy for all containers within the pod.
3036 // One of Always, OnFailure, Never.
3037 // Default to Always.
3038 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
3039 // +optional
3040 optional string restartPolicy = 3;
3041
3042 // Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request.
3043 // Value must be non-negative integer. The value zero indicates delete immediately.
3044 // If this value is nil, the default grace period will be used instead.
3045 // The grace period is the duration in seconds after the processes running in the pod are sent
3046 // a termination signal and the time when the processes are forcibly halted with a kill signal.
3047 // Set this value longer than the expected cleanup time for your process.
3048 // Defaults to 30 seconds.
3049 // +optional
3050 optional int64 terminationGracePeriodSeconds = 4;
3051
3052 // Optional duration in seconds the pod may be active on the node relative to
3053 // StartTime before the system will actively try to mark it failed and kill associated containers.
3054 // Value must be a positive integer.
3055 // +optional
3056 optional int64 activeDeadlineSeconds = 5;
3057
3058 // Set DNS policy for the pod.
3059 // Defaults to "ClusterFirst".
3060 // Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
3061 // DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
3062 // To have DNS options set along with hostNetwork, you have to specify DNS policy
3063 // explicitly to 'ClusterFirstWithHostNet'.
3064 // +optional
3065 optional string dnsPolicy = 6;
3066
3067 // NodeSelector is a selector which must be true for the pod to fit on a node.
3068 // Selector which must match a node's labels for the pod to be scheduled on that node.
3069 // More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
3070 // +optional
3071 map<string, string> nodeSelector = 7;
3072
3073 // ServiceAccountName is the name of the ServiceAccount to use to run this pod.
3074 // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
3075 // +optional
3076 optional string serviceAccountName = 8;
3077
3078 // DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.
3079 // Deprecated: Use serviceAccountName instead.
3080 // +k8s:conversion-gen=false
3081 // +optional
3082 optional string serviceAccount = 9;
3083
3084 // AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
3085 // +optional
3086 optional bool automountServiceAccountToken = 21;
3087
3088 // NodeName is a request to schedule this pod onto a specific node. If it is non-empty,
3089 // the scheduler simply schedules this pod onto that node, assuming that it fits resource
3090 // requirements.
3091 // +optional
3092 optional string nodeName = 10;
3093
3094 // Host networking requested for this pod. Use the host's network namespace.
3095 // If this option is set, the ports that will be used must be specified.
3096 // Default to false.
3097 // +k8s:conversion-gen=false
3098 // +optional
3099 optional bool hostNetwork = 11;
3100
3101 // Use the host's pid namespace.
3102 // Optional: Default to false.
3103 // +k8s:conversion-gen=false
3104 // +optional
3105 optional bool hostPID = 12;
3106
3107 // Use the host's ipc namespace.
3108 // Optional: Default to false.
3109 // +k8s:conversion-gen=false
3110 // +optional
3111 optional bool hostIPC = 13;
3112
3113 // Share a single process namespace between all of the containers in a pod.
3114 // When this is set containers will be able to view and signal processes from other containers
3115 // in the same pod, and the first process in each container will not be assigned PID 1.
3116 // HostPID and ShareProcessNamespace cannot both be set.
3117 // Optional: Default to false.
3118 // This field is beta-level and may be disabled with the PodShareProcessNamespace feature.
3119 // +k8s:conversion-gen=false
3120 // +optional
3121 optional bool shareProcessNamespace = 27;
3122
3123 // SecurityContext holds pod-level security attributes and common container settings.
3124 // Optional: Defaults to empty. See type description for default values of each field.
3125 // +optional
3126 optional PodSecurityContext securityContext = 14;
3127
3128 // ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.
3129 // If specified, these secrets will be passed to individual puller implementations for them to use. For example,
3130 // in the case of docker, only DockerConfig type secrets are honored.
3131 // More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
3132 // +optional
3133 // +patchMergeKey=name
3134 // +patchStrategy=merge
3135 repeated LocalObjectReference imagePullSecrets = 15;
3136
3137 // Specifies the hostname of the Pod
3138 // If not specified, the pod's hostname will be set to a system-defined value.
3139 // +optional
3140 optional string hostname = 16;
3141
3142 // If specified, the fully qualified Pod hostname will be "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>".
3143 // If not specified, the pod will not have a domainname at all.
3144 // +optional
3145 optional string subdomain = 17;
3146
3147 // If specified, the pod's scheduling constraints
3148 // +optional
3149 optional Affinity affinity = 18;
3150
3151 // If specified, the pod will be dispatched by specified scheduler.
3152 // If not specified, the pod will be dispatched by default scheduler.
3153 // +optional
3154 optional string schedulerName = 19;
3155
3156 // If specified, the pod's tolerations.
3157 // +optional
3158 repeated Toleration tolerations = 22;
3159
3160 // HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts
3161 // file if specified. This is only valid for non-hostNetwork pods.
3162 // +optional
3163 // +patchMergeKey=ip
3164 // +patchStrategy=merge
3165 repeated HostAlias hostAliases = 23;
3166
3167 // If specified, indicates the pod's priority. "system-node-critical" and
3168 // "system-cluster-critical" are two special keywords which indicate the
3169 // highest priorities with the former being the highest priority. Any other
3170 // name must be defined by creating a PriorityClass object with that name.
3171 // If not specified, the pod priority will be default or zero if there is no
3172 // default.
3173 // +optional
3174 optional string priorityClassName = 24;
3175
3176 // The priority value. Various system components use this field to find the
3177 // priority of the pod. When Priority Admission Controller is enabled, it
3178 // prevents users from setting this field. The admission controller populates
3179 // this field from PriorityClassName.
3180 // The higher the value, the higher the priority.
3181 // +optional
3182 optional int32 priority = 25;
3183
3184 // Specifies the DNS parameters of a pod.
3185 // Parameters specified here will be merged to the generated DNS
3186 // configuration based on DNSPolicy.
3187 // +optional
3188 optional PodDNSConfig dnsConfig = 26;
3189
3190 // If specified, all readiness gates will be evaluated for pod readiness.
3191 // A pod is ready when all its containers are ready AND
3192 // all conditions specified in the readiness gates have status equal to "True"
3193 // More info: https://git.k8s.io/enhancements/keps/sig-network/0007-pod-ready%2B%2B.md
3194 // +optional
3195 repeated PodReadinessGate readinessGates = 28;
3196
3197 // RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used
3198 // to run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.
3199 // If unset or empty, the "legacy" RuntimeClass will be used, which is an implicit class with an
3200 // empty definition that uses the default runtime handler.
3201 // More info: https://git.k8s.io/enhancements/keps/sig-node/runtime-class.md
3202 // This is a beta feature as of Kubernetes v1.14.
3203 // +optional
3204 optional string runtimeClassName = 29;
3205
3206 // EnableServiceLinks indicates whether information about services should be injected into pod's
3207 // environment variables, matching the syntax of Docker links.
3208 // Optional: Defaults to true.
3209 // +optional
3210 optional bool enableServiceLinks = 30;
3211
3212 // PreemptionPolicy is the Policy for preempting pods with lower priority.
3213 // One of Never, PreemptLowerPriority.
3214 // Defaults to PreemptLowerPriority if unset.
3215 // This field is alpha-level and is only honored by servers that enable the NonPreemptingPriority feature.
3216 // +optional
3217 optional string preemptionPolicy = 31;
3218
3219 // Overhead represents the resource overhead associated with running a pod for a given RuntimeClass.
3220 // This field will be autopopulated at admission time by the RuntimeClass admission controller. If
3221 // the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests.
3222 // The RuntimeClass admission controller will reject Pod create requests which have the overhead already
3223 // set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value
3224 // defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero.
3225 // More info: https://git.k8s.io/enhancements/keps/sig-node/20190226-pod-overhead.md
3226 // This field is alpha-level as of Kubernetes v1.16, and is only honored by servers that enable the PodOverhead feature.
3227 // +optional
3228 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> overhead = 32;
3229}
3230
3231// PodStatus represents information about the status of a pod. Status may trail the actual
3232// state of a system, especially if the node that hosts the pod cannot contact the control
3233// plane.
3234message PodStatus {
3235 // The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
3236 // The conditions array, the reason and message fields, and the individual container status
3237 // arrays contain more detail about the pod's status.
3238 // There are five possible phase values:
3239 //
3240 // Pending: The pod has been accepted by the Kubernetes system, but one or more of the
3241 // container images has not been created. This includes time before being scheduled as
3242 // well as time spent downloading images over the network, which could take a while.
3243 // Running: The pod has been bound to a node, and all of the containers have been created.
3244 // At least one container is still running, or is in the process of starting or restarting.
3245 // Succeeded: All containers in the pod have terminated in success, and will not be restarted.
3246 // Failed: All containers in the pod have terminated, and at least one container has
3247 // terminated in failure. The container either exited with non-zero status or was terminated
3248 // by the system.
3249 // Unknown: For some reason the state of the pod could not be obtained, typically due to an
3250 // error in communicating with the host of the pod.
3251 //
3252 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
3253 // +optional
3254 optional string phase = 1;
3255
3256 // Current service state of pod.
3257 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
3258 // +optional
3259 // +patchMergeKey=type
3260 // +patchStrategy=merge
3261 repeated PodCondition conditions = 2;
3262
3263 // A human readable message indicating details about why the pod is in this condition.
3264 // +optional
3265 optional string message = 3;
3266
3267 // A brief CamelCase message indicating details about why the pod is in this state.
3268 // e.g. 'Evicted'
3269 // +optional
3270 optional string reason = 4;
3271
3272 // nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
3273 // scheduled right away as preemption victims receive their graceful termination periods.
3274 // This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
3275 // to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
3276 // give the resources on this node to a higher priority pod that is created after preemption.
3277 // As a result, this field may be different than PodSpec.nodeName when the pod is
3278 // scheduled.
3279 // +optional
3280 optional string nominatedNodeName = 11;
3281
3282 // IP address of the host to which the pod is assigned. Empty if not yet scheduled.
3283 // +optional
3284 optional string hostIP = 5;
3285
3286 // IP address allocated to the pod. Routable at least within the cluster.
3287 // Empty if not yet allocated.
3288 // +optional
3289 optional string podIP = 6;
3290
3291 // RFC 3339 date and time at which the object was acknowledged by the Kubelet.
3292 // This is before the Kubelet pulled the container image(s) for the pod.
3293 // +optional
3294 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;
3295
3296 // The list has one entry per init container in the manifest. The most recent successful
3297 // init container will have ready = true, the most recently started container will have
3298 // startTime set.
3299 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
3300 repeated ContainerStatus initContainerStatuses = 10;
3301
3302 // The list has one entry per container in the manifest. Each entry is currently the output
3303 // of `docker inspect`.
3304 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
3305 // +optional
3306 repeated ContainerStatus containerStatuses = 8;
3307
3308 // The Quality of Service (QOS) classification assigned to the pod based on resource requirements
3309 // See PodQOSClass type for available QOS classes
3310 // More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md
3311 // +optional
3312 optional string qosClass = 9;
3313}
3314
3315// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
3316message PodStatusResult {
3317 // Standard object's metadata.
3318 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3319 // +optional
3320 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3321
3322 // Most recently observed status of the pod.
3323 // This data may not be up to date.
3324 // Populated by the system.
3325 // Read-only.
3326 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3327 // +optional
3328 optional PodStatus status = 2;
3329}
3330
3331// PodTemplate describes a template for creating copies of a predefined pod.
3332message PodTemplate {
3333 // Standard object's metadata.
3334 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3335 // +optional
3336 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3337
3338 // Template defines the pods that will be created from this pod template.
3339 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3340 // +optional
3341 optional PodTemplateSpec template = 2;
3342}
3343
3344// PodTemplateList is a list of PodTemplates.
3345message PodTemplateList {
3346 // Standard list metadata.
3347 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3348 // +optional
3349 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3350
3351 // List of pod templates
3352 repeated PodTemplate items = 2;
3353}
3354
3355// PodTemplateSpec describes the data a pod should have when created from a template
3356message PodTemplateSpec {
3357 // Standard object's metadata.
3358 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3359 // +optional
3360 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3361
3362 // Specification of the desired behavior of the pod.
3363 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3364 // +optional
3365 optional PodSpec spec = 2;
3366}
3367
3368// PortworxVolumeSource represents a Portworx volume resource.
3369message PortworxVolumeSource {
3370 // VolumeID uniquely identifies a Portworx volume
3371 optional string volumeID = 1;
3372
3373 // FSType represents the filesystem type to mount
3374 // Must be a filesystem type supported by the host operating system.
3375 // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
3376 optional string fsType = 2;
3377
3378 // Defaults to false (read/write). ReadOnly here will force
3379 // the ReadOnly setting in VolumeMounts.
3380 // +optional
3381 optional bool readOnly = 3;
3382}
3383
3384// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
3385// +k8s:openapi-gen=false
3386message Preconditions {
3387 // Specifies the target UID.
3388 // +optional
3389 optional string uid = 1;
3390}
3391
3392// Describes a class of pods that should avoid this node.
3393message PreferAvoidPodsEntry {
3394 // The class of pods.
3395 optional PodSignature podSignature = 1;
3396
3397 // Time at which this entry was added to the list.
3398 // +optional
3399 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;
3400
3401 // (brief) reason why this entry was added to the list.
3402 // +optional
3403 optional string reason = 3;
3404
3405 // Human readable message indicating why this entry was added to the list.
3406 // +optional
3407 optional string message = 4;
3408}
3409
3410// An empty preferred scheduling term matches all objects with implicit weight 0
3411// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
3412message PreferredSchedulingTerm {
3413 // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
3414 optional int32 weight = 1;
3415
3416 // A node selector term, associated with the corresponding weight.
3417 optional NodeSelectorTerm preference = 2;
3418}
3419
3420// Probe describes a health check to be performed against a container to determine whether it is
3421// alive or ready to receive traffic.
3422message Probe {
3423 // The action taken to determine the health of a container
3424 optional Handler handler = 1;
3425
3426 // Number of seconds after the container has started before liveness probes are initiated.
3427 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
3428 // +optional
3429 optional int32 initialDelaySeconds = 2;
3430
3431 // Number of seconds after which the probe times out.
3432 // Defaults to 1 second. Minimum value is 1.
3433 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
3434 // +optional
3435 optional int32 timeoutSeconds = 3;
3436
3437 // How often (in seconds) to perform the probe.
3438 // Default to 10 seconds. Minimum value is 1.
3439 // +optional
3440 optional int32 periodSeconds = 4;
3441
3442 // Minimum consecutive successes for the probe to be considered successful after having failed.
3443 // Defaults to 1. Must be 1 for liveness. Minimum value is 1.
3444 // +optional
3445 optional int32 successThreshold = 5;
3446
3447 // Minimum consecutive failures for the probe to be considered failed after having succeeded.
3448 // Defaults to 3. Minimum value is 1.
3449 // +optional
3450 optional int32 failureThreshold = 6;
3451}
3452
3453// Represents a projected volume source
3454message ProjectedVolumeSource {
3455 // list of volume projections
3456 repeated VolumeProjection sources = 1;
3457
3458 // Mode bits to use on created files by default. Must be a value between
3459 // 0 and 0777.
3460 // Directories within the path are not affected by this setting.
3461 // This might be in conflict with other options that affect the file
3462 // mode, like fsGroup, and the result can be other mode bits set.
3463 // +optional
3464 optional int32 defaultMode = 2;
3465}
3466
3467// Represents a Quobyte mount that lasts the lifetime of a pod.
3468// Quobyte volumes do not support ownership management or SELinux relabeling.
3469message QuobyteVolumeSource {
3470 // Registry represents a single or multiple Quobyte Registry services
3471 // specified as a string as host:port pair (multiple entries are separated with commas)
3472 // which acts as the central registry for volumes
3473 optional string registry = 1;
3474
3475 // Volume is a string that references an already created Quobyte volume by name.
3476 optional string volume = 2;
3477
3478 // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.
3479 // Defaults to false.
3480 // +optional
3481 optional bool readOnly = 3;
3482
3483 // User to map volume access to
3484 // Defaults to serivceaccount user
3485 // +optional
3486 optional string user = 4;
3487
3488 // Group to map volume access to
3489 // Default is no group
3490 // +optional
3491 optional string group = 5;
3492
3493 // Tenant owning the given Quobyte volume in the Backend
3494 // Used with dynamically provisioned Quobyte volumes, value is set by the plugin
3495 // +optional
3496 optional string tenant = 6;
3497}
3498
3499// Represents a Rados Block Device mount that lasts the lifetime of a pod.
3500// RBD volumes support ownership management and SELinux relabeling.
3501message RBDPersistentVolumeSource {
3502 // A collection of Ceph monitors.
3503 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3504 repeated string monitors = 1;
3505
3506 // The rados image name.
3507 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3508 optional string image = 2;
3509
3510 // Filesystem type of the volume that you want to mount.
3511 // Tip: Ensure that the filesystem type is supported by the host operating system.
3512 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
3513 // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
3514 // TODO: how do we prevent errors in the filesystem from compromising the machine
3515 // +optional
3516 optional string fsType = 3;
3517
3518 // The rados pool name.
3519 // Default is rbd.
3520 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3521 // +optional
3522 optional string pool = 4;
3523
3524 // The rados user name.
3525 // Default is admin.
3526 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3527 // +optional
3528 optional string user = 5;
3529
3530 // Keyring is the path to key ring for RBDUser.
3531 // Default is /etc/ceph/keyring.
3532 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3533 // +optional
3534 optional string keyring = 6;
3535
3536 // SecretRef is name of the authentication secret for RBDUser. If provided
3537 // overrides keyring.
3538 // Default is nil.
3539 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3540 // +optional
3541 optional SecretReference secretRef = 7;
3542
3543 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
3544 // Defaults to false.
3545 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3546 // +optional
3547 optional bool readOnly = 8;
3548}
3549
3550// Represents a Rados Block Device mount that lasts the lifetime of a pod.
3551// RBD volumes support ownership management and SELinux relabeling.
3552message RBDVolumeSource {
3553 // A collection of Ceph monitors.
3554 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3555 repeated string monitors = 1;
3556
3557 // The rados image name.
3558 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3559 optional string image = 2;
3560
3561 // Filesystem type of the volume that you want to mount.
3562 // Tip: Ensure that the filesystem type is supported by the host operating system.
3563 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
3564 // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
3565 // TODO: how do we prevent errors in the filesystem from compromising the machine
3566 // +optional
3567 optional string fsType = 3;
3568
3569 // The rados pool name.
3570 // Default is rbd.
3571 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3572 // +optional
3573 optional string pool = 4;
3574
3575 // The rados user name.
3576 // Default is admin.
3577 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3578 // +optional
3579 optional string user = 5;
3580
3581 // Keyring is the path to key ring for RBDUser.
3582 // Default is /etc/ceph/keyring.
3583 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3584 // +optional
3585 optional string keyring = 6;
3586
3587 // SecretRef is name of the authentication secret for RBDUser. If provided
3588 // overrides keyring.
3589 // Default is nil.
3590 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3591 // +optional
3592 optional LocalObjectReference secretRef = 7;
3593
3594 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
3595 // Defaults to false.
3596 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3597 // +optional
3598 optional bool readOnly = 8;
3599}
3600
3601// RangeAllocation is not a public type.
3602message RangeAllocation {
3603 // Standard object's metadata.
3604 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3605 // +optional
3606 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3607
3608 // Range is string that identifies the range represented by 'data'.
3609 optional string range = 2;
3610
3611 // Data is a bit array containing all allocated addresses in the previous segment.
3612 optional bytes data = 3;
3613}
3614
3615// ReplicationController represents the configuration of a replication controller.
3616message ReplicationController {
3617 // If the Labels of a ReplicationController are empty, they are defaulted to
3618 // be the same as the Pod(s) that the replication controller manages.
3619 // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3620 // +optional
3621 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3622
3623 // Spec defines the specification of the desired behavior of the replication controller.
3624 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3625 // +optional
3626 optional ReplicationControllerSpec spec = 2;
3627
3628 // Status is the most recently observed status of the replication controller.
3629 // This data may be out of date by some window of time.
3630 // Populated by the system.
3631 // Read-only.
3632 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3633 // +optional
3634 optional ReplicationControllerStatus status = 3;
3635}
3636
3637// ReplicationControllerCondition describes the state of a replication controller at a certain point.
3638message ReplicationControllerCondition {
3639 // Type of replication controller condition.
3640 optional string type = 1;
3641
3642 // Status of the condition, one of True, False, Unknown.
3643 optional string status = 2;
3644
3645 // The last time the condition transitioned from one status to another.
3646 // +optional
3647 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
3648
3649 // The reason for the condition's last transition.
3650 // +optional
3651 optional string reason = 4;
3652
3653 // A human readable message indicating details about the transition.
3654 // +optional
3655 optional string message = 5;
3656}
3657
3658// ReplicationControllerList is a collection of replication controllers.
3659message ReplicationControllerList {
3660 // Standard list metadata.
3661 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3662 // +optional
3663 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3664
3665 // List of replication controllers.
3666 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
3667 repeated ReplicationController items = 2;
3668}
3669
3670// ReplicationControllerSpec is the specification of a replication controller.
3671message ReplicationControllerSpec {
3672 // Replicas is the number of desired replicas.
3673 // This is a pointer to distinguish between explicit zero and unspecified.
3674 // Defaults to 1.
3675 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
3676 // +optional
3677 optional int32 replicas = 1;
3678
3679 // Minimum number of seconds for which a newly created pod should be ready
3680 // without any of its container crashing, for it to be considered available.
3681 // Defaults to 0 (pod will be considered available as soon as it is ready)
3682 // +optional
3683 optional int32 minReadySeconds = 4;
3684
3685 // Selector is a label query over pods that should match the Replicas count.
3686 // If Selector is empty, it is defaulted to the labels present on the Pod template.
3687 // Label keys and values that must match in order to be controlled by this replication
3688 // controller, if empty defaulted to labels on Pod template.
3689 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
3690 // +optional
3691 map<string, string> selector = 2;
3692
3693 // Template is the object that describes the pod that will be created if
3694 // insufficient replicas are detected. This takes precedence over a TemplateRef.
3695 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
3696 // +optional
3697 optional PodTemplateSpec template = 3;
3698}
3699
3700// ReplicationControllerStatus represents the current status of a replication
3701// controller.
3702message ReplicationControllerStatus {
3703 // Replicas is the most recently oberved number of replicas.
3704 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
3705 optional int32 replicas = 1;
3706
3707 // The number of pods that have labels matching the labels of the pod template of the replication controller.
3708 // +optional
3709 optional int32 fullyLabeledReplicas = 2;
3710
3711 // The number of ready replicas for this replication controller.
3712 // +optional
3713 optional int32 readyReplicas = 4;
3714
3715 // The number of available replicas (ready for at least minReadySeconds) for this replication controller.
3716 // +optional
3717 optional int32 availableReplicas = 5;
3718
3719 // ObservedGeneration reflects the generation of the most recently observed replication controller.
3720 // +optional
3721 optional int64 observedGeneration = 3;
3722
3723 // Represents the latest available observations of a replication controller's current state.
3724 // +optional
3725 // +patchMergeKey=type
3726 // +patchStrategy=merge
3727 repeated ReplicationControllerCondition conditions = 6;
3728}
3729
3730// ResourceFieldSelector represents container resources (cpu, memory) and their output format
3731message ResourceFieldSelector {
3732 // Container name: required for volumes, optional for env vars
3733 // +optional
3734 optional string containerName = 1;
3735
3736 // Required: resource to select
3737 optional string resource = 2;
3738
3739 // Specifies the output format of the exposed resources, defaults to "1"
3740 // +optional
3741 optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;
3742}
3743
3744// ResourceQuota sets aggregate quota restrictions enforced per namespace
3745message ResourceQuota {
3746 // Standard object's metadata.
3747 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3748 // +optional
3749 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3750
3751 // Spec defines the desired quota.
3752 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3753 // +optional
3754 optional ResourceQuotaSpec spec = 2;
3755
3756 // Status defines the actual enforced quota and its current usage.
3757 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3758 // +optional
3759 optional ResourceQuotaStatus status = 3;
3760}
3761
3762// ResourceQuotaList is a list of ResourceQuota items.
3763message ResourceQuotaList {
3764 // Standard list metadata.
3765 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3766 // +optional
3767 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3768
3769 // Items is a list of ResourceQuota objects.
3770 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3771 repeated ResourceQuota items = 2;
3772}
3773
3774// ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
3775message ResourceQuotaSpec {
3776 // hard is the set of desired hard limits for each named resource.
3777 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3778 // +optional
3779 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
3780
3781 // A collection of filters that must match each object tracked by a quota.
3782 // If not specified, the quota matches all objects.
3783 // +optional
3784 repeated string scopes = 2;
3785
3786 // scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
3787 // but expressed using ScopeSelectorOperator in combination with possible values.
3788 // For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
3789 // +optional
3790 optional ScopeSelector scopeSelector = 3;
3791}
3792
3793// ResourceQuotaStatus defines the enforced hard limits and observed use.
3794message ResourceQuotaStatus {
3795 // Hard is the set of enforced hard limits for each named resource.
3796 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3797 // +optional
3798 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
3799
3800 // Used is the current observed total usage of the resource in the namespace.
3801 // +optional
3802 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> used = 2;
3803}
3804
3805// ResourceRequirements describes the compute resource requirements.
3806message ResourceRequirements {
3807 // Limits describes the maximum amount of compute resources allowed.
3808 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
3809 // +optional
3810 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> limits = 1;
3811
3812 // Requests describes the minimum amount of compute resources required.
3813 // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
3814 // otherwise to an implementation-defined value.
3815 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
3816 // +optional
3817 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> requests = 2;
3818}
3819
3820// SELinuxOptions are the labels to be applied to the container
3821message SELinuxOptions {
3822 // User is a SELinux user label that applies to the container.
3823 // +optional
3824 optional string user = 1;
3825
3826 // Role is a SELinux role label that applies to the container.
3827 // +optional
3828 optional string role = 2;
3829
3830 // Type is a SELinux type label that applies to the container.
3831 // +optional
3832 optional string type = 3;
3833
3834 // Level is SELinux level label that applies to the container.
3835 // +optional
3836 optional string level = 4;
3837}
3838
3839// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume
3840message ScaleIOPersistentVolumeSource {
3841 // The host address of the ScaleIO API Gateway.
3842 optional string gateway = 1;
3843
3844 // The name of the storage system as configured in ScaleIO.
3845 optional string system = 2;
3846
3847 // SecretRef references to the secret for ScaleIO user and other
3848 // sensitive information. If this is not provided, Login operation will fail.
3849 optional SecretReference secretRef = 3;
3850
3851 // Flag to enable/disable SSL communication with Gateway, default false
3852 // +optional
3853 optional bool sslEnabled = 4;
3854
3855 // The name of the ScaleIO Protection Domain for the configured storage.
3856 // +optional
3857 optional string protectionDomain = 5;
3858
3859 // The ScaleIO Storage Pool associated with the protection domain.
3860 // +optional
3861 optional string storagePool = 6;
3862
3863 // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
3864 // Default is ThinProvisioned.
3865 // +optional
3866 optional string storageMode = 7;
3867
3868 // The name of a volume already created in the ScaleIO system
3869 // that is associated with this volume source.
3870 optional string volumeName = 8;
3871
3872 // Filesystem type to mount.
3873 // Must be a filesystem type supported by the host operating system.
3874 // Ex. "ext4", "xfs", "ntfs".
3875 // Default is "xfs"
3876 // +optional
3877 optional string fsType = 9;
3878
3879 // Defaults to false (read/write). ReadOnly here will force
3880 // the ReadOnly setting in VolumeMounts.
3881 // +optional
3882 optional bool readOnly = 10;
3883}
3884
3885// ScaleIOVolumeSource represents a persistent ScaleIO volume
3886message ScaleIOVolumeSource {
3887 // The host address of the ScaleIO API Gateway.
3888 optional string gateway = 1;
3889
3890 // The name of the storage system as configured in ScaleIO.
3891 optional string system = 2;
3892
3893 // SecretRef references to the secret for ScaleIO user and other
3894 // sensitive information. If this is not provided, Login operation will fail.
3895 optional LocalObjectReference secretRef = 3;
3896
3897 // Flag to enable/disable SSL communication with Gateway, default false
3898 // +optional
3899 optional bool sslEnabled = 4;
3900
3901 // The name of the ScaleIO Protection Domain for the configured storage.
3902 // +optional
3903 optional string protectionDomain = 5;
3904
3905 // The ScaleIO Storage Pool associated with the protection domain.
3906 // +optional
3907 optional string storagePool = 6;
3908
3909 // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
3910 // Default is ThinProvisioned.
3911 // +optional
3912 optional string storageMode = 7;
3913
3914 // The name of a volume already created in the ScaleIO system
3915 // that is associated with this volume source.
3916 optional string volumeName = 8;
3917
3918 // Filesystem type to mount.
3919 // Must be a filesystem type supported by the host operating system.
3920 // Ex. "ext4", "xfs", "ntfs".
3921 // Default is "xfs".
3922 // +optional
3923 optional string fsType = 9;
3924
3925 // Defaults to false (read/write). ReadOnly here will force
3926 // the ReadOnly setting in VolumeMounts.
3927 // +optional
3928 optional bool readOnly = 10;
3929}
3930
3931// A scope selector represents the AND of the selectors represented
3932// by the scoped-resource selector requirements.
3933message ScopeSelector {
3934 // A list of scope selector requirements by scope of the resources.
3935 // +optional
3936 repeated ScopedResourceSelectorRequirement matchExpressions = 1;
3937}
3938
3939// A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
3940// that relates the scope name and values.
3941message ScopedResourceSelectorRequirement {
3942 // The name of the scope that the selector applies to.
3943 optional string scopeName = 1;
3944
3945 // Represents a scope's relationship to a set of values.
3946 // Valid operators are In, NotIn, Exists, DoesNotExist.
3947 optional string operator = 2;
3948
3949 // An array of string values. If the operator is In or NotIn,
3950 // the values array must be non-empty. If the operator is Exists or DoesNotExist,
3951 // the values array must be empty.
3952 // This array is replaced during a strategic merge patch.
3953 // +optional
3954 repeated string values = 3;
3955}
3956
3957// Secret holds secret data of a certain type. The total bytes of the values in
3958// the Data field must be less than MaxSecretSize bytes.
3959message Secret {
3960 // Standard object's metadata.
3961 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3962 // +optional
3963 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3964
3965 // Data contains the secret data. Each key must consist of alphanumeric
3966 // characters, '-', '_' or '.'. The serialized form of the secret data is a
3967 // base64 encoded string, representing the arbitrary (possibly non-string)
3968 // data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
3969 // +optional
3970 map<string, bytes> data = 2;
3971
3972 // stringData allows specifying non-binary secret data in string form.
3973 // It is provided as a write-only convenience method.
3974 // All keys and values are merged into the data field on write, overwriting any existing values.
3975 // It is never output when reading from the API.
3976 // +k8s:conversion-gen=false
3977 // +optional
3978 map<string, string> stringData = 4;
3979
3980 // Used to facilitate programmatic handling of secret data.
3981 // +optional
3982 optional string type = 3;
3983}
3984
3985// SecretEnvSource selects a Secret to populate the environment
3986// variables with.
3987//
3988// The contents of the target Secret's Data field will represent the
3989// key-value pairs as environment variables.
3990message SecretEnvSource {
3991 // The Secret to select from.
3992 optional LocalObjectReference localObjectReference = 1;
3993
3994 // Specify whether the Secret must be defined
3995 // +optional
3996 optional bool optional = 2;
3997}
3998
3999// SecretKeySelector selects a key of a Secret.
4000message SecretKeySelector {
4001 // The name of the secret in the pod's namespace to select from.
4002 optional LocalObjectReference localObjectReference = 1;
4003
4004 // The key of the secret to select from. Must be a valid secret key.
4005 optional string key = 2;
4006
4007 // Specify whether the Secret or its key must be defined
4008 // +optional
4009 optional bool optional = 3;
4010}
4011
4012// SecretList is a list of Secret.
4013message SecretList {
4014 // Standard list metadata.
4015 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4016 // +optional
4017 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4018
4019 // Items is a list of secret objects.
4020 // More info: https://kubernetes.io/docs/concepts/configuration/secret
4021 repeated Secret items = 2;
4022}
4023
4024// Adapts a secret into a projected volume.
4025//
4026// The contents of the target Secret's Data field will be presented in a
4027// projected volume as files using the keys in the Data field as the file names.
4028// Note that this is identical to a secret volume source without the default
4029// mode.
4030message SecretProjection {
4031 optional LocalObjectReference localObjectReference = 1;
4032
4033 // If unspecified, each key-value pair in the Data field of the referenced
4034 // Secret will be projected into the volume as a file whose name is the
4035 // key and content is the value. If specified, the listed keys will be
4036 // projected into the specified paths, and unlisted keys will not be
4037 // present. If a key is specified which is not present in the Secret,
4038 // the volume setup will error unless it is marked optional. Paths must be
4039 // relative and may not contain the '..' path or start with '..'.
4040 // +optional
4041 repeated KeyToPath items = 2;
4042
4043 // Specify whether the Secret or its key must be defined
4044 // +optional
4045 optional bool optional = 4;
4046}
4047
4048// SecretReference represents a Secret Reference. It has enough information to retrieve secret
4049// in any namespace
4050message SecretReference {
4051 // Name is unique within a namespace to reference a secret resource.
4052 // +optional
4053 optional string name = 1;
4054
4055 // Namespace defines the space within which the secret name must be unique.
4056 // +optional
4057 optional string namespace = 2;
4058}
4059
4060// Adapts a Secret into a volume.
4061//
4062// The contents of the target Secret's Data field will be presented in a volume
4063// as files using the keys in the Data field as the file names.
4064// Secret volumes support ownership management and SELinux relabeling.
4065message SecretVolumeSource {
4066 // Name of the secret in the pod's namespace to use.
4067 // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
4068 // +optional
4069 optional string secretName = 1;
4070
4071 // If unspecified, each key-value pair in the Data field of the referenced
4072 // Secret will be projected into the volume as a file whose name is the
4073 // key and content is the value. If specified, the listed keys will be
4074 // projected into the specified paths, and unlisted keys will not be
4075 // present. If a key is specified which is not present in the Secret,
4076 // the volume setup will error unless it is marked optional. Paths must be
4077 // relative and may not contain the '..' path or start with '..'.
4078 // +optional
4079 repeated KeyToPath items = 2;
4080
4081 // Optional: mode bits to use on created files by default. Must be a
4082 // value between 0 and 0777. Defaults to 0644.
4083 // Directories within the path are not affected by this setting.
4084 // This might be in conflict with other options that affect the file
4085 // mode, like fsGroup, and the result can be other mode bits set.
4086 // +optional
4087 optional int32 defaultMode = 3;
4088
4089 // Specify whether the Secret or its keys must be defined
4090 // +optional
4091 optional bool optional = 4;
4092}
4093
4094// SecurityContext holds security configuration that will be applied to a container.
4095// Some fields are present in both SecurityContext and PodSecurityContext. When both
4096// are set, the values in SecurityContext take precedence.
4097message SecurityContext {
4098 // The capabilities to add/drop when running containers.
4099 // Defaults to the default set of capabilities granted by the container runtime.
4100 // +optional
4101 optional Capabilities capabilities = 1;
4102
4103 // Run container in privileged mode.
4104 // Processes in privileged containers are essentially equivalent to root on the host.
4105 // Defaults to false.
4106 // +optional
4107 optional bool privileged = 2;
4108
4109 // The SELinux context to be applied to the container.
4110 // If unspecified, the container runtime will allocate a random SELinux context for each
4111 // container. May also be set in PodSecurityContext. If set in both SecurityContext and
4112 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4113 // +optional
4114 optional SELinuxOptions seLinuxOptions = 3;
4115
4116 // Windows security options.
4117 // +optional
4118 optional WindowsSecurityContextOptions windowsOptions = 10;
4119
4120 // The UID to run the entrypoint of the container process.
4121 // Defaults to user specified in image metadata if unspecified.
4122 // May also be set in PodSecurityContext. If set in both SecurityContext and
4123 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4124 // +optional
4125 optional int64 runAsUser = 4;
4126
4127 // The GID to run the entrypoint of the container process.
4128 // Uses runtime default if unset.
4129 // May also be set in PodSecurityContext. If set in both SecurityContext and
4130 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4131 // +optional
4132 optional int64 runAsGroup = 8;
4133
4134 // Indicates that the container must run as a non-root user.
4135 // If true, the Kubelet will validate the image at runtime to ensure that it
4136 // does not run as UID 0 (root) and fail to start the container if it does.
4137 // If unset or false, no such validation will be performed.
4138 // May also be set in PodSecurityContext. If set in both SecurityContext and
4139 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4140 // +optional
4141 optional bool runAsNonRoot = 5;
4142
4143 // Whether this container has a read-only root filesystem.
4144 // Default is false.
4145 // +optional
4146 optional bool readOnlyRootFilesystem = 6;
4147
4148 // AllowPrivilegeEscalation controls whether a process can gain more
4149 // privileges than its parent process. This bool directly controls if
4150 // the no_new_privs flag will be set on the container process.
4151 // AllowPrivilegeEscalation is true always when the container is:
4152 // 1) run as Privileged
4153 // 2) has CAP_SYS_ADMIN
4154 // +optional
4155 optional bool allowPrivilegeEscalation = 7;
4156
4157 // procMount denotes the type of proc mount to use for the containers.
4158 // The default is DefaultProcMount which uses the container runtime defaults for
4159 // readonly paths and masked paths.
4160 // This requires the ProcMountType feature flag to be enabled.
4161 // +optional
4162 optional string procMount = 9;
4163}
4164
4165// SerializedReference is a reference to serialized object.
4166message SerializedReference {
4167 // The reference to an object in the system.
4168 // +optional
4169 optional ObjectReference reference = 1;
4170}
4171
4172// Service is a named abstraction of software service (for example, mysql) consisting of local port
4173// (for example 3306) that the proxy listens on, and the selector that determines which pods
4174// will answer requests sent through the proxy.
4175message Service {
4176 // Standard object's metadata.
4177 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
4178 // +optional
4179 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
4180
4181 // Spec defines the behavior of a service.
4182 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
4183 // +optional
4184 optional ServiceSpec spec = 2;
4185
4186 // Most recently observed status of the service.
4187 // Populated by the system.
4188 // Read-only.
4189 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
4190 // +optional
4191 optional ServiceStatus status = 3;
4192}
4193
4194// ServiceAccount binds together:
4195// * a name, understood by users, and perhaps by peripheral systems, for an identity
4196// * a principal that can be authenticated and authorized
4197// * a set of secrets
4198message ServiceAccount {
4199 // Standard object's metadata.
4200 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
4201 // +optional
4202 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
4203
4204 // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount.
4205 // More info: https://kubernetes.io/docs/concepts/configuration/secret
4206 // +optional
4207 // +patchMergeKey=name
4208 // +patchStrategy=merge
4209 repeated ObjectReference secrets = 2;
4210
4211 // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
4212 // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
4213 // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
4214 // More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
4215 // +optional
4216 repeated LocalObjectReference imagePullSecrets = 3;
4217
4218 // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
4219 // Can be overridden at the pod level.
4220 // +optional
4221 optional bool automountServiceAccountToken = 4;
4222}
4223
4224// ServiceAccountList is a list of ServiceAccount objects
4225message ServiceAccountList {
4226 // Standard list metadata.
4227 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4228 // +optional
4229 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4230
4231 // List of ServiceAccounts.
4232 // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
4233 repeated ServiceAccount items = 2;
4234}
4235
4236// ServiceAccountTokenProjection represents a projected service account token
4237// volume. This projection can be used to insert a service account token into
4238// the pods runtime filesystem for use against APIs (Kubernetes API Server or
4239// otherwise).
4240message ServiceAccountTokenProjection {
4241 // Audience is the intended audience of the token. A recipient of a token
4242 // must identify itself with an identifier specified in the audience of the
4243 // token, and otherwise should reject the token. The audience defaults to the
4244 // identifier of the apiserver.
4245 // +optional
4246 optional string audience = 1;
4247
4248 // ExpirationSeconds is the requested duration of validity of the service
4249 // account token. As the token approaches expiration, the kubelet volume
4250 // plugin will proactively rotate the service account token. The kubelet will
4251 // start trying to rotate the token if the token is older than 80 percent of
4252 // its time to live or if the token is older than 24 hours.Defaults to 1 hour
4253 // and must be at least 10 minutes.
4254 // +optional
4255 optional int64 expirationSeconds = 2;
4256
4257 // Path is the path relative to the mount point of the file to project the
4258 // token into.
4259 optional string path = 3;
4260}
4261
4262// ServiceList holds a list of services.
4263message ServiceList {
4264 // Standard list metadata.
4265 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4266 // +optional
4267 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4268
4269 // List of services
4270 repeated Service items = 2;
4271}
4272
4273// ServicePort contains information on service's port.
4274message ServicePort {
4275 // The name of this port within the service. This must be a DNS_LABEL.
4276 // All ports within a ServiceSpec must have unique names. This maps to
4277 // the 'Name' field in EndpointPort objects.
4278 // Optional if only one ServicePort is defined on this service.
4279 // +optional
4280 optional string name = 1;
4281
4282 // The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
4283 // Default is TCP.
4284 // +optional
4285 optional string protocol = 2;
4286
4287 // The port that will be exposed by this service.
4288 optional int32 port = 3;
4289
4290 // Number or name of the port to access on the pods targeted by the service.
4291 // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
4292 // If this is a string, it will be looked up as a named port in the
4293 // target Pod's container ports. If this is not specified, the value
4294 // of the 'port' field is used (an identity map).
4295 // This field is ignored for services with clusterIP=None, and should be
4296 // omitted or set equal to the 'port' field.
4297 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
4298 // +optional
4299 optional k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;
4300
4301 // The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
4302 // Usually assigned by the system. If specified, it will be allocated to the service
4303 // if unused or else creation of the service will fail.
4304 // Default is to auto-allocate a port if the ServiceType of this Service requires one.
4305 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
4306 // +optional
4307 optional int32 nodePort = 5;
4308}
4309
4310// ServiceProxyOptions is the query options to a Service's proxy call.
4311message ServiceProxyOptions {
4312 // Path is the part of URLs that include service endpoints, suffixes,
4313 // and parameters to use for the current proxy request to service.
4314 // For example, the whole request URL is
4315 // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
4316 // Path is _search?q=user:kimchy.
4317 // +optional
4318 optional string path = 1;
4319}
4320
4321// ServiceSpec describes the attributes that a user creates on a service.
4322message ServiceSpec {
4323 // The list of ports that are exposed by this service.
4324 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4325 // +patchMergeKey=port
4326 // +patchStrategy=merge
4327 // +listType=map
4328 // +listMapKey=port
4329 // +listMapKey=protocol
4330 repeated ServicePort ports = 1;
4331
4332 // Route service traffic to pods with label keys and values matching this
4333 // selector. If empty or not present, the service is assumed to have an
4334 // external process managing its endpoints, which Kubernetes will not
4335 // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
4336 // Ignored if type is ExternalName.
4337 // More info: https://kubernetes.io/docs/concepts/services-networking/service/
4338 // +optional
4339 map<string, string> selector = 2;
4340
4341 // clusterIP is the IP address of the service and is usually assigned
4342 // randomly by the master. If an address is specified manually and is not in
4343 // use by others, it will be allocated to the service; otherwise, creation
4344 // of the service will fail. This field can not be changed through updates.
4345 // Valid values are "None", empty string (""), or a valid IP address. "None"
4346 // can be specified for headless services when proxying is not required.
4347 // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if
4348 // type is ExternalName.
4349 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4350 // +optional
4351 optional string clusterIP = 3;
4352
4353 // type determines how the Service is exposed. Defaults to ClusterIP. Valid
4354 // options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
4355 // "ExternalName" maps to the specified externalName.
4356 // "ClusterIP" allocates a cluster-internal IP address for load-balancing to
4357 // endpoints. Endpoints are determined by the selector or if that is not
4358 // specified, by manual construction of an Endpoints object. If clusterIP is
4359 // "None", no virtual IP is allocated and the endpoints are published as a
4360 // set of endpoints rather than a stable IP.
4361 // "NodePort" builds on ClusterIP and allocates a port on every node which
4362 // routes to the clusterIP.
4363 // "LoadBalancer" builds on NodePort and creates an
4364 // external load-balancer (if supported in the current cloud) which routes
4365 // to the clusterIP.
4366 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
4367 // +optional
4368 optional string type = 4;
4369
4370 // externalIPs is a list of IP addresses for which nodes in the cluster
4371 // will also accept traffic for this service. These IPs are not managed by
4372 // Kubernetes. The user is responsible for ensuring that traffic arrives
4373 // at a node with this IP. A common example is external load-balancers
4374 // that are not part of the Kubernetes system.
4375 // +optional
4376 repeated string externalIPs = 5;
4377
4378 // Supports "ClientIP" and "None". Used to maintain session affinity.
4379 // Enable client IP based session affinity.
4380 // Must be ClientIP or None.
4381 // Defaults to None.
4382 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4383 // +optional
4384 optional string sessionAffinity = 7;
4385
4386 // Only applies to Service Type: LoadBalancer
4387 // LoadBalancer will get created with the IP specified in this field.
4388 // This feature depends on whether the underlying cloud-provider supports specifying
4389 // the loadBalancerIP when a load balancer is created.
4390 // This field will be ignored if the cloud-provider does not support the feature.
4391 // +optional
4392 optional string loadBalancerIP = 8;
4393
4394 // If specified and supported by the platform, this will restrict traffic through the cloud-provider
4395 // load-balancer will be restricted to the specified client IPs. This field will be ignored if the
4396 // cloud-provider does not support the feature."
4397 // More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/
4398 // +optional
4399 repeated string loadBalancerSourceRanges = 9;
4400
4401 // externalName is the external reference that kubedns or equivalent will
4402 // return as a CNAME record for this service. No proxying will be involved.
4403 // Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
4404 // and requires Type to be ExternalName.
4405 // +optional
4406 optional string externalName = 10;
4407
4408 // externalTrafficPolicy denotes if this Service desires to route external
4409 // traffic to node-local or cluster-wide endpoints. "Local" preserves the
4410 // client source IP and avoids a second hop for LoadBalancer and Nodeport
4411 // type services, but risks potentially imbalanced traffic spreading.
4412 // "Cluster" obscures the client source IP and may cause a second hop to
4413 // another node, but should have good overall load-spreading.
4414 // +optional
4415 optional string externalTrafficPolicy = 11;
4416
4417 // healthCheckNodePort specifies the healthcheck nodePort for the service.
4418 // If not specified, HealthCheckNodePort is created by the service api
4419 // backend with the allocated nodePort. Will use user-specified nodePort value
4420 // if specified by the client. Only effects when Type is set to LoadBalancer
4421 // and ExternalTrafficPolicy is set to Local.
4422 // +optional
4423 optional int32 healthCheckNodePort = 12;
4424
4425 // publishNotReadyAddresses, when set to true, indicates that DNS implementations
4426 // must publish the notReadyAddresses of subsets for the Endpoints associated with
4427 // the Service. The default value is false.
4428 // The primary use case for setting this field is to use a StatefulSet's Headless Service
4429 // to propagate SRV records for its Pods without respect to their readiness for purpose
4430 // of peer discovery.
4431 // +optional
4432 optional bool publishNotReadyAddresses = 13;
4433
4434 // sessionAffinityConfig contains the configurations of session affinity.
4435 // +optional
4436 optional SessionAffinityConfig sessionAffinityConfig = 14;
4437}
4438
4439// ServiceStatus represents the current status of a service.
4440message ServiceStatus {
4441 // LoadBalancer contains the current status of the load-balancer,
4442 // if one is present.
4443 // +optional
4444 optional LoadBalancerStatus loadBalancer = 1;
4445}
4446
4447// SessionAffinityConfig represents the configurations of session affinity.
4448message SessionAffinityConfig {
4449 // clientIP contains the configurations of Client IP based session affinity.
4450 // +optional
4451 optional ClientIPConfig clientIP = 1;
4452}
4453
4454// Represents a StorageOS persistent volume resource.
4455message StorageOSPersistentVolumeSource {
4456 // VolumeName is the human-readable name of the StorageOS volume. Volume
4457 // names are only unique within a namespace.
4458 optional string volumeName = 1;
4459
4460 // VolumeNamespace specifies the scope of the volume within StorageOS. If no
4461 // namespace is specified then the Pod's namespace will be used. This allows the
4462 // Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
4463 // Set VolumeName to any name to override the default behaviour.
4464 // Set to "default" if you are not using namespaces within StorageOS.
4465 // Namespaces that do not pre-exist within StorageOS will be created.
4466 // +optional
4467 optional string volumeNamespace = 2;
4468
4469 // Filesystem type to mount.
4470 // Must be a filesystem type supported by the host operating system.
4471 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4472 // +optional
4473 optional string fsType = 3;
4474
4475 // Defaults to false (read/write). ReadOnly here will force
4476 // the ReadOnly setting in VolumeMounts.
4477 // +optional
4478 optional bool readOnly = 4;
4479
4480 // SecretRef specifies the secret to use for obtaining the StorageOS API
4481 // credentials. If not specified, default values will be attempted.
4482 // +optional
4483 optional ObjectReference secretRef = 5;
4484}
4485
4486// Represents a StorageOS persistent volume resource.
4487message StorageOSVolumeSource {
4488 // VolumeName is the human-readable name of the StorageOS volume. Volume
4489 // names are only unique within a namespace.
4490 optional string volumeName = 1;
4491
4492 // VolumeNamespace specifies the scope of the volume within StorageOS. If no
4493 // namespace is specified then the Pod's namespace will be used. This allows the
4494 // Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
4495 // Set VolumeName to any name to override the default behaviour.
4496 // Set to "default" if you are not using namespaces within StorageOS.
4497 // Namespaces that do not pre-exist within StorageOS will be created.
4498 // +optional
4499 optional string volumeNamespace = 2;
4500
4501 // Filesystem type to mount.
4502 // Must be a filesystem type supported by the host operating system.
4503 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4504 // +optional
4505 optional string fsType = 3;
4506
4507 // Defaults to false (read/write). ReadOnly here will force
4508 // the ReadOnly setting in VolumeMounts.
4509 // +optional
4510 optional bool readOnly = 4;
4511
4512 // SecretRef specifies the secret to use for obtaining the StorageOS API
4513 // credentials. If not specified, default values will be attempted.
4514 // +optional
4515 optional LocalObjectReference secretRef = 5;
4516}
4517
4518// Sysctl defines a kernel parameter to be set
4519message Sysctl {
4520 // Name of a property to set
4521 optional string name = 1;
4522
4523 // Value of a property to set
4524 optional string value = 2;
4525}
4526
4527// TCPSocketAction describes an action based on opening a socket
4528message TCPSocketAction {
4529 // Number or name of the port to access on the container.
4530 // Number must be in the range 1 to 65535.
4531 // Name must be an IANA_SVC_NAME.
4532 optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;
4533
4534 // Optional: Host name to connect to, defaults to the pod IP.
4535 // +optional
4536 optional string host = 2;
4537}
4538
4539// The node this Taint is attached to has the "effect" on
4540// any pod that does not tolerate the Taint.
4541message Taint {
4542 // Required. The taint key to be applied to a node.
4543 optional string key = 1;
4544
4545 // Required. The taint value corresponding to the taint key.
4546 // +optional
4547 optional string value = 2;
4548
4549 // Required. The effect of the taint on pods
4550 // that do not tolerate the taint.
4551 // Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
4552 optional string effect = 3;
4553
4554 // TimeAdded represents the time at which the taint was added.
4555 // It is only written for NoExecute taints.
4556 // +optional
4557 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
4558}
4559
4560// The pod this Toleration is attached to tolerates any taint that matches
4561// the triple <key,value,effect> using the matching operator <operator>.
4562message Toleration {
4563 // Key is the taint key that the toleration applies to. Empty means match all taint keys.
4564 // If the key is empty, operator must be Exists; this combination means to match all values and all keys.
4565 // +optional
4566 optional string key = 1;
4567
4568 // Operator represents a key's relationship to the value.
4569 // Valid operators are Exists and Equal. Defaults to Equal.
4570 // Exists is equivalent to wildcard for value, so that a pod can
4571 // tolerate all taints of a particular category.
4572 // +optional
4573 optional string operator = 2;
4574
4575 // Value is the taint value the toleration matches to.
4576 // If the operator is Exists, the value should be empty, otherwise just a regular string.
4577 // +optional
4578 optional string value = 3;
4579
4580 // Effect indicates the taint effect to match. Empty means match all taint effects.
4581 // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
4582 // +optional
4583 optional string effect = 4;
4584
4585 // TolerationSeconds represents the period of time the toleration (which must be
4586 // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
4587 // it is not set, which means tolerate the taint forever (do not evict). Zero and
4588 // negative values will be treated as 0 (evict immediately) by the system.
4589 // +optional
4590 optional int64 tolerationSeconds = 5;
4591}
4592
4593// A topology selector requirement is a selector that matches given label.
4594// This is an alpha feature and may change in the future.
4595message TopologySelectorLabelRequirement {
4596 // The label key that the selector applies to.
4597 optional string key = 1;
4598
4599 // An array of string values. One value must match the label to be selected.
4600 // Each entry in Values is ORed.
4601 repeated string values = 2;
4602}
4603
4604// A topology selector term represents the result of label queries.
4605// A null or empty topology selector term matches no objects.
4606// The requirements of them are ANDed.
4607// It provides a subset of functionality as NodeSelectorTerm.
4608// This is an alpha feature and may change in the future.
4609message TopologySelectorTerm {
4610 // A list of topology selector requirements by labels.
4611 // +optional
4612 repeated TopologySelectorLabelRequirement matchLabelExpressions = 1;
4613}
4614
4615// TypedLocalObjectReference contains enough information to let you locate the
4616// typed referenced object inside the same namespace.
4617message TypedLocalObjectReference {
4618 // APIGroup is the group for the resource being referenced.
4619 // If APIGroup is not specified, the specified Kind must be in the core API group.
4620 // For any other third-party types, APIGroup is required.
4621 // +optional
4622 optional string apiGroup = 1;
4623
4624 // Kind is the type of resource being referenced
4625 optional string kind = 2;
4626
4627 // Name is the name of resource being referenced
4628 optional string name = 3;
4629}
4630
4631// Volume represents a named volume in a pod that may be accessed by any container in the pod.
4632message Volume {
4633 // Volume's name.
4634 // Must be a DNS_LABEL and unique within the pod.
4635 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
4636 optional string name = 1;
4637
4638 // VolumeSource represents the location and type of the mounted volume.
4639 // If not specified, the Volume is implied to be an EmptyDir.
4640 // This implied behavior is deprecated and will be removed in a future version.
4641 optional VolumeSource volumeSource = 2;
4642}
4643
4644// volumeDevice describes a mapping of a raw block device within a container.
4645message VolumeDevice {
4646 // name must match the name of a persistentVolumeClaim in the pod
4647 optional string name = 1;
4648
4649 // devicePath is the path inside of the container that the device will be mapped to.
4650 optional string devicePath = 2;
4651}
4652
4653// VolumeMount describes a mounting of a Volume within a container.
4654message VolumeMount {
4655 // This must match the Name of a Volume.
4656 optional string name = 1;
4657
4658 // Mounted read-only if true, read-write otherwise (false or unspecified).
4659 // Defaults to false.
4660 // +optional
4661 optional bool readOnly = 2;
4662
4663 // Path within the container at which the volume should be mounted. Must
4664 // not contain ':'.
4665 optional string mountPath = 3;
4666
4667 // Path within the volume from which the container's volume should be mounted.
4668 // Defaults to "" (volume's root).
4669 // +optional
4670 optional string subPath = 4;
4671
4672 // mountPropagation determines how mounts are propagated from the host
4673 // to container and the other way around.
4674 // When not set, MountPropagationNone is used.
4675 // This field is beta in 1.10.
4676 // +optional
4677 optional string mountPropagation = 5;
4678
4679 // Expanded path within the volume from which the container's volume should be mounted.
4680 // Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
4681 // Defaults to "" (volume's root).
4682 // SubPathExpr and SubPath are mutually exclusive.
4683 // This field is beta in 1.15.
4684 // +optional
4685 optional string subPathExpr = 6;
4686}
4687
4688// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
4689message VolumeNodeAffinity {
4690 // Required specifies hard node constraints that must be met.
4691 optional NodeSelector required = 1;
4692}
4693
4694// Projection that may be projected along with other supported volume types
4695message VolumeProjection {
4696 // information about the secret data to project
4697 // +optional
4698 optional SecretProjection secret = 1;
4699
4700 // information about the downwardAPI data to project
4701 // +optional
4702 optional DownwardAPIProjection downwardAPI = 2;
4703
4704 // information about the configMap data to project
4705 // +optional
4706 optional ConfigMapProjection configMap = 3;
4707
4708 // information about the serviceAccountToken data to project
4709 // +optional
4710 optional ServiceAccountTokenProjection serviceAccountToken = 4;
4711}
4712
4713// Represents the source of a volume to mount.
4714// Only one of its members may be specified.
4715message VolumeSource {
4716 // HostPath represents a pre-existing file or directory on the host
4717 // machine that is directly exposed to the container. This is generally
4718 // used for system agents or other privileged things that are allowed
4719 // to see the host machine. Most containers will NOT need this.
4720 // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
4721 // ---
4722 // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
4723 // mount host directories as read/write.
4724 // +optional
4725 optional HostPathVolumeSource hostPath = 1;
4726
4727 // EmptyDir represents a temporary directory that shares a pod's lifetime.
4728 // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
4729 // +optional
4730 optional EmptyDirVolumeSource emptyDir = 2;
4731
4732 // GCEPersistentDisk represents a GCE Disk resource that is attached to a
4733 // kubelet's host machine and then exposed to the pod.
4734 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
4735 // +optional
4736 optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3;
4737
4738 // AWSElasticBlockStore represents an AWS Disk resource that is attached to a
4739 // kubelet's host machine and then exposed to the pod.
4740 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
4741 // +optional
4742 optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;
4743
4744 // GitRepo represents a git repository at a particular revision.
4745 // DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
4746 // EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
4747 // into the Pod's container.
4748 // +optional
4749 optional GitRepoVolumeSource gitRepo = 5;
4750
4751 // Secret represents a secret that should populate this volume.
4752 // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
4753 // +optional
4754 optional SecretVolumeSource secret = 6;
4755
4756 // NFS represents an NFS mount on the host that shares a pod's lifetime
4757 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
4758 // +optional
4759 optional NFSVolumeSource nfs = 7;
4760
4761 // ISCSI represents an ISCSI Disk resource that is attached to a
4762 // kubelet's host machine and then exposed to the pod.
4763 // More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md
4764 // +optional
4765 optional ISCSIVolumeSource iscsi = 8;
4766
4767 // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
4768 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
4769 // +optional
4770 optional GlusterfsVolumeSource glusterfs = 9;
4771
4772 // PersistentVolumeClaimVolumeSource represents a reference to a
4773 // PersistentVolumeClaim in the same namespace.
4774 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
4775 // +optional
4776 optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;
4777
4778 // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
4779 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
4780 // +optional
4781 optional RBDVolumeSource rbd = 11;
4782
4783 // FlexVolume represents a generic volume resource that is
4784 // provisioned/attached using an exec based plugin.
4785 // +optional
4786 optional FlexVolumeSource flexVolume = 12;
4787
4788 // Cinder represents a cinder volume attached and mounted on kubelets host machine
4789 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
4790 // +optional
4791 optional CinderVolumeSource cinder = 13;
4792
4793 // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
4794 // +optional
4795 optional CephFSVolumeSource cephfs = 14;
4796
4797 // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
4798 // +optional
4799 optional FlockerVolumeSource flocker = 15;
4800
4801 // DownwardAPI represents downward API about the pod that should populate this volume
4802 // +optional
4803 optional DownwardAPIVolumeSource downwardAPI = 16;
4804
4805 // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
4806 // +optional
4807 optional FCVolumeSource fc = 17;
4808
4809 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
4810 // +optional
4811 optional AzureFileVolumeSource azureFile = 18;
4812
4813 // ConfigMap represents a configMap that should populate this volume
4814 // +optional
4815 optional ConfigMapVolumeSource configMap = 19;
4816
4817 // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
4818 // +optional
4819 optional VsphereVirtualDiskVolumeSource vsphereVolume = 20;
4820
4821 // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
4822 // +optional
4823 optional QuobyteVolumeSource quobyte = 21;
4824
4825 // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4826 // +optional
4827 optional AzureDiskVolumeSource azureDisk = 22;
4828
4829 // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
4830 optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;
4831
4832 // Items for all in one resources secrets, configmaps, and downward API
4833 optional ProjectedVolumeSource projected = 26;
4834
4835 // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
4836 // +optional
4837 optional PortworxVolumeSource portworxVolume = 24;
4838
4839 // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
4840 // +optional
4841 optional ScaleIOVolumeSource scaleIO = 25;
4842
4843 // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
4844 // +optional
4845 optional StorageOSVolumeSource storageos = 27;
4846
4847 // CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature).
4848 // +optional
4849 optional CSIVolumeSource csi = 28;
4850}
4851
4852// Represents a vSphere volume resource.
4853message VsphereVirtualDiskVolumeSource {
4854 // Path that identifies vSphere volume vmdk
4855 optional string volumePath = 1;
4856
4857 // Filesystem type to mount.
4858 // Must be a filesystem type supported by the host operating system.
4859 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4860 // +optional
4861 optional string fsType = 2;
4862
4863 // Storage Policy Based Management (SPBM) profile name.
4864 // +optional
4865 optional string storagePolicyName = 3;
4866
4867 // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
4868 // +optional
4869 optional string storagePolicyID = 4;
4870}
4871
4872// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
4873message WeightedPodAffinityTerm {
4874 // weight associated with matching the corresponding podAffinityTerm,
4875 // in the range 1-100.
4876 optional int32 weight = 1;
4877
4878 // Required. A pod affinity term, associated with the corresponding weight.
4879 optional PodAffinityTerm podAffinityTerm = 2;
4880}
4881
4882// WindowsSecurityContextOptions contain Windows-specific options and credentials.
4883message WindowsSecurityContextOptions {
4884 // GMSACredentialSpecName is the name of the GMSA credential spec to use.
4885 // This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
4886 // +optional
4887 optional string gmsaCredentialSpecName = 1;
4888
4889 // GMSACredentialSpec is where the GMSA admission webhook
4890 // (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
4891 // GMSA credential spec named by the GMSACredentialSpecName field.
4892 // This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
4893 // +optional
4894 optional string gmsaCredentialSpec = 2;
4895}
4896