blob: bb88fb27cf72db5d4b8985723c2ac83c71a8630a [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;
Zack Williamse940c7a2019-08-21 14:25:39 -07003218}
3219
3220// PodStatus represents information about the status of a pod. Status may trail the actual
3221// state of a system, especially if the node that hosts the pod cannot contact the control
3222// plane.
3223message PodStatus {
3224 // The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle.
3225 // The conditions array, the reason and message fields, and the individual container status
3226 // arrays contain more detail about the pod's status.
3227 // There are five possible phase values:
3228 //
3229 // Pending: The pod has been accepted by the Kubernetes system, but one or more of the
3230 // container images has not been created. This includes time before being scheduled as
3231 // well as time spent downloading images over the network, which could take a while.
3232 // Running: The pod has been bound to a node, and all of the containers have been created.
3233 // At least one container is still running, or is in the process of starting or restarting.
3234 // Succeeded: All containers in the pod have terminated in success, and will not be restarted.
3235 // Failed: All containers in the pod have terminated, and at least one container has
3236 // terminated in failure. The container either exited with non-zero status or was terminated
3237 // by the system.
3238 // Unknown: For some reason the state of the pod could not be obtained, typically due to an
3239 // error in communicating with the host of the pod.
3240 //
3241 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
3242 // +optional
3243 optional string phase = 1;
3244
3245 // Current service state of pod.
3246 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
3247 // +optional
3248 // +patchMergeKey=type
3249 // +patchStrategy=merge
3250 repeated PodCondition conditions = 2;
3251
3252 // A human readable message indicating details about why the pod is in this condition.
3253 // +optional
3254 optional string message = 3;
3255
3256 // A brief CamelCase message indicating details about why the pod is in this state.
3257 // e.g. 'Evicted'
3258 // +optional
3259 optional string reason = 4;
3260
3261 // nominatedNodeName is set only when this pod preempts other pods on the node, but it cannot be
3262 // scheduled right away as preemption victims receive their graceful termination periods.
3263 // This field does not guarantee that the pod will be scheduled on this node. Scheduler may decide
3264 // to place the pod elsewhere if other nodes become available sooner. Scheduler may also decide to
3265 // give the resources on this node to a higher priority pod that is created after preemption.
3266 // As a result, this field may be different than PodSpec.nodeName when the pod is
3267 // scheduled.
3268 // +optional
3269 optional string nominatedNodeName = 11;
3270
3271 // IP address of the host to which the pod is assigned. Empty if not yet scheduled.
3272 // +optional
3273 optional string hostIP = 5;
3274
3275 // IP address allocated to the pod. Routable at least within the cluster.
3276 // Empty if not yet allocated.
3277 // +optional
3278 optional string podIP = 6;
3279
3280 // RFC 3339 date and time at which the object was acknowledged by the Kubelet.
3281 // This is before the Kubelet pulled the container image(s) for the pod.
3282 // +optional
3283 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time startTime = 7;
3284
3285 // The list has one entry per init container in the manifest. The most recent successful
3286 // init container will have ready = true, the most recently started container will have
3287 // startTime set.
3288 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
3289 repeated ContainerStatus initContainerStatuses = 10;
3290
3291 // The list has one entry per container in the manifest. Each entry is currently the output
3292 // of `docker inspect`.
3293 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
3294 // +optional
3295 repeated ContainerStatus containerStatuses = 8;
3296
3297 // The Quality of Service (QOS) classification assigned to the pod based on resource requirements
3298 // See PodQOSClass type for available QOS classes
3299 // More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md
3300 // +optional
3301 optional string qosClass = 9;
3302}
3303
3304// PodStatusResult is a wrapper for PodStatus returned by kubelet that can be encode/decoded
3305message PodStatusResult {
3306 // Standard object's metadata.
3307 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3308 // +optional
3309 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3310
3311 // Most recently observed status of the pod.
3312 // This data may not be up to date.
3313 // Populated by the system.
3314 // Read-only.
3315 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3316 // +optional
3317 optional PodStatus status = 2;
3318}
3319
3320// PodTemplate describes a template for creating copies of a predefined pod.
3321message PodTemplate {
3322 // Standard object's metadata.
3323 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3324 // +optional
3325 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3326
3327 // Template defines the pods that will be created from this pod template.
3328 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3329 // +optional
3330 optional PodTemplateSpec template = 2;
3331}
3332
3333// PodTemplateList is a list of PodTemplates.
3334message PodTemplateList {
3335 // Standard list metadata.
3336 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3337 // +optional
3338 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3339
3340 // List of pod templates
3341 repeated PodTemplate items = 2;
3342}
3343
3344// PodTemplateSpec describes the data a pod should have when created from a template
3345message PodTemplateSpec {
3346 // Standard object's metadata.
3347 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3348 // +optional
3349 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3350
3351 // Specification of the desired behavior of the pod.
3352 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3353 // +optional
3354 optional PodSpec spec = 2;
3355}
3356
3357// PortworxVolumeSource represents a Portworx volume resource.
3358message PortworxVolumeSource {
3359 // VolumeID uniquely identifies a Portworx volume
3360 optional string volumeID = 1;
3361
3362 // FSType represents the filesystem type to mount
3363 // Must be a filesystem type supported by the host operating system.
3364 // Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
3365 optional string fsType = 2;
3366
3367 // Defaults to false (read/write). ReadOnly here will force
3368 // the ReadOnly setting in VolumeMounts.
3369 // +optional
3370 optional bool readOnly = 3;
3371}
3372
3373// Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.
3374// +k8s:openapi-gen=false
3375message Preconditions {
3376 // Specifies the target UID.
3377 // +optional
3378 optional string uid = 1;
3379}
3380
3381// Describes a class of pods that should avoid this node.
3382message PreferAvoidPodsEntry {
3383 // The class of pods.
3384 optional PodSignature podSignature = 1;
3385
3386 // Time at which this entry was added to the list.
3387 // +optional
3388 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time evictionTime = 2;
3389
3390 // (brief) reason why this entry was added to the list.
3391 // +optional
3392 optional string reason = 3;
3393
3394 // Human readable message indicating why this entry was added to the list.
3395 // +optional
3396 optional string message = 4;
3397}
3398
3399// An empty preferred scheduling term matches all objects with implicit weight 0
3400// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
3401message PreferredSchedulingTerm {
3402 // Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
3403 optional int32 weight = 1;
3404
3405 // A node selector term, associated with the corresponding weight.
3406 optional NodeSelectorTerm preference = 2;
3407}
3408
3409// Probe describes a health check to be performed against a container to determine whether it is
3410// alive or ready to receive traffic.
3411message Probe {
3412 // The action taken to determine the health of a container
3413 optional Handler handler = 1;
3414
3415 // Number of seconds after the container has started before liveness probes are initiated.
3416 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
3417 // +optional
3418 optional int32 initialDelaySeconds = 2;
3419
3420 // Number of seconds after which the probe times out.
3421 // Defaults to 1 second. Minimum value is 1.
3422 // More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
3423 // +optional
3424 optional int32 timeoutSeconds = 3;
3425
3426 // How often (in seconds) to perform the probe.
3427 // Default to 10 seconds. Minimum value is 1.
3428 // +optional
3429 optional int32 periodSeconds = 4;
3430
3431 // Minimum consecutive successes for the probe to be considered successful after having failed.
3432 // Defaults to 1. Must be 1 for liveness. Minimum value is 1.
3433 // +optional
3434 optional int32 successThreshold = 5;
3435
3436 // Minimum consecutive failures for the probe to be considered failed after having succeeded.
3437 // Defaults to 3. Minimum value is 1.
3438 // +optional
3439 optional int32 failureThreshold = 6;
3440}
3441
3442// Represents a projected volume source
3443message ProjectedVolumeSource {
3444 // list of volume projections
3445 repeated VolumeProjection sources = 1;
3446
3447 // Mode bits to use on created files by default. Must be a value between
3448 // 0 and 0777.
3449 // Directories within the path are not affected by this setting.
3450 // This might be in conflict with other options that affect the file
3451 // mode, like fsGroup, and the result can be other mode bits set.
3452 // +optional
3453 optional int32 defaultMode = 2;
3454}
3455
3456// Represents a Quobyte mount that lasts the lifetime of a pod.
3457// Quobyte volumes do not support ownership management or SELinux relabeling.
3458message QuobyteVolumeSource {
3459 // Registry represents a single or multiple Quobyte Registry services
3460 // specified as a string as host:port pair (multiple entries are separated with commas)
3461 // which acts as the central registry for volumes
3462 optional string registry = 1;
3463
3464 // Volume is a string that references an already created Quobyte volume by name.
3465 optional string volume = 2;
3466
3467 // ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.
3468 // Defaults to false.
3469 // +optional
3470 optional bool readOnly = 3;
3471
3472 // User to map volume access to
3473 // Defaults to serivceaccount user
3474 // +optional
3475 optional string user = 4;
3476
3477 // Group to map volume access to
3478 // Default is no group
3479 // +optional
3480 optional string group = 5;
3481
3482 // Tenant owning the given Quobyte volume in the Backend
3483 // Used with dynamically provisioned Quobyte volumes, value is set by the plugin
3484 // +optional
3485 optional string tenant = 6;
3486}
3487
3488// Represents a Rados Block Device mount that lasts the lifetime of a pod.
3489// RBD volumes support ownership management and SELinux relabeling.
3490message RBDPersistentVolumeSource {
3491 // A collection of Ceph monitors.
3492 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3493 repeated string monitors = 1;
3494
3495 // The rados image name.
3496 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3497 optional string image = 2;
3498
3499 // Filesystem type of the volume that you want to mount.
3500 // Tip: Ensure that the filesystem type is supported by the host operating system.
3501 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
3502 // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
3503 // TODO: how do we prevent errors in the filesystem from compromising the machine
3504 // +optional
3505 optional string fsType = 3;
3506
3507 // The rados pool name.
3508 // Default is rbd.
3509 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3510 // +optional
3511 optional string pool = 4;
3512
3513 // The rados user name.
3514 // Default is admin.
3515 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3516 // +optional
3517 optional string user = 5;
3518
3519 // Keyring is the path to key ring for RBDUser.
3520 // Default is /etc/ceph/keyring.
3521 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3522 // +optional
3523 optional string keyring = 6;
3524
3525 // SecretRef is name of the authentication secret for RBDUser. If provided
3526 // overrides keyring.
3527 // Default is nil.
3528 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3529 // +optional
3530 optional SecretReference secretRef = 7;
3531
3532 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
3533 // Defaults to false.
3534 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3535 // +optional
3536 optional bool readOnly = 8;
3537}
3538
3539// Represents a Rados Block Device mount that lasts the lifetime of a pod.
3540// RBD volumes support ownership management and SELinux relabeling.
3541message RBDVolumeSource {
3542 // A collection of Ceph monitors.
3543 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3544 repeated string monitors = 1;
3545
3546 // The rados image name.
3547 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3548 optional string image = 2;
3549
3550 // Filesystem type of the volume that you want to mount.
3551 // Tip: Ensure that the filesystem type is supported by the host operating system.
3552 // Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
3553 // More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
3554 // TODO: how do we prevent errors in the filesystem from compromising the machine
3555 // +optional
3556 optional string fsType = 3;
3557
3558 // The rados pool name.
3559 // Default is rbd.
3560 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3561 // +optional
3562 optional string pool = 4;
3563
3564 // The rados user name.
3565 // Default is admin.
3566 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3567 // +optional
3568 optional string user = 5;
3569
3570 // Keyring is the path to key ring for RBDUser.
3571 // Default is /etc/ceph/keyring.
3572 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3573 // +optional
3574 optional string keyring = 6;
3575
3576 // SecretRef is name of the authentication secret for RBDUser. If provided
3577 // overrides keyring.
3578 // Default is nil.
3579 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3580 // +optional
3581 optional LocalObjectReference secretRef = 7;
3582
3583 // ReadOnly here will force the ReadOnly setting in VolumeMounts.
3584 // Defaults to false.
3585 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md#how-to-use-it
3586 // +optional
3587 optional bool readOnly = 8;
3588}
3589
3590// RangeAllocation is not a public type.
3591message RangeAllocation {
3592 // Standard object's metadata.
3593 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3594 // +optional
3595 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3596
3597 // Range is string that identifies the range represented by 'data'.
3598 optional string range = 2;
3599
3600 // Data is a bit array containing all allocated addresses in the previous segment.
3601 optional bytes data = 3;
3602}
3603
3604// ReplicationController represents the configuration of a replication controller.
3605message ReplicationController {
3606 // If the Labels of a ReplicationController are empty, they are defaulted to
3607 // be the same as the Pod(s) that the replication controller manages.
3608 // Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3609 // +optional
3610 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3611
3612 // Spec defines the specification of the desired behavior of the replication controller.
3613 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3614 // +optional
3615 optional ReplicationControllerSpec spec = 2;
3616
3617 // Status is the most recently observed status of the replication controller.
3618 // This data may be out of date by some window of time.
3619 // Populated by the system.
3620 // Read-only.
3621 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3622 // +optional
3623 optional ReplicationControllerStatus status = 3;
3624}
3625
3626// ReplicationControllerCondition describes the state of a replication controller at a certain point.
3627message ReplicationControllerCondition {
3628 // Type of replication controller condition.
3629 optional string type = 1;
3630
3631 // Status of the condition, one of True, False, Unknown.
3632 optional string status = 2;
3633
3634 // The last time the condition transitioned from one status to another.
3635 // +optional
3636 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
3637
3638 // The reason for the condition's last transition.
3639 // +optional
3640 optional string reason = 4;
3641
3642 // A human readable message indicating details about the transition.
3643 // +optional
3644 optional string message = 5;
3645}
3646
3647// ReplicationControllerList is a collection of replication controllers.
3648message ReplicationControllerList {
3649 // Standard list metadata.
3650 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3651 // +optional
3652 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3653
3654 // List of replication controllers.
3655 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
3656 repeated ReplicationController items = 2;
3657}
3658
3659// ReplicationControllerSpec is the specification of a replication controller.
3660message ReplicationControllerSpec {
3661 // Replicas is the number of desired replicas.
3662 // This is a pointer to distinguish between explicit zero and unspecified.
3663 // Defaults to 1.
3664 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
3665 // +optional
3666 optional int32 replicas = 1;
3667
3668 // Minimum number of seconds for which a newly created pod should be ready
3669 // without any of its container crashing, for it to be considered available.
3670 // Defaults to 0 (pod will be considered available as soon as it is ready)
3671 // +optional
3672 optional int32 minReadySeconds = 4;
3673
3674 // Selector is a label query over pods that should match the Replicas count.
3675 // If Selector is empty, it is defaulted to the labels present on the Pod template.
3676 // Label keys and values that must match in order to be controlled by this replication
3677 // controller, if empty defaulted to labels on Pod template.
3678 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
3679 // +optional
3680 map<string, string> selector = 2;
3681
3682 // Template is the object that describes the pod that will be created if
3683 // insufficient replicas are detected. This takes precedence over a TemplateRef.
3684 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
3685 // +optional
3686 optional PodTemplateSpec template = 3;
3687}
3688
3689// ReplicationControllerStatus represents the current status of a replication
3690// controller.
3691message ReplicationControllerStatus {
3692 // Replicas is the most recently oberved number of replicas.
3693 // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
3694 optional int32 replicas = 1;
3695
3696 // The number of pods that have labels matching the labels of the pod template of the replication controller.
3697 // +optional
3698 optional int32 fullyLabeledReplicas = 2;
3699
3700 // The number of ready replicas for this replication controller.
3701 // +optional
3702 optional int32 readyReplicas = 4;
3703
3704 // The number of available replicas (ready for at least minReadySeconds) for this replication controller.
3705 // +optional
3706 optional int32 availableReplicas = 5;
3707
3708 // ObservedGeneration reflects the generation of the most recently observed replication controller.
3709 // +optional
3710 optional int64 observedGeneration = 3;
3711
3712 // Represents the latest available observations of a replication controller's current state.
3713 // +optional
3714 // +patchMergeKey=type
3715 // +patchStrategy=merge
3716 repeated ReplicationControllerCondition conditions = 6;
3717}
3718
3719// ResourceFieldSelector represents container resources (cpu, memory) and their output format
3720message ResourceFieldSelector {
3721 // Container name: required for volumes, optional for env vars
3722 // +optional
3723 optional string containerName = 1;
3724
3725 // Required: resource to select
3726 optional string resource = 2;
3727
3728 // Specifies the output format of the exposed resources, defaults to "1"
3729 // +optional
3730 optional k8s.io.apimachinery.pkg.api.resource.Quantity divisor = 3;
3731}
3732
3733// ResourceQuota sets aggregate quota restrictions enforced per namespace
3734message ResourceQuota {
3735 // Standard object's metadata.
3736 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3737 // +optional
3738 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3739
3740 // Spec defines the desired quota.
3741 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3742 // +optional
3743 optional ResourceQuotaSpec spec = 2;
3744
3745 // Status defines the actual enforced quota and its current usage.
3746 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
3747 // +optional
3748 optional ResourceQuotaStatus status = 3;
3749}
3750
3751// ResourceQuotaList is a list of ResourceQuota items.
3752message ResourceQuotaList {
3753 // Standard list metadata.
3754 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
3755 // +optional
3756 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
3757
3758 // Items is a list of ResourceQuota objects.
3759 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3760 repeated ResourceQuota items = 2;
3761}
3762
3763// ResourceQuotaSpec defines the desired hard limits to enforce for Quota.
3764message ResourceQuotaSpec {
3765 // hard is the set of desired hard limits for each named resource.
3766 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3767 // +optional
3768 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
3769
3770 // A collection of filters that must match each object tracked by a quota.
3771 // If not specified, the quota matches all objects.
3772 // +optional
3773 repeated string scopes = 2;
3774
3775 // scopeSelector is also a collection of filters like scopes that must match each object tracked by a quota
3776 // but expressed using ScopeSelectorOperator in combination with possible values.
3777 // For a resource to match, both scopes AND scopeSelector (if specified in spec), must be matched.
3778 // +optional
3779 optional ScopeSelector scopeSelector = 3;
3780}
3781
3782// ResourceQuotaStatus defines the enforced hard limits and observed use.
3783message ResourceQuotaStatus {
3784 // Hard is the set of enforced hard limits for each named resource.
3785 // More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/
3786 // +optional
3787 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> hard = 1;
3788
3789 // Used is the current observed total usage of the resource in the namespace.
3790 // +optional
3791 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> used = 2;
3792}
3793
3794// ResourceRequirements describes the compute resource requirements.
3795message ResourceRequirements {
3796 // Limits describes the maximum amount of compute resources allowed.
3797 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
3798 // +optional
3799 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> limits = 1;
3800
3801 // Requests describes the minimum amount of compute resources required.
3802 // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
3803 // otherwise to an implementation-defined value.
3804 // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
3805 // +optional
3806 map<string, k8s.io.apimachinery.pkg.api.resource.Quantity> requests = 2;
3807}
3808
3809// SELinuxOptions are the labels to be applied to the container
3810message SELinuxOptions {
3811 // User is a SELinux user label that applies to the container.
3812 // +optional
3813 optional string user = 1;
3814
3815 // Role is a SELinux role label that applies to the container.
3816 // +optional
3817 optional string role = 2;
3818
3819 // Type is a SELinux type label that applies to the container.
3820 // +optional
3821 optional string type = 3;
3822
3823 // Level is SELinux level label that applies to the container.
3824 // +optional
3825 optional string level = 4;
3826}
3827
3828// ScaleIOPersistentVolumeSource represents a persistent ScaleIO volume
3829message ScaleIOPersistentVolumeSource {
3830 // The host address of the ScaleIO API Gateway.
3831 optional string gateway = 1;
3832
3833 // The name of the storage system as configured in ScaleIO.
3834 optional string system = 2;
3835
3836 // SecretRef references to the secret for ScaleIO user and other
3837 // sensitive information. If this is not provided, Login operation will fail.
3838 optional SecretReference secretRef = 3;
3839
3840 // Flag to enable/disable SSL communication with Gateway, default false
3841 // +optional
3842 optional bool sslEnabled = 4;
3843
3844 // The name of the ScaleIO Protection Domain for the configured storage.
3845 // +optional
3846 optional string protectionDomain = 5;
3847
3848 // The ScaleIO Storage Pool associated with the protection domain.
3849 // +optional
3850 optional string storagePool = 6;
3851
3852 // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
3853 // Default is ThinProvisioned.
3854 // +optional
3855 optional string storageMode = 7;
3856
3857 // The name of a volume already created in the ScaleIO system
3858 // that is associated with this volume source.
3859 optional string volumeName = 8;
3860
3861 // Filesystem type to mount.
3862 // Must be a filesystem type supported by the host operating system.
3863 // Ex. "ext4", "xfs", "ntfs".
3864 // Default is "xfs"
3865 // +optional
3866 optional string fsType = 9;
3867
3868 // Defaults to false (read/write). ReadOnly here will force
3869 // the ReadOnly setting in VolumeMounts.
3870 // +optional
3871 optional bool readOnly = 10;
3872}
3873
3874// ScaleIOVolumeSource represents a persistent ScaleIO volume
3875message ScaleIOVolumeSource {
3876 // The host address of the ScaleIO API Gateway.
3877 optional string gateway = 1;
3878
3879 // The name of the storage system as configured in ScaleIO.
3880 optional string system = 2;
3881
3882 // SecretRef references to the secret for ScaleIO user and other
3883 // sensitive information. If this is not provided, Login operation will fail.
3884 optional LocalObjectReference secretRef = 3;
3885
3886 // Flag to enable/disable SSL communication with Gateway, default false
3887 // +optional
3888 optional bool sslEnabled = 4;
3889
3890 // The name of the ScaleIO Protection Domain for the configured storage.
3891 // +optional
3892 optional string protectionDomain = 5;
3893
3894 // The ScaleIO Storage Pool associated with the protection domain.
3895 // +optional
3896 optional string storagePool = 6;
3897
3898 // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
3899 // Default is ThinProvisioned.
3900 // +optional
3901 optional string storageMode = 7;
3902
3903 // The name of a volume already created in the ScaleIO system
3904 // that is associated with this volume source.
3905 optional string volumeName = 8;
3906
3907 // Filesystem type to mount.
3908 // Must be a filesystem type supported by the host operating system.
3909 // Ex. "ext4", "xfs", "ntfs".
3910 // Default is "xfs".
3911 // +optional
3912 optional string fsType = 9;
3913
3914 // Defaults to false (read/write). ReadOnly here will force
3915 // the ReadOnly setting in VolumeMounts.
3916 // +optional
3917 optional bool readOnly = 10;
3918}
3919
3920// A scope selector represents the AND of the selectors represented
3921// by the scoped-resource selector requirements.
3922message ScopeSelector {
3923 // A list of scope selector requirements by scope of the resources.
3924 // +optional
3925 repeated ScopedResourceSelectorRequirement matchExpressions = 1;
3926}
3927
3928// A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator
3929// that relates the scope name and values.
3930message ScopedResourceSelectorRequirement {
3931 // The name of the scope that the selector applies to.
3932 optional string scopeName = 1;
3933
3934 // Represents a scope's relationship to a set of values.
3935 // Valid operators are In, NotIn, Exists, DoesNotExist.
3936 optional string operator = 2;
3937
3938 // An array of string values. If the operator is In or NotIn,
3939 // the values array must be non-empty. If the operator is Exists or DoesNotExist,
3940 // the values array must be empty.
3941 // This array is replaced during a strategic merge patch.
3942 // +optional
3943 repeated string values = 3;
3944}
3945
3946// Secret holds secret data of a certain type. The total bytes of the values in
3947// the Data field must be less than MaxSecretSize bytes.
3948message Secret {
3949 // Standard object's metadata.
3950 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
3951 // +optional
3952 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
3953
3954 // Data contains the secret data. Each key must consist of alphanumeric
3955 // characters, '-', '_' or '.'. The serialized form of the secret data is a
3956 // base64 encoded string, representing the arbitrary (possibly non-string)
3957 // data value here. Described in https://tools.ietf.org/html/rfc4648#section-4
3958 // +optional
3959 map<string, bytes> data = 2;
3960
3961 // stringData allows specifying non-binary secret data in string form.
3962 // It is provided as a write-only convenience method.
3963 // All keys and values are merged into the data field on write, overwriting any existing values.
3964 // It is never output when reading from the API.
3965 // +k8s:conversion-gen=false
3966 // +optional
3967 map<string, string> stringData = 4;
3968
3969 // Used to facilitate programmatic handling of secret data.
3970 // +optional
3971 optional string type = 3;
3972}
3973
3974// SecretEnvSource selects a Secret to populate the environment
3975// variables with.
3976//
3977// The contents of the target Secret's Data field will represent the
3978// key-value pairs as environment variables.
3979message SecretEnvSource {
3980 // The Secret to select from.
3981 optional LocalObjectReference localObjectReference = 1;
3982
3983 // Specify whether the Secret must be defined
3984 // +optional
3985 optional bool optional = 2;
3986}
3987
3988// SecretKeySelector selects a key of a Secret.
3989message SecretKeySelector {
3990 // The name of the secret in the pod's namespace to select from.
3991 optional LocalObjectReference localObjectReference = 1;
3992
3993 // The key of the secret to select from. Must be a valid secret key.
3994 optional string key = 2;
3995
3996 // Specify whether the Secret or its key must be defined
3997 // +optional
3998 optional bool optional = 3;
3999}
4000
4001// SecretList is a list of Secret.
4002message SecretList {
4003 // Standard list metadata.
4004 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4005 // +optional
4006 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4007
4008 // Items is a list of secret objects.
4009 // More info: https://kubernetes.io/docs/concepts/configuration/secret
4010 repeated Secret items = 2;
4011}
4012
4013// Adapts a secret into a projected volume.
4014//
4015// The contents of the target Secret's Data field will be presented in a
4016// projected volume as files using the keys in the Data field as the file names.
4017// Note that this is identical to a secret volume source without the default
4018// mode.
4019message SecretProjection {
4020 optional LocalObjectReference localObjectReference = 1;
4021
4022 // If unspecified, each key-value pair in the Data field of the referenced
4023 // Secret will be projected into the volume as a file whose name is the
4024 // key and content is the value. If specified, the listed keys will be
4025 // projected into the specified paths, and unlisted keys will not be
4026 // present. If a key is specified which is not present in the Secret,
4027 // the volume setup will error unless it is marked optional. Paths must be
4028 // relative and may not contain the '..' path or start with '..'.
4029 // +optional
4030 repeated KeyToPath items = 2;
4031
4032 // Specify whether the Secret or its key must be defined
4033 // +optional
4034 optional bool optional = 4;
4035}
4036
4037// SecretReference represents a Secret Reference. It has enough information to retrieve secret
4038// in any namespace
4039message SecretReference {
4040 // Name is unique within a namespace to reference a secret resource.
4041 // +optional
4042 optional string name = 1;
4043
4044 // Namespace defines the space within which the secret name must be unique.
4045 // +optional
4046 optional string namespace = 2;
4047}
4048
4049// Adapts a Secret into a volume.
4050//
4051// The contents of the target Secret's Data field will be presented in a volume
4052// as files using the keys in the Data field as the file names.
4053// Secret volumes support ownership management and SELinux relabeling.
4054message SecretVolumeSource {
4055 // Name of the secret in the pod's namespace to use.
4056 // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
4057 // +optional
4058 optional string secretName = 1;
4059
4060 // If unspecified, each key-value pair in the Data field of the referenced
4061 // Secret will be projected into the volume as a file whose name is the
4062 // key and content is the value. If specified, the listed keys will be
4063 // projected into the specified paths, and unlisted keys will not be
4064 // present. If a key is specified which is not present in the Secret,
4065 // the volume setup will error unless it is marked optional. Paths must be
4066 // relative and may not contain the '..' path or start with '..'.
4067 // +optional
4068 repeated KeyToPath items = 2;
4069
4070 // Optional: mode bits to use on created files by default. Must be a
4071 // value between 0 and 0777. Defaults to 0644.
4072 // Directories within the path are not affected by this setting.
4073 // This might be in conflict with other options that affect the file
4074 // mode, like fsGroup, and the result can be other mode bits set.
4075 // +optional
4076 optional int32 defaultMode = 3;
4077
4078 // Specify whether the Secret or its keys must be defined
4079 // +optional
4080 optional bool optional = 4;
4081}
4082
4083// SecurityContext holds security configuration that will be applied to a container.
4084// Some fields are present in both SecurityContext and PodSecurityContext. When both
4085// are set, the values in SecurityContext take precedence.
4086message SecurityContext {
4087 // The capabilities to add/drop when running containers.
4088 // Defaults to the default set of capabilities granted by the container runtime.
4089 // +optional
4090 optional Capabilities capabilities = 1;
4091
4092 // Run container in privileged mode.
4093 // Processes in privileged containers are essentially equivalent to root on the host.
4094 // Defaults to false.
4095 // +optional
4096 optional bool privileged = 2;
4097
4098 // The SELinux context to be applied to the container.
4099 // If unspecified, the container runtime will allocate a random SELinux context for each
4100 // container. May also be set in PodSecurityContext. If set in both SecurityContext and
4101 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4102 // +optional
4103 optional SELinuxOptions seLinuxOptions = 3;
4104
4105 // Windows security options.
4106 // +optional
4107 optional WindowsSecurityContextOptions windowsOptions = 10;
4108
4109 // The UID to run the entrypoint of the container process.
4110 // Defaults to user specified in image metadata if unspecified.
4111 // 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 int64 runAsUser = 4;
4115
4116 // The GID to run the entrypoint of the container process.
4117 // Uses runtime default if unset.
4118 // May also be set in PodSecurityContext. If set in both SecurityContext and
4119 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4120 // +optional
4121 optional int64 runAsGroup = 8;
4122
4123 // Indicates that the container must run as a non-root user.
4124 // If true, the Kubelet will validate the image at runtime to ensure that it
4125 // does not run as UID 0 (root) and fail to start the container if it does.
4126 // If unset or false, no such validation will be performed.
4127 // May also be set in PodSecurityContext. If set in both SecurityContext and
4128 // PodSecurityContext, the value specified in SecurityContext takes precedence.
4129 // +optional
4130 optional bool runAsNonRoot = 5;
4131
4132 // Whether this container has a read-only root filesystem.
4133 // Default is false.
4134 // +optional
4135 optional bool readOnlyRootFilesystem = 6;
4136
4137 // AllowPrivilegeEscalation controls whether a process can gain more
4138 // privileges than its parent process. This bool directly controls if
4139 // the no_new_privs flag will be set on the container process.
4140 // AllowPrivilegeEscalation is true always when the container is:
4141 // 1) run as Privileged
4142 // 2) has CAP_SYS_ADMIN
4143 // +optional
4144 optional bool allowPrivilegeEscalation = 7;
4145
4146 // procMount denotes the type of proc mount to use for the containers.
4147 // The default is DefaultProcMount which uses the container runtime defaults for
4148 // readonly paths and masked paths.
4149 // This requires the ProcMountType feature flag to be enabled.
4150 // +optional
4151 optional string procMount = 9;
4152}
4153
4154// SerializedReference is a reference to serialized object.
4155message SerializedReference {
4156 // The reference to an object in the system.
4157 // +optional
4158 optional ObjectReference reference = 1;
4159}
4160
4161// Service is a named abstraction of software service (for example, mysql) consisting of local port
4162// (for example 3306) that the proxy listens on, and the selector that determines which pods
4163// will answer requests sent through the proxy.
4164message Service {
4165 // Standard object's metadata.
4166 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
4167 // +optional
4168 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
4169
4170 // Spec defines the behavior of a service.
4171 // https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
4172 // +optional
4173 optional ServiceSpec spec = 2;
4174
4175 // Most recently observed status of the service.
4176 // Populated by the system.
4177 // Read-only.
4178 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
4179 // +optional
4180 optional ServiceStatus status = 3;
4181}
4182
4183// ServiceAccount binds together:
4184// * a name, understood by users, and perhaps by peripheral systems, for an identity
4185// * a principal that can be authenticated and authorized
4186// * a set of secrets
4187message ServiceAccount {
4188 // Standard object's metadata.
4189 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
4190 // +optional
4191 optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
4192
4193 // Secrets is the list of secrets allowed to be used by pods running using this ServiceAccount.
4194 // More info: https://kubernetes.io/docs/concepts/configuration/secret
4195 // +optional
4196 // +patchMergeKey=name
4197 // +patchStrategy=merge
4198 repeated ObjectReference secrets = 2;
4199
4200 // ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
4201 // in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
4202 // can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
4203 // More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
4204 // +optional
4205 repeated LocalObjectReference imagePullSecrets = 3;
4206
4207 // AutomountServiceAccountToken indicates whether pods running as this service account should have an API token automatically mounted.
4208 // Can be overridden at the pod level.
4209 // +optional
4210 optional bool automountServiceAccountToken = 4;
4211}
4212
4213// ServiceAccountList is a list of ServiceAccount objects
4214message ServiceAccountList {
4215 // Standard list metadata.
4216 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4217 // +optional
4218 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4219
4220 // List of ServiceAccounts.
4221 // More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
4222 repeated ServiceAccount items = 2;
4223}
4224
4225// ServiceAccountTokenProjection represents a projected service account token
4226// volume. This projection can be used to insert a service account token into
4227// the pods runtime filesystem for use against APIs (Kubernetes API Server or
4228// otherwise).
4229message ServiceAccountTokenProjection {
4230 // Audience is the intended audience of the token. A recipient of a token
4231 // must identify itself with an identifier specified in the audience of the
4232 // token, and otherwise should reject the token. The audience defaults to the
4233 // identifier of the apiserver.
4234 // +optional
4235 optional string audience = 1;
4236
4237 // ExpirationSeconds is the requested duration of validity of the service
4238 // account token. As the token approaches expiration, the kubelet volume
4239 // plugin will proactively rotate the service account token. The kubelet will
4240 // start trying to rotate the token if the token is older than 80 percent of
4241 // its time to live or if the token is older than 24 hours.Defaults to 1 hour
4242 // and must be at least 10 minutes.
4243 // +optional
4244 optional int64 expirationSeconds = 2;
4245
4246 // Path is the path relative to the mount point of the file to project the
4247 // token into.
4248 optional string path = 3;
4249}
4250
4251// ServiceList holds a list of services.
4252message ServiceList {
4253 // Standard list metadata.
4254 // More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
4255 // +optional
4256 optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
4257
4258 // List of services
4259 repeated Service items = 2;
4260}
4261
4262// ServicePort contains information on service's port.
4263message ServicePort {
4264 // The name of this port within the service. This must be a DNS_LABEL.
4265 // All ports within a ServiceSpec must have unique names. This maps to
4266 // the 'Name' field in EndpointPort objects.
4267 // Optional if only one ServicePort is defined on this service.
4268 // +optional
4269 optional string name = 1;
4270
4271 // The IP protocol for this port. Supports "TCP", "UDP", and "SCTP".
4272 // Default is TCP.
4273 // +optional
4274 optional string protocol = 2;
4275
4276 // The port that will be exposed by this service.
4277 optional int32 port = 3;
4278
4279 // Number or name of the port to access on the pods targeted by the service.
4280 // Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
4281 // If this is a string, it will be looked up as a named port in the
4282 // target Pod's container ports. If this is not specified, the value
4283 // of the 'port' field is used (an identity map).
4284 // This field is ignored for services with clusterIP=None, and should be
4285 // omitted or set equal to the 'port' field.
4286 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
4287 // +optional
4288 optional k8s.io.apimachinery.pkg.util.intstr.IntOrString targetPort = 4;
4289
4290 // The port on each node on which this service is exposed when type=NodePort or LoadBalancer.
4291 // Usually assigned by the system. If specified, it will be allocated to the service
4292 // if unused or else creation of the service will fail.
4293 // Default is to auto-allocate a port if the ServiceType of this Service requires one.
4294 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
4295 // +optional
4296 optional int32 nodePort = 5;
4297}
4298
4299// ServiceProxyOptions is the query options to a Service's proxy call.
4300message ServiceProxyOptions {
4301 // Path is the part of URLs that include service endpoints, suffixes,
4302 // and parameters to use for the current proxy request to service.
4303 // For example, the whole request URL is
4304 // http://localhost/api/v1/namespaces/kube-system/services/elasticsearch-logging/_search?q=user:kimchy.
4305 // Path is _search?q=user:kimchy.
4306 // +optional
4307 optional string path = 1;
4308}
4309
4310// ServiceSpec describes the attributes that a user creates on a service.
4311message ServiceSpec {
4312 // The list of ports that are exposed by this service.
4313 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4314 // +patchMergeKey=port
4315 // +patchStrategy=merge
4316 // +listType=map
4317 // +listMapKey=port
4318 // +listMapKey=protocol
4319 repeated ServicePort ports = 1;
4320
4321 // Route service traffic to pods with label keys and values matching this
4322 // selector. If empty or not present, the service is assumed to have an
4323 // external process managing its endpoints, which Kubernetes will not
4324 // modify. Only applies to types ClusterIP, NodePort, and LoadBalancer.
4325 // Ignored if type is ExternalName.
4326 // More info: https://kubernetes.io/docs/concepts/services-networking/service/
4327 // +optional
4328 map<string, string> selector = 2;
4329
4330 // clusterIP is the IP address of the service and is usually assigned
4331 // randomly by the master. If an address is specified manually and is not in
4332 // use by others, it will be allocated to the service; otherwise, creation
4333 // of the service will fail. This field can not be changed through updates.
4334 // Valid values are "None", empty string (""), or a valid IP address. "None"
4335 // can be specified for headless services when proxying is not required.
4336 // Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored if
4337 // type is ExternalName.
4338 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4339 // +optional
4340 optional string clusterIP = 3;
4341
4342 // type determines how the Service is exposed. Defaults to ClusterIP. Valid
4343 // options are ExternalName, ClusterIP, NodePort, and LoadBalancer.
4344 // "ExternalName" maps to the specified externalName.
4345 // "ClusterIP" allocates a cluster-internal IP address for load-balancing to
4346 // endpoints. Endpoints are determined by the selector or if that is not
4347 // specified, by manual construction of an Endpoints object. If clusterIP is
4348 // "None", no virtual IP is allocated and the endpoints are published as a
4349 // set of endpoints rather than a stable IP.
4350 // "NodePort" builds on ClusterIP and allocates a port on every node which
4351 // routes to the clusterIP.
4352 // "LoadBalancer" builds on NodePort and creates an
4353 // external load-balancer (if supported in the current cloud) which routes
4354 // to the clusterIP.
4355 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
4356 // +optional
4357 optional string type = 4;
4358
4359 // externalIPs is a list of IP addresses for which nodes in the cluster
4360 // will also accept traffic for this service. These IPs are not managed by
4361 // Kubernetes. The user is responsible for ensuring that traffic arrives
4362 // at a node with this IP. A common example is external load-balancers
4363 // that are not part of the Kubernetes system.
4364 // +optional
4365 repeated string externalIPs = 5;
4366
4367 // Supports "ClientIP" and "None". Used to maintain session affinity.
4368 // Enable client IP based session affinity.
4369 // Must be ClientIP or None.
4370 // Defaults to None.
4371 // More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
4372 // +optional
4373 optional string sessionAffinity = 7;
4374
4375 // Only applies to Service Type: LoadBalancer
4376 // LoadBalancer will get created with the IP specified in this field.
4377 // This feature depends on whether the underlying cloud-provider supports specifying
4378 // the loadBalancerIP when a load balancer is created.
4379 // This field will be ignored if the cloud-provider does not support the feature.
4380 // +optional
4381 optional string loadBalancerIP = 8;
4382
4383 // If specified and supported by the platform, this will restrict traffic through the cloud-provider
4384 // load-balancer will be restricted to the specified client IPs. This field will be ignored if the
4385 // cloud-provider does not support the feature."
4386 // More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/
4387 // +optional
4388 repeated string loadBalancerSourceRanges = 9;
4389
4390 // externalName is the external reference that kubedns or equivalent will
4391 // return as a CNAME record for this service. No proxying will be involved.
4392 // Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
4393 // and requires Type to be ExternalName.
4394 // +optional
4395 optional string externalName = 10;
4396
4397 // externalTrafficPolicy denotes if this Service desires to route external
4398 // traffic to node-local or cluster-wide endpoints. "Local" preserves the
4399 // client source IP and avoids a second hop for LoadBalancer and Nodeport
4400 // type services, but risks potentially imbalanced traffic spreading.
4401 // "Cluster" obscures the client source IP and may cause a second hop to
4402 // another node, but should have good overall load-spreading.
4403 // +optional
4404 optional string externalTrafficPolicy = 11;
4405
4406 // healthCheckNodePort specifies the healthcheck nodePort for the service.
4407 // If not specified, HealthCheckNodePort is created by the service api
4408 // backend with the allocated nodePort. Will use user-specified nodePort value
4409 // if specified by the client. Only effects when Type is set to LoadBalancer
4410 // and ExternalTrafficPolicy is set to Local.
4411 // +optional
4412 optional int32 healthCheckNodePort = 12;
4413
4414 // publishNotReadyAddresses, when set to true, indicates that DNS implementations
4415 // must publish the notReadyAddresses of subsets for the Endpoints associated with
4416 // the Service. The default value is false.
4417 // The primary use case for setting this field is to use a StatefulSet's Headless Service
4418 // to propagate SRV records for its Pods without respect to their readiness for purpose
4419 // of peer discovery.
4420 // +optional
4421 optional bool publishNotReadyAddresses = 13;
4422
4423 // sessionAffinityConfig contains the configurations of session affinity.
4424 // +optional
4425 optional SessionAffinityConfig sessionAffinityConfig = 14;
4426}
4427
4428// ServiceStatus represents the current status of a service.
4429message ServiceStatus {
4430 // LoadBalancer contains the current status of the load-balancer,
4431 // if one is present.
4432 // +optional
4433 optional LoadBalancerStatus loadBalancer = 1;
4434}
4435
4436// SessionAffinityConfig represents the configurations of session affinity.
4437message SessionAffinityConfig {
4438 // clientIP contains the configurations of Client IP based session affinity.
4439 // +optional
4440 optional ClientIPConfig clientIP = 1;
4441}
4442
4443// Represents a StorageOS persistent volume resource.
4444message StorageOSPersistentVolumeSource {
4445 // VolumeName is the human-readable name of the StorageOS volume. Volume
4446 // names are only unique within a namespace.
4447 optional string volumeName = 1;
4448
4449 // VolumeNamespace specifies the scope of the volume within StorageOS. If no
4450 // namespace is specified then the Pod's namespace will be used. This allows the
4451 // Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
4452 // Set VolumeName to any name to override the default behaviour.
4453 // Set to "default" if you are not using namespaces within StorageOS.
4454 // Namespaces that do not pre-exist within StorageOS will be created.
4455 // +optional
4456 optional string volumeNamespace = 2;
4457
4458 // Filesystem type to mount.
4459 // Must be a filesystem type supported by the host operating system.
4460 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4461 // +optional
4462 optional string fsType = 3;
4463
4464 // Defaults to false (read/write). ReadOnly here will force
4465 // the ReadOnly setting in VolumeMounts.
4466 // +optional
4467 optional bool readOnly = 4;
4468
4469 // SecretRef specifies the secret to use for obtaining the StorageOS API
4470 // credentials. If not specified, default values will be attempted.
4471 // +optional
4472 optional ObjectReference secretRef = 5;
4473}
4474
4475// Represents a StorageOS persistent volume resource.
4476message StorageOSVolumeSource {
4477 // VolumeName is the human-readable name of the StorageOS volume. Volume
4478 // names are only unique within a namespace.
4479 optional string volumeName = 1;
4480
4481 // VolumeNamespace specifies the scope of the volume within StorageOS. If no
4482 // namespace is specified then the Pod's namespace will be used. This allows the
4483 // Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
4484 // Set VolumeName to any name to override the default behaviour.
4485 // Set to "default" if you are not using namespaces within StorageOS.
4486 // Namespaces that do not pre-exist within StorageOS will be created.
4487 // +optional
4488 optional string volumeNamespace = 2;
4489
4490 // Filesystem type to mount.
4491 // Must be a filesystem type supported by the host operating system.
4492 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4493 // +optional
4494 optional string fsType = 3;
4495
4496 // Defaults to false (read/write). ReadOnly here will force
4497 // the ReadOnly setting in VolumeMounts.
4498 // +optional
4499 optional bool readOnly = 4;
4500
4501 // SecretRef specifies the secret to use for obtaining the StorageOS API
4502 // credentials. If not specified, default values will be attempted.
4503 // +optional
4504 optional LocalObjectReference secretRef = 5;
4505}
4506
4507// Sysctl defines a kernel parameter to be set
4508message Sysctl {
4509 // Name of a property to set
4510 optional string name = 1;
4511
4512 // Value of a property to set
4513 optional string value = 2;
4514}
4515
4516// TCPSocketAction describes an action based on opening a socket
4517message TCPSocketAction {
4518 // Number or name of the port to access on the container.
4519 // Number must be in the range 1 to 65535.
4520 // Name must be an IANA_SVC_NAME.
4521 optional k8s.io.apimachinery.pkg.util.intstr.IntOrString port = 1;
4522
4523 // Optional: Host name to connect to, defaults to the pod IP.
4524 // +optional
4525 optional string host = 2;
4526}
4527
4528// The node this Taint is attached to has the "effect" on
4529// any pod that does not tolerate the Taint.
4530message Taint {
4531 // Required. The taint key to be applied to a node.
4532 optional string key = 1;
4533
4534 // Required. The taint value corresponding to the taint key.
4535 // +optional
4536 optional string value = 2;
4537
4538 // Required. The effect of the taint on pods
4539 // that do not tolerate the taint.
4540 // Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
4541 optional string effect = 3;
4542
4543 // TimeAdded represents the time at which the taint was added.
4544 // It is only written for NoExecute taints.
4545 // +optional
4546 optional k8s.io.apimachinery.pkg.apis.meta.v1.Time timeAdded = 4;
4547}
4548
4549// The pod this Toleration is attached to tolerates any taint that matches
4550// the triple <key,value,effect> using the matching operator <operator>.
4551message Toleration {
4552 // Key is the taint key that the toleration applies to. Empty means match all taint keys.
4553 // If the key is empty, operator must be Exists; this combination means to match all values and all keys.
4554 // +optional
4555 optional string key = 1;
4556
4557 // Operator represents a key's relationship to the value.
4558 // Valid operators are Exists and Equal. Defaults to Equal.
4559 // Exists is equivalent to wildcard for value, so that a pod can
4560 // tolerate all taints of a particular category.
4561 // +optional
4562 optional string operator = 2;
4563
4564 // Value is the taint value the toleration matches to.
4565 // If the operator is Exists, the value should be empty, otherwise just a regular string.
4566 // +optional
4567 optional string value = 3;
4568
4569 // Effect indicates the taint effect to match. Empty means match all taint effects.
4570 // When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
4571 // +optional
4572 optional string effect = 4;
4573
4574 // TolerationSeconds represents the period of time the toleration (which must be
4575 // of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
4576 // it is not set, which means tolerate the taint forever (do not evict). Zero and
4577 // negative values will be treated as 0 (evict immediately) by the system.
4578 // +optional
4579 optional int64 tolerationSeconds = 5;
4580}
4581
4582// A topology selector requirement is a selector that matches given label.
4583// This is an alpha feature and may change in the future.
4584message TopologySelectorLabelRequirement {
4585 // The label key that the selector applies to.
4586 optional string key = 1;
4587
4588 // An array of string values. One value must match the label to be selected.
4589 // Each entry in Values is ORed.
4590 repeated string values = 2;
4591}
4592
4593// A topology selector term represents the result of label queries.
4594// A null or empty topology selector term matches no objects.
4595// The requirements of them are ANDed.
4596// It provides a subset of functionality as NodeSelectorTerm.
4597// This is an alpha feature and may change in the future.
4598message TopologySelectorTerm {
4599 // A list of topology selector requirements by labels.
4600 // +optional
4601 repeated TopologySelectorLabelRequirement matchLabelExpressions = 1;
4602}
4603
4604// TypedLocalObjectReference contains enough information to let you locate the
4605// typed referenced object inside the same namespace.
4606message TypedLocalObjectReference {
4607 // APIGroup is the group for the resource being referenced.
4608 // If APIGroup is not specified, the specified Kind must be in the core API group.
4609 // For any other third-party types, APIGroup is required.
4610 // +optional
4611 optional string apiGroup = 1;
4612
4613 // Kind is the type of resource being referenced
4614 optional string kind = 2;
4615
4616 // Name is the name of resource being referenced
4617 optional string name = 3;
4618}
4619
4620// Volume represents a named volume in a pod that may be accessed by any container in the pod.
4621message Volume {
4622 // Volume's name.
4623 // Must be a DNS_LABEL and unique within the pod.
4624 // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
4625 optional string name = 1;
4626
4627 // VolumeSource represents the location and type of the mounted volume.
4628 // If not specified, the Volume is implied to be an EmptyDir.
4629 // This implied behavior is deprecated and will be removed in a future version.
4630 optional VolumeSource volumeSource = 2;
4631}
4632
4633// volumeDevice describes a mapping of a raw block device within a container.
4634message VolumeDevice {
4635 // name must match the name of a persistentVolumeClaim in the pod
4636 optional string name = 1;
4637
4638 // devicePath is the path inside of the container that the device will be mapped to.
4639 optional string devicePath = 2;
4640}
4641
4642// VolumeMount describes a mounting of a Volume within a container.
4643message VolumeMount {
4644 // This must match the Name of a Volume.
4645 optional string name = 1;
4646
4647 // Mounted read-only if true, read-write otherwise (false or unspecified).
4648 // Defaults to false.
4649 // +optional
4650 optional bool readOnly = 2;
4651
4652 // Path within the container at which the volume should be mounted. Must
4653 // not contain ':'.
4654 optional string mountPath = 3;
4655
4656 // Path within the volume from which the container's volume should be mounted.
4657 // Defaults to "" (volume's root).
4658 // +optional
4659 optional string subPath = 4;
4660
4661 // mountPropagation determines how mounts are propagated from the host
4662 // to container and the other way around.
4663 // When not set, MountPropagationNone is used.
4664 // This field is beta in 1.10.
4665 // +optional
4666 optional string mountPropagation = 5;
4667
4668 // Expanded path within the volume from which the container's volume should be mounted.
4669 // Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
4670 // Defaults to "" (volume's root).
4671 // SubPathExpr and SubPath are mutually exclusive.
4672 // This field is beta in 1.15.
4673 // +optional
4674 optional string subPathExpr = 6;
4675}
4676
4677// VolumeNodeAffinity defines constraints that limit what nodes this volume can be accessed from.
4678message VolumeNodeAffinity {
4679 // Required specifies hard node constraints that must be met.
4680 optional NodeSelector required = 1;
4681}
4682
4683// Projection that may be projected along with other supported volume types
4684message VolumeProjection {
4685 // information about the secret data to project
4686 // +optional
4687 optional SecretProjection secret = 1;
4688
4689 // information about the downwardAPI data to project
4690 // +optional
4691 optional DownwardAPIProjection downwardAPI = 2;
4692
4693 // information about the configMap data to project
4694 // +optional
4695 optional ConfigMapProjection configMap = 3;
4696
4697 // information about the serviceAccountToken data to project
4698 // +optional
4699 optional ServiceAccountTokenProjection serviceAccountToken = 4;
4700}
4701
4702// Represents the source of a volume to mount.
4703// Only one of its members may be specified.
4704message VolumeSource {
4705 // HostPath represents a pre-existing file or directory on the host
4706 // machine that is directly exposed to the container. This is generally
4707 // used for system agents or other privileged things that are allowed
4708 // to see the host machine. Most containers will NOT need this.
4709 // More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
4710 // ---
4711 // TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not
4712 // mount host directories as read/write.
4713 // +optional
4714 optional HostPathVolumeSource hostPath = 1;
4715
4716 // EmptyDir represents a temporary directory that shares a pod's lifetime.
4717 // More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
4718 // +optional
4719 optional EmptyDirVolumeSource emptyDir = 2;
4720
4721 // GCEPersistentDisk represents a GCE Disk resource that is attached to a
4722 // kubelet's host machine and then exposed to the pod.
4723 // More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
4724 // +optional
4725 optional GCEPersistentDiskVolumeSource gcePersistentDisk = 3;
4726
4727 // AWSElasticBlockStore represents an AWS Disk resource that is attached to a
4728 // kubelet's host machine and then exposed to the pod.
4729 // More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
4730 // +optional
4731 optional AWSElasticBlockStoreVolumeSource awsElasticBlockStore = 4;
4732
4733 // GitRepo represents a git repository at a particular revision.
4734 // DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an
4735 // EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
4736 // into the Pod's container.
4737 // +optional
4738 optional GitRepoVolumeSource gitRepo = 5;
4739
4740 // Secret represents a secret that should populate this volume.
4741 // More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
4742 // +optional
4743 optional SecretVolumeSource secret = 6;
4744
4745 // NFS represents an NFS mount on the host that shares a pod's lifetime
4746 // More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
4747 // +optional
4748 optional NFSVolumeSource nfs = 7;
4749
4750 // ISCSI represents an ISCSI Disk resource that is attached to a
4751 // kubelet's host machine and then exposed to the pod.
4752 // More info: https://releases.k8s.io/HEAD/examples/volumes/iscsi/README.md
4753 // +optional
4754 optional ISCSIVolumeSource iscsi = 8;
4755
4756 // Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
4757 // More info: https://releases.k8s.io/HEAD/examples/volumes/glusterfs/README.md
4758 // +optional
4759 optional GlusterfsVolumeSource glusterfs = 9;
4760
4761 // PersistentVolumeClaimVolumeSource represents a reference to a
4762 // PersistentVolumeClaim in the same namespace.
4763 // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
4764 // +optional
4765 optional PersistentVolumeClaimVolumeSource persistentVolumeClaim = 10;
4766
4767 // RBD represents a Rados Block Device mount on the host that shares a pod's lifetime.
4768 // More info: https://releases.k8s.io/HEAD/examples/volumes/rbd/README.md
4769 // +optional
4770 optional RBDVolumeSource rbd = 11;
4771
4772 // FlexVolume represents a generic volume resource that is
4773 // provisioned/attached using an exec based plugin.
4774 // +optional
4775 optional FlexVolumeSource flexVolume = 12;
4776
4777 // Cinder represents a cinder volume attached and mounted on kubelets host machine
4778 // More info: https://releases.k8s.io/HEAD/examples/mysql-cinder-pd/README.md
4779 // +optional
4780 optional CinderVolumeSource cinder = 13;
4781
4782 // CephFS represents a Ceph FS mount on the host that shares a pod's lifetime
4783 // +optional
4784 optional CephFSVolumeSource cephfs = 14;
4785
4786 // Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running
4787 // +optional
4788 optional FlockerVolumeSource flocker = 15;
4789
4790 // DownwardAPI represents downward API about the pod that should populate this volume
4791 // +optional
4792 optional DownwardAPIVolumeSource downwardAPI = 16;
4793
4794 // FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod.
4795 // +optional
4796 optional FCVolumeSource fc = 17;
4797
4798 // AzureFile represents an Azure File Service mount on the host and bind mount to the pod.
4799 // +optional
4800 optional AzureFileVolumeSource azureFile = 18;
4801
4802 // ConfigMap represents a configMap that should populate this volume
4803 // +optional
4804 optional ConfigMapVolumeSource configMap = 19;
4805
4806 // VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine
4807 // +optional
4808 optional VsphereVirtualDiskVolumeSource vsphereVolume = 20;
4809
4810 // Quobyte represents a Quobyte mount on the host that shares a pod's lifetime
4811 // +optional
4812 optional QuobyteVolumeSource quobyte = 21;
4813
4814 // AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
4815 // +optional
4816 optional AzureDiskVolumeSource azureDisk = 22;
4817
4818 // PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine
4819 optional PhotonPersistentDiskVolumeSource photonPersistentDisk = 23;
4820
4821 // Items for all in one resources secrets, configmaps, and downward API
4822 optional ProjectedVolumeSource projected = 26;
4823
4824 // PortworxVolume represents a portworx volume attached and mounted on kubelets host machine
4825 // +optional
4826 optional PortworxVolumeSource portworxVolume = 24;
4827
4828 // ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
4829 // +optional
4830 optional ScaleIOVolumeSource scaleIO = 25;
4831
4832 // StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
4833 // +optional
4834 optional StorageOSVolumeSource storageos = 27;
4835
4836 // CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature).
4837 // +optional
4838 optional CSIVolumeSource csi = 28;
4839}
4840
4841// Represents a vSphere volume resource.
4842message VsphereVirtualDiskVolumeSource {
4843 // Path that identifies vSphere volume vmdk
4844 optional string volumePath = 1;
4845
4846 // Filesystem type to mount.
4847 // Must be a filesystem type supported by the host operating system.
4848 // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
4849 // +optional
4850 optional string fsType = 2;
4851
4852 // Storage Policy Based Management (SPBM) profile name.
4853 // +optional
4854 optional string storagePolicyName = 3;
4855
4856 // Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.
4857 // +optional
4858 optional string storagePolicyID = 4;
4859}
4860
4861// The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
4862message WeightedPodAffinityTerm {
4863 // weight associated with matching the corresponding podAffinityTerm,
4864 // in the range 1-100.
4865 optional int32 weight = 1;
4866
4867 // Required. A pod affinity term, associated with the corresponding weight.
4868 optional PodAffinityTerm podAffinityTerm = 2;
4869}
4870
4871// WindowsSecurityContextOptions contain Windows-specific options and credentials.
4872message WindowsSecurityContextOptions {
4873 // GMSACredentialSpecName is the name of the GMSA credential spec to use.
4874 // This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
4875 // +optional
4876 optional string gmsaCredentialSpecName = 1;
4877
4878 // GMSACredentialSpec is where the GMSA admission webhook
4879 // (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the
4880 // GMSA credential spec named by the GMSACredentialSpecName field.
4881 // This field is alpha-level and is only honored by servers that enable the WindowsGMSA feature flag.
4882 // +optional
4883 optional string gmsaCredentialSpec = 2;
4884}
4885