From ee223b1c93fe28617640a6afe63c6efdccadde81 Mon Sep 17 00:00:00 2001 From: wrongerror Date: Sun, 24 Sep 2023 11:06:59 +0800 Subject: [PATCH] Remove description in crds Signed-off-by: wrongerror --- docs/index.yaml | 42 +- docs/openfunction-v1.2.0-v0.7.0.tgz | Bin 795987 -> 550373 bytes openfunction/crds/builder.yaml | 184 - openfunction/crds/clustereventbus.yaml | 91 - openfunction/crds/eventbus.yaml | 91 - openfunction/crds/eventsource.yaml | 163 - openfunction/crds/function.yaml | 9958 ------------------------ openfunction/crds/gateway.yaml | 237 - openfunction/crds/serving.yaml | 8545 -------------------- openfunction/crds/trigger.yaml | 42 - 10 files changed, 21 insertions(+), 19332 deletions(-) diff --git a/docs/index.yaml b/docs/index.yaml index b3a43e2..f320db7 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -3,7 +3,7 @@ entries: knative-serving: - apiVersion: v2 appVersion: 1.3.2 - created: "2023-09-23T18:45:37.65325+08:00" + created: "2023-09-24T11:05:59.420699+08:00" description: A Helm chart for Knative Serving on Kubernetes digest: 134c3b538f96c25862bf85e72e9bbf0fe12dc3497f1e7f47383ccb902a1abd56 keywords: @@ -22,7 +22,7 @@ entries: version: 1.3.2 - apiVersion: v2 appVersion: 1.0.1 - created: "2023-09-23T18:45:37.651213+08:00" + created: "2023-09-24T11:05:59.418678+08:00" description: A Helm chart for Knative Serving on Kubernetes digest: c3c6dd47616c498ffe87d94812c35a6423ef974fa65daddc22d196986e15284a keywords: @@ -41,7 +41,7 @@ entries: openfunction: - apiVersion: v2 appVersion: 1.2.0 - created: "2023-09-23T18:45:37.893457+08:00" + created: "2023-09-24T11:05:59.638589+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -68,7 +68,7 @@ entries: repository: file://contour version: 10.2.2 description: A Helm chart for OpenFunction on Kubernetes - digest: f30e28c34b209587a05a661ce9c9b636f32ac18c67c7cc8ce2923ddc015add40 + digest: 42d87d218f4da1e5bb65a37cc4f66f715a998b1dc2e9a752c461e5068b6cdde9 keywords: - faas - Serverless @@ -86,7 +86,7 @@ entries: version: 0.7.0 - apiVersion: v2 appVersion: 1.2.0-rc.0 - created: "2023-09-23T18:45:37.86594+08:00" + created: "2023-09-24T11:05:59.618327+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -131,7 +131,7 @@ entries: version: 0.7.0-rc.0 - apiVersion: v2 appVersion: 1.1.1 - created: "2023-09-23T18:45:37.845913+08:00" + created: "2023-09-24T11:05:59.598235+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -176,7 +176,7 @@ entries: version: 0.6.1 - apiVersion: v2 appVersion: 1.1.0 - created: "2023-09-23T18:45:37.82856+08:00" + created: "2023-09-24T11:05:59.582024+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -221,7 +221,7 @@ entries: version: 0.6.0 - apiVersion: v2 appVersion: 1.0.0 - created: "2023-09-23T18:45:37.812632+08:00" + created: "2023-09-24T11:05:59.565831+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -266,7 +266,7 @@ entries: version: 0.5.0 - apiVersion: v2 appVersion: 1.0.0-rc.0 - created: "2023-09-23T18:45:37.796909+08:00" + created: "2023-09-24T11:05:59.549787+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -311,7 +311,7 @@ entries: version: 0.5.0-rc.0 - apiVersion: v2 appVersion: 0.8.1 - created: "2023-09-23T18:45:37.779977+08:00" + created: "2023-09-24T11:05:59.5313+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -356,7 +356,7 @@ entries: version: 0.4.0 - apiVersion: v2 appVersion: 0.8.1-rc.0 - created: "2023-09-23T18:45:37.761659+08:00" + created: "2023-09-24T11:05:59.514266+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -401,7 +401,7 @@ entries: version: 0.4.0-rc.0 - apiVersion: v2 appVersion: 0.8.0 - created: "2023-09-23T18:45:37.740003+08:00" + created: "2023-09-24T11:05:59.498327+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -446,7 +446,7 @@ entries: version: 0.3.1 - apiVersion: v2 appVersion: 0.8.0 - created: "2023-09-23T18:45:37.718627+08:00" + created: "2023-09-24T11:05:59.482775+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -491,7 +491,7 @@ entries: version: 0.3.0 - apiVersion: v2 appVersion: 0.8.0-rc.0 - created: "2023-09-23T18:45:37.700434+08:00" + created: "2023-09-24T11:05:59.465699+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -536,7 +536,7 @@ entries: version: 0.3.0-rc.0 - apiVersion: v2 appVersion: 0.7.0 - created: "2023-09-23T18:45:37.683599+08:00" + created: "2023-09-24T11:05:59.44983+08:00" dependencies: - condition: global.Dapr.enabled name: dapr @@ -581,7 +581,7 @@ entries: version: 0.2.0 - apiVersion: v2 appVersion: 0.6.0 - created: "2023-09-23T18:45:37.666931+08:00" + created: "2023-09-24T11:05:59.434209+08:00" dependencies: - condition: Dapr.enabled name: dapr @@ -627,7 +627,7 @@ entries: shipwright-build: - apiVersion: v2 appVersion: 0.10.0 - created: "2023-09-23T18:45:37.89649+08:00" + created: "2023-09-24T11:05:59.641658+08:00" description: A Helm chart for Shipwright Build on Kubernetes digest: 06820ce8fe0088b3f95086ce38c5aff3069b691d2d5f1210e5bf77e9632a8611 keywords: @@ -648,7 +648,7 @@ entries: version: 0.10.0 - apiVersion: v2 appVersion: 0.6.1 - created: "2023-09-23T18:45:37.897529+08:00" + created: "2023-09-24T11:05:59.642683+08:00" description: A Helm chart for Shipwright Build on Kubernetes digest: 366ca24ad2651910695ac50e165be4fa7c8c635ec2aec5f53a6baca17f3efed0 keywords: @@ -669,7 +669,7 @@ entries: tekton-pipelines: - apiVersion: v2 appVersion: 0.37.2 - created: "2023-09-23T18:45:37.899074+08:00" + created: "2023-09-24T11:05:59.644255+08:00" description: A Helm chart for Tekton Pipelines on Kubernetes digest: 90fe5c147a410aa1c26812435704cbcf1891ce2446a8e5f8a3ff62449f736360 keywords: @@ -690,7 +690,7 @@ entries: version: 0.37.2 - apiVersion: v2 appVersion: 0.30.0 - created: "2023-09-23T18:45:37.898316+08:00" + created: "2023-09-24T11:05:59.643482+08:00" description: A Helm chart for Tekton Pipelines on Kubernetes digest: 4939ec89841370813aa5c00cea5db82733470fb165326d2b75c3f9324d170bac keywords: @@ -708,4 +708,4 @@ entries: urls: - https://openfunction.github.io/charts/tekton-pipelines-0.30.0.tgz version: 0.30.0 -generated: "2023-09-23T18:45:37.64621+08:00" +generated: "2023-09-24T11:05:59.4142+08:00" diff --git a/docs/openfunction-v1.2.0-v0.7.0.tgz b/docs/openfunction-v1.2.0-v0.7.0.tgz index e16f118b6cbcfc2368e185f032cec43f8a2a2f9c..40ddf98429fa9263a3832f129f1bae328415292d 100644 GIT binary patch literal 550373 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

)-e|bDuoUY3~-;1TuL# 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%0Ahl2X?=jj7DVK5Vsx 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 z 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­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

%NPo+ERC;#O9P8FtvG$UAl9Lans?c+Unp7=U2f~ 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

BO`P_;e7in=$IjL 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≺hV_wxKmBcgCD%;fh!2_!pFSgO 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

f!j$-T|yUd3< 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 KjRX&@3H}4*3s?~V diff --git a/openfunction/crds/builder.yaml b/openfunction/crds/builder.yaml index 9ef22d2..3b42891 100644 --- a/openfunction/crds/builder.yaml +++ b/openfunction/crds/builder.yaml @@ -40,151 +40,96 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: Builder is the Schema for the builders API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: BuilderSpec defines the desired state of Builder properties: builder: - description: Builder refers to the image containing the build tools - inside which the source code would be built. type: string builderCredentials: - description: BuilderCredentials references a Secret that contains credentials - to access the builder image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic dockerfile: - description: Dockerfile is the path to the Dockerfile to be used for - build strategies that rely on the Dockerfile for building an image. type: string env: additionalProperties: type: string - description: Environment params to pass to the builder. type: object image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic params: additionalProperties: type: string - description: Params is a list of key/value that could be used to set - strategy parameters. type: object port: - description: The port on which the function will be invoked format: int32 type: integer shipwright: - description: The configuration for `Shipwright` build engine. properties: strategy: - description: Strategy references the BuildStrategy to use to build - the image. properties: kind: - description: BuildStrategyKind indicates the kind of the build - strategy BuildStrategy or ClusterBuildStrategy, default to - BuildStrategy. type: string name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string required: - name type: object timeout: - description: Timeout defines the maximum amount of time the Build - should take to execute. format: duration type: string type: object srcRepo: - description: Git repository info of a function properties: bundleContainer: - description: BundleContainer properties: image: - description: Image reference, i.e. quay.io/org/image:tag type: string required: - image type: object credentials: - description: Credentials references a Secret that contains credentials - to access the repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic revision: - description: Git revision to check out (branch, tag, sha, ref…) - (default:"") type: string sourceSubPath: - description: A subpath within the `source` input where the source - to build is located. type: string url: - description: Git url to clone type: string type: object state: - description: State is used for canceling a buildrun (and maybe more - later on). type: string timeout: - description: Timeout defines the maximum amount of time the Build should - take to execute. type: string required: - image - srcRepo type: object status: - description: BuilderStatus defines the observed state of Builder properties: output: - description: Output holds the results emitted from step definition of - an output properties: digest: - description: Digest holds the digest of output image type: string size: - description: Size holds the compressed size of output image format: int64 type: integer type: object @@ -195,42 +140,25 @@ spec: resourceRef: additionalProperties: type: string - description: Associate resources. type: object sources: - description: Sources holds the results emitted from the step definition - of different sources items: - description: SourceResult holds the results emitted from the different - sources properties: bundle: - description: Bundle holds the results emitted from from the step - definition of bundle source properties: digest: - description: Digest hold the image digest result type: string type: object git: - description: Git holds the results emitted from from the step - definition of a git source properties: branchName: - description: BranchName holds the default branch name of the - git source this will be set only when revision is not specified - in Build object type: string commitAuthor: - description: CommitAuthor holds the commit author of a git - source type: string commitSha: - description: CommitSha holds the commit sha of git source type: string type: object name: - description: Name is the name of source type: string required: - name @@ -263,168 +191,103 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: Builder is the Schema for the builders API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: BuilderSpec defines the desired state of Builder properties: builder: - description: Builder refers to the image containing the build tools - to build the source code. type: string builderCredentials: - description: BuilderCredentials references a Secret that contains credentials - to access the builder image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic builderMaxAge: - description: The duration to retain a completed builder, defaults to - 0 (forever). type: string dockerfile: - description: Dockerfile is the path to the Dockerfile used by build - strategies that rely on the Dockerfile to build an image. type: string env: additionalProperties: type: string - description: Environment variables to pass to the builder. type: object failedBuildsHistoryLimit: - description: The number of failed builds to retain, default is 1. format: int32 type: integer image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic shipwright: - description: The configuration for the `Shipwright` build engine. properties: params: - description: 'Params is a list of key/value that could be used to - set strategy parameters. When using _params_, users should avoid: - Defining a parameter name that doesn''t match one of the `spec.parameters` - defined in the `BuildStrategy`. Defining a parameter name that - collides with the Shipwright reserved parameters including BUILDER_IMAGE,DOCKERFILE,CONTEXT_DIR - and any name starting with shp-.' items: - description: ParamValue is a key/value that populates a strategy - parameter used in the execution of the strategy steps properties: configMapValue: - description: The ConfigMap value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object name: - description: Name of the parameter type: string secretValue: - description: The secret value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object value: - description: The value of the parameter type: string values: - description: Values of an array parameter items: - description: SingleValue is the value type contains the - properties for a value, this allows for an easy extension - in the future to support more kinds properties: configMapValue: - description: The ConfigMap value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object secretValue: - description: The secret value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object value: - description: The value of the parameter type: string type: object type: array @@ -433,92 +296,62 @@ spec: type: object type: array strategy: - description: Strategy references the BuildStrategy to use to build - the image. properties: kind: - description: BuildStrategyKind indicates the kind of the build - strategy BuildStrategy or ClusterBuildStrategy, default to - BuildStrategy. type: string name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string required: - name type: object timeout: - description: Timeout defines the maximum amount of time the Build - should take to execute. format: duration type: string type: object srcRepo: - description: Function Source code repository properties: bundleContainer: - description: BundleContainer properties: image: - description: Image reference, i.e. quay.io/org/image:tag type: string required: - image type: object credentials: - description: Credentials references a Secret that contains credentials - to access the repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic revision: - description: Git revision to check out (branch, tag, sha, ref…) - (default:"") type: string sourceSubPath: - description: A subpath within the `source` input where the source - to build is located. type: string url: - description: Git url to clone type: string type: object state: - description: State is used for canceling a buildrun (and maybe more - later on). type: string successfulBuildsHistoryLimit: - description: The number of successful builds to retain, default is 0. format: int32 type: integer timeout: - description: Timeout defines the maximum amount of time the Build should - take to execute. type: string required: - image - srcRepo type: object status: - description: BuilderStatus defines the observed state of Builder properties: buildDuration: type: string message: type: string output: - description: Output holds the results emitted from step definition of - an output properties: digest: - description: Digest holds the digest of output image type: string size: - description: Size holds the compressed size of output image format: int64 type: integer type: object @@ -529,42 +362,25 @@ spec: resourceRef: additionalProperties: type: string - description: Associate resources. type: object sources: - description: Sources holds the results emitted from the step definition - of different sources items: - description: SourceResult holds the results emitted from the different - sources properties: bundle: - description: Bundle holds the results emitted from from the step - definition of bundle source properties: digest: - description: Digest hold the image digest result type: string type: object git: - description: Git holds the results emitted from from the step - definition of a git source properties: branchName: - description: BranchName holds the default branch name of the - git source this will be set only when revision is not specified - in Build object type: string commitAuthor: - description: CommitAuthor holds the commit author of a git - source type: string commitSha: - description: CommitSha holds the commit sha of git source type: string type: object name: - description: Name is the name of source type: string required: - name diff --git a/openfunction/crds/clustereventbus.yaml b/openfunction/crds/clustereventbus.yaml index e552be3..612934a 100644 --- a/openfunction/crds/clustereventbus.yaml +++ b/openfunction/crds/clustereventbus.yaml @@ -16,25 +16,16 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: ClusterEventBus is the Schema for the clustereventbus API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: EventBusSpec defines the desired state of EventBus and ClusterEventBus properties: natsStreaming: - description: Use Nats streaming as the default backend for event bus properties: ackWaitTime: type: string @@ -56,50 +47,22 @@ spec: scaleOption: properties: advanced: - description: AdvancedConfig specifies advance scaling options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies horizontal - scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior configures - the scaling behavior of the target in both Up and - Down directions (scaleUp and scaleDown fields respectively). properties: scaleDown: - description: scaleDown is scaling policy for scaling - Down. If not set, the default value is to allow - to scale down to minReplicas pods, with a 300 - second stabilization window (i.e., the highest - recommendation for the last 300sec is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used during scaling. - At least one policy must be specified, otherwise - the HPAScalingRules will be discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies the - window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than or - equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify the - scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -110,56 +73,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, the - default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal - to 3600 (one hour). If not set, use the default - values: - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. the - stabilization window is 300 seconds long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy for scaling - Up. If not set, the default value is the higher - of: * increase no more than 4 pods per 60 seconds - * double the number of pods per 60 seconds No - stabilization is used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used during scaling. - At least one policy must be specified, otherwise - the HPAScalingRules will be discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies the - window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than or - equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify the - scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -170,20 +99,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, the - default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal - to 3600 (one hour). If not set, use the default - values: - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. the - stabilization window is 300 seconds long).' format: int32 type: integer type: object @@ -195,13 +112,8 @@ spec: type: boolean type: object authRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used to authenticate - the scaler with the environment properties: kind: - description: Kind of the resource being referred to. Defaults - to TriggerAuthentication. type: string name: type: string @@ -258,9 +170,6 @@ spec: - subscriptionType type: object topic: - description: Topic indicates the name of the message channel of eventbus - If not specified, "default" will be used as the name of the message - channel type: string type: object type: object diff --git a/openfunction/crds/eventbus.yaml b/openfunction/crds/eventbus.yaml index 688dff5..9de61f4 100644 --- a/openfunction/crds/eventbus.yaml +++ b/openfunction/crds/eventbus.yaml @@ -16,25 +16,16 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: EventBus is the Schema for the eventbus API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: EventBusSpec defines the desired state of EventBus and ClusterEventBus properties: natsStreaming: - description: Use Nats streaming as the default backend for event bus properties: ackWaitTime: type: string @@ -56,50 +47,22 @@ spec: scaleOption: properties: advanced: - description: AdvancedConfig specifies advance scaling options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies horizontal - scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior configures - the scaling behavior of the target in both Up and - Down directions (scaleUp and scaleDown fields respectively). properties: scaleDown: - description: scaleDown is scaling policy for scaling - Down. If not set, the default value is to allow - to scale down to minReplicas pods, with a 300 - second stabilization window (i.e., the highest - recommendation for the last 300sec is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used during scaling. - At least one policy must be specified, otherwise - the HPAScalingRules will be discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies the - window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than or - equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify the - scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -110,56 +73,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, the - default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal - to 3600 (one hour). If not set, use the default - values: - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. the - stabilization window is 300 seconds long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy for scaling - Up. If not set, the default value is the higher - of: * increase no more than 4 pods per 60 seconds - * double the number of pods per 60 seconds No - stabilization is used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used during scaling. - At least one policy must be specified, otherwise - the HPAScalingRules will be discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies the - window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than or - equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify the - scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -170,20 +99,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, the - default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or scaling - down. StabilizationWindowSeconds must be greater - than or equal to zero and less than or equal - to 3600 (one hour). If not set, use the default - values: - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. the - stabilization window is 300 seconds long).' format: int32 type: integer type: object @@ -195,13 +112,8 @@ spec: type: boolean type: object authRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used to authenticate - the scaler with the environment properties: kind: - description: Kind of the resource being referred to. Defaults - to TriggerAuthentication. type: string name: type: string @@ -258,9 +170,6 @@ spec: - subscriptionType type: object topic: - description: Topic indicates the name of the message channel of eventbus - If not specified, "default" will be used as the name of the message - channel type: string type: object type: object diff --git a/openfunction/crds/eventsource.yaml b/openfunction/crds/eventsource.yaml index 0009a8e..b412bac 100644 --- a/openfunction/crds/eventsource.yaml +++ b/openfunction/crds/eventsource.yaml @@ -26,134 +26,81 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: EventSource is the Schema for the eventsources API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: EventSourceSpec defines the desired state of EventSource properties: build: - description: Information needed to build a function. The build step - will be skipped if Build is nil. properties: builder: - description: Builder refers to the image containing the build tools - to build the source code. type: string builderCredentials: - description: BuilderCredentials references a Secret that contains - credentials to access the builder image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic builderMaxAge: - description: The duration to retain a completed builder, defaults - to 0 (forever). type: string dockerfile: - description: Dockerfile is the path to the Dockerfile used by build - strategies that rely on the Dockerfile to build an image. type: string env: additionalProperties: type: string - description: Environment variables to pass to the builder. type: object failedBuildsHistoryLimit: - description: The number of failed builds to retain, default is 1. format: int32 type: integer params: additionalProperties: type: string - description: 'Params is a list of key/value that could be used to - set strategy parameters. When using _params_, users should avoid: - Defining a parameter name that doesn''t match one of the `spec.parameters` - defined in the `BuildStrategy`. Defining a parameter name that - collides with the Shipwright reserved parameters including BUILDER_IMAGE,DOCKERFILE,CONTEXT_DIR - and any name starting with shp-.' type: object shipwright: - description: The configuration for the `Shipwright` build engine. properties: strategy: - description: Strategy references the BuildStrategy to use to - build the image. properties: kind: - description: BuildStrategyKind indicates the kind of the - build strategy BuildStrategy or ClusterBuildStrategy, - default to BuildStrategy. type: string name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string required: - name type: object timeout: - description: Timeout defines the maximum amount of time the - Build should take to execute. format: duration type: string type: object srcRepo: - description: Function Source code repository properties: bundleContainer: - description: BundleContainer properties: image: - description: Image reference, i.e. quay.io/org/image:tag type: string required: - image type: object credentials: - description: Credentials references a Secret that contains credentials - to access the repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic revision: - description: Git revision to check out (branch, tag, sha, ref…) - (default:"") type: string sourceSubPath: - description: A subpath within the `source` input where the source - to build is located. type: string url: - description: Git url to clone type: string type: object successfulBuildsHistoryLimit: - description: The number of successful builds to retain, default - is 0. format: int32 type: integer timeout: - description: Timeout defines the maximum amount of time the Build - should take to execute. type: string required: - srcRepo @@ -166,12 +113,8 @@ spec: required: - schedule type: object - description: Cron event source, the Key is used to refer to the name - of the event type: object eventBus: - description: EventBus allows you to specify a specific EventBus to be - used instead of the "default" one type: string kafka: additionalProperties: @@ -190,51 +133,22 @@ spec: scaleOption: properties: advanced: - description: AdvancedConfig specifies advance scaling options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies horizontal - scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior configures - the scaling behavior of the target in both Up and - Down directions (scaleUp and scaleDown fields respectively). properties: scaleDown: - description: scaleDown is scaling policy for scaling - Down. If not set, the default value is to allow - to scale down to minReplicas pods, with a 300 - second stabilization window (i.e., the highest - recommendation for the last 300sec is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be discarded - as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than - or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -245,58 +159,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or - scaling down. StabilizationWindowSeconds - must be greater than or equal to zero and - less than or equal to 3600 (one hour). If - not set, use the default values: - For scale - up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization - window is 300 seconds long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy for scaling - Up. If not set, the default value is the higher - of: * increase no more than 4 pods per 60 seconds - * double the number of pods per 60 seconds No - stabilization is used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be discarded - as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the policy - should hold true. PeriodSeconds must - be greater than zero and less than - or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by the - policy. It must be greater than zero format: int32 type: integer required: @@ -307,21 +185,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds is - the number of seconds for which past recommendations - should be considered while scaling up or - scaling down. StabilizationWindowSeconds - must be greater than or equal to zero and - less than or equal to 3600 (one hour). If - not set, use the default values: - For scale - up: 0 (i.e. no stabilization is done). - - For scale down: 300 (i.e. the stabilization - window is 300 seconds long).' format: int32 type: integer type: object @@ -333,13 +198,8 @@ spec: type: boolean type: object authRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used to authenticate - the scaler with the environment properties: kind: - description: Kind of the resource being referred to. Defaults - to TriggerAuthentication. type: string name: type: string @@ -377,12 +237,8 @@ spec: - authRequired - brokers type: object - description: Kafka event source, the Key is used to refer to the name - of the event type: object logLevel: - description: The logging level of the event source handler, e.g. "1", - "2", "3". The level increases as the value increases, default is "1". type: string mqtt: additionalProperties: @@ -410,8 +266,6 @@ spec: - topic - url type: object - description: Mqtt event source, the Key is used to refer to the name - of the event type: object redis: additionalProperties: @@ -466,25 +320,18 @@ spec: - redisHost - redisPassword type: object - description: Redis event source, the Key is used to refer to the name - of the event type: object sink: - description: Sink is a callable address, such as Knative Service properties: ref: properties: apiVersion: - description: API version of the referent. type: string kind: - description: Kind of the referent. type: string name: - description: Name of the referent. type: string namespace: - description: Namespace of the referent. type: string required: - apiVersion @@ -496,20 +343,13 @@ spec: type: object type: object status: - description: EventSourceStatus defines the observed state of EventSource properties: conditions: - description: 'INSERT ADDITIONAL STATUS FIELD - define observed state - of cluster Important: Run "make" to regenerate code after modifying - this file' items: properties: message: - description: A human readable message indicating details about - the transition. type: string reason: - description: The reason for the condition's last transition. enum: - EventSourceFunctionCreated - ErrorCreatingEventSource @@ -527,13 +367,10 @@ spec: - TriggerFunctionCreated type: string status: - description: Status of the condition, one of True, False, Unknown. type: string timestamp: - description: Timestamp of the condition type: string type: - description: Type of condition enum: - Created - Error diff --git a/openfunction/crds/function.yaml b/openfunction/crds/function.yaml index 75e8d55..58e13a0 100644 --- a/openfunction/crds/function.yaml +++ b/openfunction/crds/function.yaml @@ -2,8 +2,6 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: functions.core.openfunction.io - annotations: - controller-gen.kubebuilder.io/version: v0.11.1 spec: conversion: strategy: Webhook @@ -48,172 +46,105 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: Function is the Schema for the functions API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: FunctionSpec defines the desired state of Function properties: build: - description: Information needed to build a function. The build step - will be skipped if Build is nil. properties: builder: - description: Builder refers to the image containing the build tools - to build the source code. type: string builderCredentials: - description: BuilderCredentials references a Secret that contains - credentials to access the builder image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic builderMaxAge: - description: The duration to retain a completed builder, defaults - to 0 (forever). type: string dockerfile: - description: Dockerfile is the path to the Dockerfile used by build - strategies that rely on the Dockerfile to build an image. type: string env: additionalProperties: type: string - description: Environment variables to pass to the builder. type: object failedBuildsHistoryLimit: - description: The number of failed builds to retain, default is 1. format: int32 type: integer params: additionalProperties: type: string - description: 'Params is a list of key/value that could be used to - set strategy parameters. When using _params_, users should avoid: - Defining a parameter name that doesn''t match one of the `spec.parameters` - defined in the `BuildStrategy`. Defining a parameter name that - collides with the Shipwright reserved parameters including BUILDER_IMAGE,DOCKERFILE,CONTEXT_DIR - and any name starting with shp-.' type: object shipwright: - description: The configuration for the `Shipwright` build engine. properties: strategy: - description: Strategy references the BuildStrategy to use to - build the image. properties: kind: - description: BuildStrategyKind indicates the kind of the - build strategy BuildStrategy or ClusterBuildStrategy, - default to BuildStrategy. type: string name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string required: - name type: object timeout: - description: Timeout defines the maximum amount of time the - Build should take to execute. format: duration type: string type: object srcRepo: - description: Function Source code repository properties: bundleContainer: - description: BundleContainer properties: image: - description: Image reference, i.e. quay.io/org/image:tag type: string required: - image type: object credentials: - description: Credentials references a Secret that contains credentials - to access the repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic revision: - description: Git revision to check out (branch, tag, sha, ref…) - (default:"") type: string sourceSubPath: - description: A subpath within the `source` input where the source - to build is located. type: string url: - description: Git url to clone type: string type: object successfulBuildsHistoryLimit: - description: The number of successful builds to retain, default - is 0. format: int32 type: integer timeout: - description: Timeout defines the maximum amount of time the Build - should take to execute. type: string required: - srcRepo type: object image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic port: - description: The port on which the function will be invoked format: int32 type: integer route: - description: Information needed to make HTTPRoute. Will attempt to make - HTTPRoute using the default Gateway resource if Route is nil. properties: gatewayRef: - description: GatewayRef references the Gateway resources that a - Route wants to be attached to. properties: name: - description: Name is the name of the referent. It refers to - the name of a Gateway resource. maxLength: 253 minLength: 1 type: string namespace: - description: Namespace is the namespace of the referent. When - unspecified, this refers to the local namespace of the Route. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -223,22 +154,7 @@ spec: - namespace type: object hostnames: - description: Hostnames defines a set of hostname that should match - against the HTTP Host header to select a HTTPRoute to process - the request. items: - description: "Hostname is the fully qualified domain name of a - network host. This matches the RFC 1123 definition of a hostname - with 2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname - may be prefixed with a wildcard label (`*.`). The wildcard label - must appear by itself as the first label. \n Hostname can be - \"precise\" which is a domain name without the terminating dot - of a network host (e.g. \"foo.example.com\") or \"wildcard\", - which is a domain name prefixed with a single wildcard label - (e.g. `*.example.com`). \n Note that as per RFC1035 and RFC1123, - a *label* must consist of lower case alphanumeric characters - or '-', and must start and end with an alphanumeric character. - No other punctuation is allowed." maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -246,66 +162,26 @@ spec: maxItems: 16 type: array rules: - description: Rules are a list of HTTP matchers, filters and actions. items: - description: HTTPRouteRule defines semantics for matching an HTTP - request based on conditions (matches), processing it (filters), - and forwarding the request to an API object (backendRefs). properties: backendRefs: - description: "If unspecified or invalid (refers to a non-existent - resource or a Service with no endpoints), the rule performs - no forwarding. If there are also no filters specified that - would result in a response being sent, a HTTP 503 status - code is returned. 503 responses must be sent so that the - overall weight is respected; if an invalid backend is requested - to have 80% of requests, then 80% of requests must get a - 503 instead. \n Support: Core for Kubernetes Service Support: - Custom for any other resource \n Support for weight: Core" items: - description: HTTPBackendRef defines how a HTTPRoute should - forward an HTTP request. properties: filters: - description: "Filters defined at this level should be - executed if and only if the request is being forwarded - to the backend defined here. \n Support: Custom (For - broader support of filters, use the Filters field - in HTTPRouteRule.)" items: - description: HTTPRouteFilter defines processing steps - that must be completed during the request or response - lifecycle. HTTPRouteFilters are meant as an extension - point to express processing that may be done in - Gateway implementations. Some examples include request - or response modification, implementing authentication - strategies, rate-limiting, and traffic shaping. - API guarantee/conformance is defined based on the - type of the filter. properties: extensionRef: - description: "ExtensionRef is an optional, implementation-specific - extension to the \"filter\" behavior. For example, - resource \"myroutefilter\" in group \"networking.example.net\"). - ExtensionRef MUST NOT be used for core and extended - filters. \n Support: Implementation-specific" properties: group: - description: Group is the group of the referent. - For example, "networking.k8s.io". When unspecified - (empty string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string @@ -315,43 +191,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier defines a - schema for a filter that modifies request headers. - \n Support: Core" properties: add: - description: "Add adds the given header(s) - (name, value) to the request before the - action. It appends to any existing values - associated with the header name. \n Input: - GET /foo HTTP/1.1 my-header: foo \n Config: - add: - name: \"my-header\" value: \"bar\" - \n Output: GET /foo HTTP/1.1 my-header: - foo my-header: bar" items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. properties: name: - description: "Name is the name of the - HTTP Header to be matched. Name matching - MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with - an equivalent name MUST be considered - for a match. Subsequent entries with - an equivalent header name MUST be - ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" - are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of HTTP - Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -365,51 +214,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given header(s) from - the HTTP request before the action. The - value of Remove is a list of HTTP header - names. Note that the header names are case-insensitive - (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 my-header1: - foo my-header2: bar my-header3: baz \n Config: - remove: [\"my-header1\", \"my-header3\"] - \n Output: GET /foo HTTP/1.1 my-header2: - bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the request with - the given header (name, value) before the - action. \n Input: GET /foo HTTP/1.1 my-header: - foo \n Config: set: - name: \"my-header\" - value: \"bar\" \n Output: GET /foo HTTP/1.1 - my-header: bar" items: - description: HTTPHeader represents an HTTP - Header name and value as defined by RFC - 7230. properties: name: - description: "Name is the name of the - HTTP Header to be matched. Name matching - MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with - an equivalent name MUST be considered - for a match. Subsequent entries with - an equivalent header name MUST be - ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" - are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of HTTP - Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -424,77 +241,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines a schema for - a filter that mirrors requests. Requests are - sent to the specified destination, but responses - from that destination are ignored. \n Support: - Extended" properties: backendRef: - description: "BackendRef references a resource - where mirrored requests are sent. \n If - the referent cannot be found, this BackendRef - is invalid and must be dropped from the - Gateway. The controller must ensure the - \"ResolvedRefs\" condition on the Route - status is set to `status: False` and not - configure this backend in the underlying - implementation. \n If there is a cross-namespace - reference to an *existing* object that is - not allowed by a ReferencePolicy, the controller - must ensure the \"ResolvedRefs\" condition - on the Route is set to `status: False`, - with the \"RefNotPermitted\" reason and - not configure this backend in the underlying - implementation. \n In either error case, - the Message of the `ResolvedRefs` Condition - should be used to provide more detail about - the problem. \n Support: Extended for Kubernetes - Service Support: Custom for any other resource" properties: group: default: "" - description: Group is the group of the - referent. For example, "networking.k8s.io". - When unspecified (empty string), core - API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace - of the backend. When unspecified, the - local namespace is inferred. \n Note - that when a namespace is specified, - a ReferencePolicy object is required - in the referent namespace to allow that - namespace's owner to accept the reference. - See the ReferencePolicy documentation - for details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination - port number to use for this resource. - Port is required when the referent is - a Kubernetes Service. For other resources, - destination port might be derived from - the referent resource or this field. format: int32 maximum: 65535 minimum: 1 @@ -506,74 +276,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines a schema - for a filter that responds to the request with - an HTTP redirection. \n Support: Core" properties: hostname: - description: "Hostname is the hostname to - be used in the value of the `Location` header - in the response. When empty, the hostname - of the request is used. \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port to be used - in the value of the `Location` header in - the response. When empty, port (if specified) - of the request is used. \n Support: Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme to be used - in the value of the `Location` header in - the response. When empty, the scheme of - the request is used. \n Support: Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the HTTP status - code to be used in response. \n Support: - Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the type of filter - to apply. As with other API fields, types are - classified into three conformance levels: \n - - Core: Filter types and their corresponding - configuration defined by \"Support: Core\" in - this package, e.g. \"RequestHeaderModifier\". - All implementations must support core filters. - \n - Extended: Filter types and their corresponding - configuration defined by \"Support: Extended\" - in this package, e.g. \"RequestMirror\". Implementers - are encouraged to support extended filters. - \n - Custom: Filters that are defined and supported - by specific vendors. In the future, filters - showing convergence in behavior across multiple - implementations will be considered for inclusion - in extended or core conformance levels. Filter-specific - configuration for such filters is specified - using the ExtensionRef field. `Type` should - be set to \"ExtensionRef\" for custom filters. - \n Implementers are encouraged to define custom - implementation types to extend the core API - with implementation-specific behavior. \n If - a reference to a custom filter type cannot be - resolved, the filter MUST NOT be skipped. Instead, - requests that would have been processed by that - filter MUST receive a HTTP error response." enum: - RequestHeaderModifier - RequestMirror @@ -587,62 +313,31 @@ spec: type: array group: default: "" - description: Group is the group of the referent. For - example, "networking.k8s.io". When unspecified (empty - string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace of the backend. - When unspecified, the local namespace is inferred. - \n Note that when a namespace is specified, a ReferencePolicy - object is required in the referent namespace to allow - that namespace's owner to accept the reference. See - the ReferencePolicy documentation for details. \n - Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination port number - to use for this resource. Port is required when the - referent is a Kubernetes Service. For other resources, - destination port might be derived from the referent - resource or this field. format: int32 maximum: 65535 minimum: 1 type: integer weight: default: 1 - description: "Weight specifies the proportion of requests - forwarded to the referenced backend. This is computed - as weight/(sum of all weights in this BackendRefs - list). For non-zero values, there may be some epsilon - from the exact proportion defined here depending on - the precision an implementation supports. Weight is - not a percentage and the sum of weights does not need - to equal 100. \n If only one backend is specified - and it has a weight greater than 0, 100% of the traffic - is forwarded to that backend. If weight is set to - 0, no traffic should be forwarded for this entry. - If unspecified, weight defaults to 1. \n Support for - this field varies based on the context where used." format: int32 maximum: 1000000 minimum: 0 @@ -653,50 +348,20 @@ spec: maxItems: 16 type: array filters: - description: "Filters define the filters that are applied - to requests that match this rule. \n The effects of ordering - of multiple behaviors are currently unspecified. This can - change in the future based on feedback during the alpha - stage. \n Conformance-levels at this level are defined based - on the type of filter: \n - ALL core filters MUST be supported - by all implementations. - Implementers are encouraged to - support extended filters. - Implementation-specific custom - filters have no API guarantees across implementations. \n - Specifying a core filter multiple times has unspecified - or custom conformance. \n Support: Core" items: - description: HTTPRouteFilter defines processing steps that - must be completed during the request or response lifecycle. - HTTPRouteFilters are meant as an extension point to express - processing that may be done in Gateway implementations. - Some examples include request or response modification, - implementing authentication strategies, rate-limiting, - and traffic shaping. API guarantee/conformance is defined - based on the type of the filter. properties: extensionRef: - description: "ExtensionRef is an optional, implementation-specific - extension to the \"filter\" behavior. For example, - resource \"myroutefilter\" in group \"networking.example.net\"). - ExtensionRef MUST NOT be used for core and extended - filters. \n Support: Implementation-specific" properties: group: - description: Group is the group of the referent. - For example, "networking.k8s.io". When unspecified - (empty string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string @@ -706,40 +371,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier defines a schema - for a filter that modifies request headers. \n Support: - Core" properties: add: - description: "Add adds the given header(s) (name, - value) to the request before the action. It appends - to any existing values associated with the header - name. \n Input: GET /foo HTTP/1.1 my-header: foo - \n Config: add: - name: \"my-header\" value: \"bar\" - \n Output: GET /foo HTTP/1.1 my-header: foo my-header: - bar" items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. properties: name: - description: "Name is the name of the HTTP - Header to be matched. Name matching MUST - be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with an equivalent - name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST - be ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" are - considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of HTTP Header - to be matched. maxLength: 4096 minLength: 1 type: string @@ -753,46 +394,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given header(s) from the - HTTP request before the action. The value of Remove - is a list of HTTP header names. Note that the - header names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 my-header1: foo my-header2: - bar my-header3: baz \n Config: remove: [\"my-header1\", - \"my-header3\"] \n Output: GET /foo HTTP/1.1 my-header2: - bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the request with the - given header (name, value) before the action. - \n Input: GET /foo HTTP/1.1 my-header: foo \n - Config: set: - name: \"my-header\" value: \"bar\" - \n Output: GET /foo HTTP/1.1 my-header: bar" items: - description: HTTPHeader represents an HTTP Header - name and value as defined by RFC 7230. properties: name: - description: "Name is the name of the HTTP - Header to be matched. Name matching MUST - be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with an equivalent - name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST - be ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" are - considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of HTTP Header - to be matched. maxLength: 4096 minLength: 1 type: string @@ -807,72 +421,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines a schema for a filter - that mirrors requests. Requests are sent to the specified - destination, but responses from that destination are - ignored. \n Support: Extended" properties: backendRef: - description: "BackendRef references a resource where - mirrored requests are sent. \n If the referent - cannot be found, this BackendRef is invalid and - must be dropped from the Gateway. The controller - must ensure the \"ResolvedRefs\" condition on - the Route status is set to `status: False` and - not configure this backend in the underlying implementation. - \n If there is a cross-namespace reference to - an *existing* object that is not allowed by a - ReferencePolicy, the controller must ensure the - \"ResolvedRefs\" condition on the Route is set - to `status: False`, with the \"RefNotPermitted\" - reason and not configure this backend in the underlying - implementation. \n In either error case, the Message - of the `ResolvedRefs` Condition should be used - to provide more detail about the problem. \n Support: - Extended for Kubernetes Service Support: Custom - for any other resource" properties: group: default: "" - description: Group is the group of the referent. - For example, "networking.k8s.io". When unspecified - (empty string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace of - the backend. When unspecified, the local namespace - is inferred. \n Note that when a namespace - is specified, a ReferencePolicy object is - required in the referent namespace to allow - that namespace's owner to accept the reference. - See the ReferencePolicy documentation for - details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination - port number to use for this resource. Port - is required when the referent is a Kubernetes - Service. For other resources, destination - port might be derived from the referent resource - or this field. format: int32 maximum: 65535 minimum: 1 @@ -884,70 +456,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines a schema for a - filter that responds to the request with an HTTP redirection. - \n Support: Core" properties: hostname: - description: "Hostname is the hostname to be used - in the value of the `Location` header in the response. - When empty, the hostname of the request is used. - \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port to be used in the - value of the `Location` header in the response. - When empty, port (if specified) of the request - is used. \n Support: Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme to be used in - the value of the `Location` header in the response. - When empty, the scheme of the request is used. - \n Support: Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the HTTP status code - to be used in response. \n Support: Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the type of filter to - apply. As with other API fields, types are classified - into three conformance levels: \n - Core: Filter types - and their corresponding configuration defined by \"Support: - Core\" in this package, e.g. \"RequestHeaderModifier\". - All implementations must support core filters. \n - - Extended: Filter types and their corresponding configuration - defined by \"Support: Extended\" in this package, - e.g. \"RequestMirror\". Implementers are encouraged - to support extended filters. \n - Custom: Filters - that are defined and supported by specific vendors. - In the future, filters showing convergence in behavior - across multiple implementations will be considered - for inclusion in extended or core conformance levels. - Filter-specific configuration for such filters is - specified using the ExtensionRef field. `Type` should - be set to \"ExtensionRef\" for custom filters. \n - Implementers are encouraged to define custom implementation - types to extend the core API with implementation-specific - behavior. \n If a reference to a custom filter type - cannot be resolved, the filter MUST NOT be skipped. - Instead, requests that would have been processed by - that filter MUST receive a HTTP error response." enum: - RequestHeaderModifier - RequestMirror @@ -964,90 +496,23 @@ spec: - path: type: PathPrefix value: / - description: "Matches define conditions used for matching - the rule against incoming HTTP requests. Each match is independent, - i.e. this rule will be matched if **any** one of the matches - is satisfied. \n For example, take the following matches - configuration: \n ``` matches: - path: value: \"/foo\" headers: - - name: \"version\" value: \"v2\" - path: value: \"/v2/foo\" - ``` \n For a request to match against this rule, a request - must satisfy EITHER of the two conditions: \n - path prefixed - with `/foo` AND contains the header `version: v2` - path - prefix of `/v2/foo` \n See the documentation for HTTPRouteMatch - on how to specify multiple match conditions that should - be ANDed together. \n If no matches are specified, the default - is a prefix path match on \"/\", which has the effect of - matching every HTTP request. \n Proxy or Load Balancer routing - configuration generated from HTTPRoutes MUST prioritize - rules based on the following criteria, continuing on ties. - Precedence must be given to the the Rule with the largest - number of: \n * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. * Characters in a matching - path. * Header matches. * Query param matches. \n If ties - still exist across multiple Routes, matching precedence - MUST be determined in order of the following criteria, continuing - on ties: \n * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order by \"/\". - \n If ties still exist within the Route that has been given - precedence, matching precedence MUST be granted to the first - matching rule meeting the above criteria." items: - description: "HTTPRouteMatch defines the predicate used - to match requests to a given action. Multiple match types - are ANDed together, i.e. the match will evaluate to true - only if all conditions are satisfied. \n For example, - the match below will match a HTTP request only if its - path starts with `/foo` AND it contains the `version: - v1` header: \n ``` match: path: value: \"/foo\" headers: - - name: \"version\" value \"v1\" ```" properties: headers: - description: Headers specifies HTTP request header matchers. - Multiple match values are ANDed together, meaning, - a request must match all the specified headers to - select the route. items: - description: HTTPHeaderMatch describes how to select - a HTTP route by matching HTTP request headers. properties: name: - description: "Name is the name of the HTTP Header - to be matched. Name matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent header - names, only the first entry with an equivalent - name MUST be considered for a match. Subsequent - entries with an equivalent header name MUST - be ignored. Due to the case-insensitivity of - header names, \"foo\" and \"Foo\" are considered - equivalent. \n When a header is repeated in - an HTTP request, it is implementation-specific - behavior as to how this is represented. Generally, - proxies should follow the guidance from the - RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 - regarding processing a repeated header, with - special handling for \"Set-Cookie\"." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string type: default: Exact - description: "Type specifies how to match against - the value of the header. \n Support: Core (Exact) - \n Support: Custom (RegularExpression) \n Since - RegularExpression HeaderMatchType has custom - conformance, implementations can support POSIX, - PCRE or any other dialects of regular expressions. - Please read the implementation's documentation - to determine the supported dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of HTTP Header - to be matched. maxLength: 4096 minLength: 1 type: string @@ -1061,10 +526,6 @@ spec: - name x-kubernetes-list-type: map method: - description: "Method specifies HTTP method matcher. - When specified, this route will be matched only if - the request has the specified method. \n Support: - Extended" enum: - GET - HEAD @@ -1080,15 +541,9 @@ spec: default: type: PathPrefix value: / - description: Path specifies a HTTP request path matcher. - If this field is not specified, a default prefix match - on the "/" path is provided. properties: type: default: PathPrefix - description: "Type specifies how to match against - the path Value. \n Support: Core (Exact, PathPrefix) - \n Support: Custom (RegularExpression)" enum: - Exact - PathPrefix @@ -1096,43 +551,23 @@ spec: type: string value: default: / - description: Value of the HTTP path to match against. maxLength: 1024 type: string type: object queryParams: - description: QueryParams specifies HTTP query parameter - matchers. Multiple match values are ANDed together, - meaning, a request must match all the specified query - parameters to select the route. items: - description: HTTPQueryParamMatch describes how to - select a HTTP route by matching HTTP query parameters. properties: name: - description: Name is the name of the HTTP query - param to be matched. This must be an exact string - match. (See https://tools.ietf.org/html/rfc7230#section-2.7.3). maxLength: 256 minLength: 1 type: string type: default: Exact - description: "Type specifies how to match against - the value of the query parameter. \n Support: - Extended (Exact) \n Support: Custom (RegularExpression) - \n Since RegularExpression QueryParamMatchType - has custom conformance, implementations can - support POSIX, PCRE or any other dialects of - regular expressions. Please read the implementation's - documentation to determine the supported dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of HTTP query - param to be matched. maxLength: 1024 minLength: 1 type: string @@ -1153,17 +588,13 @@ spec: type: array type: object serving: - description: Information needed to run a function. The serving step - will be skipped if `Serving` is nil. properties: annotations: additionalProperties: type: string - description: Annotations that will be added to the workload. type: object bindings: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -1171,14 +602,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -1189,8 +616,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -1205,31 +630,21 @@ spec: - type - version type: object - description: Configurations of dapr bindings components. type: object inputs: - description: Function inputs from Dapr components including binding, - pubsub Available for Async Runtime only. items: properties: component: - description: Component indicates the name of components in - Dapr type: string name: - description: The name of DaprIO. type: string operation: - description: Operation field tells the Dapr component which - operation it should perform. type: string params: additionalProperties: type: string - description: Parameters for dapr input/output. type: object topic: - description: Topic name of mq, required when type is pubsub type: string required: - component @@ -1239,32 +654,21 @@ spec: labels: additionalProperties: type: string - description: Parameters of asyncFunc runtime, must not be nil when - runtime is OpenFuncAsync. type: object outputs: - description: Function outputs from Dapr components including binding, - pubsub items: properties: component: - description: Component indicates the name of components in - Dapr type: string name: - description: The name of DaprIO. type: string operation: - description: Operation field tells the Dapr component which - operation it should perform. type: string params: additionalProperties: type: string - description: Parameters for dapr input/output. type: object topic: - description: Topic name of mq, required when type is pubsub type: string required: - component @@ -1274,13 +678,9 @@ spec: params: additionalProperties: type: string - description: Parameters to pass to the serving. All parameters will - be injected into the pod as environment variables. Function code - can use these parameters by getting environment variables type: object pubsub: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -1288,14 +688,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -1306,8 +702,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -1322,18 +716,13 @@ spec: - type - version type: object - description: Configurations of dapr pubsub components. type: object runtime: - description: The configuration of the backend runtime for running - function. enum: - knative - async type: string scaleOptions: - description: The ScaleOptions will help us to set up guidelines - for the autoscaling of function workloads. properties: keda: properties: @@ -1349,12 +738,8 @@ spec: format: int32 type: integer restartPolicy: - description: Restart policy for all containers within - the pod. One of 'OnFailure', 'Never'. Default to 'Never'. type: string scalingStrategy: - description: ScalingStrategy defines the strategy of - Scaling properties: customScalingQueueLengthDeduction: format: int32 @@ -1377,56 +762,22 @@ spec: scaledObject: properties: advanced: - description: AdvancedConfig specifies advance scaling - options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies - horizontal scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior - configures the scaling behavior of the target - in both Up and Down directions (scaleUp and - scaleDown fields respectively). properties: scaleDown: - description: scaleDown is scaling policy - for scaling Down. If not set, the default - value is to allow to scale down to minReplicas - pods, with a 300 second stabilization - window (i.e., the highest recommendation - for the last 300sec is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used - during scaling. At least one policy - must be specified, otherwise the HPAScalingRules - will be discarded as invalid items: - description: HPAScalingPolicy is a - single policy which must hold true - for a specified past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which - the policy should hold true. - PeriodSeconds must be greater - than zero and less than or equal - to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the - amount of change which is permitted - by the policy. It must be greater - than zero format: int32 type: integer required: @@ -1437,64 +788,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to - specify which policy should be used. - If not set, the default value Max - is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which - past recommendations should be considered - while scaling up or scaling down. - StabilizationWindowSeconds must be - greater than or equal to zero and - less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy - for scaling Up. If not set, the default - value is the higher of: * increase no - more than 4 pods per 60 seconds * double - the number of pods per 60 seconds No stabilization - is used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used - during scaling. At least one policy - must be specified, otherwise the HPAScalingRules - will be discarded as invalid items: - description: HPAScalingPolicy is a - single policy which must hold true - for a specified past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which - the policy should hold true. - PeriodSeconds must be greater - than zero and less than or equal - to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the - amount of change which is permitted - by the policy. It must be greater - than zero format: int32 type: integer required: @@ -1505,24 +814,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to - specify which policy should be used. - If not set, the default value Max - is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which - past recommendations should be considered - while scaling up or scaling down. - StabilizationWindowSeconds must be - greater than or equal to zero and - less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object @@ -1546,16 +839,12 @@ spec: format: int32 type: integer workloadType: - description: How to run the function, known values are - Deployment or StatefulSet, default is Deployment. type: string type: object type: object knative: additionalProperties: type: string - description: Refer to https://knative.dev/docs/serving/autoscaling/ - to learn more about the autoscaling options of Knative Serving. type: object maxReplicas: format: int32 @@ -1566,7 +855,6 @@ spec: type: object states: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -1574,14 +862,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -1592,8 +876,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -1608,80 +890,29 @@ spec: - type - version type: object - description: Configurations of dapr state components. type: object template: - description: Template describes the pods that will be created. The - container named `function` is the container which is used to run - the image built by the builder. If it is not set, the controller - will automatically add one. properties: activeDeadlineSeconds: - description: Optional duration in seconds the pod may be active - on the node relative to StartTime before the system will actively - try to mark it failed and kill associated containers. Value - must be a positive integer. format: int64 type: integer affinity: - description: If specified, the pod's scheduling constraints properties: nodeAffinity: - description: Describes node affinity scheduling rules for - the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node matches the corresponding matchExpressions; - the node(s) with the highest sum are the most preferred. items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a - no-op). A null preferred scheduling term matches - no objects (i.e. is also a no-op). properties: preference: - description: A node selector term, associated - with the corresponding weight. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -1691,35 +922,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -1731,9 +940,6 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: Weight associated with matching the - corresponding nodeSelectorTerm, in the range - 1-100. format: int32 type: integer required: @@ -1742,53 +948,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an - update), the system may or may not try to eventually - evict the pod from its node. properties: nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. items: - description: A null or empty node selector term - matches no objects. The requirements of them - are ANDed. The TopologySelectorTerm type implements - a subset of the NodeSelectorTerm. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -1798,35 +969,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -1844,65 +993,22 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node has pods which matches the - corresponding podAffinityTerm; the node(s) with the - highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -1914,54 +1020,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -1973,44 +1044,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. format: int32 type: integer required: @@ -2019,57 +1065,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2081,52 +1088,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2138,35 +1112,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey @@ -2174,65 +1127,22 @@ spec: type: array type: object podAntiAffinity: - description: Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions - specified by this field, but it may choose a node - that violates one or more of the expressions. The - node that is most preferred is the one with the greatest - sum of weights, i.e. for each node that meets all - of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the - node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2244,54 +1154,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2303,44 +1178,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. format: int32 type: integer required: @@ -2349,57 +1199,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2411,52 +1222,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -2468,35 +1246,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey @@ -2505,157 +1262,72 @@ spec: type: object type: object automountServiceAccountToken: - description: AutomountServiceAccountToken indicates whether - a service account token should be automatically mounted. type: boolean containers: - description: List of containers belonging to the pod. Containers - cannot currently be added or removed. There must be at least - one container in a Pod. Cannot be updated. items: - description: A single application container that you want - to run within a pod. properties: args: - description: 'Arguments to the entrypoint. The container - image''s CMD is used if this is not provided. Variable - references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The container image''s ENTRYPOINT is used if - this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If - a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -2667,117 +1339,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config - management to default or override container images in - workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should - take in response to container lifecycle events. Cannot - be updated. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -2785,102 +1393,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -2888,43 +1443,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -2932,74 +1469,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3007,131 +1507,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. - Not specifying a port here DOES NOT prevent that port - from being exposed. Any port which is listening on the - default "0.0.0.0" address inside a container will be - accessible from the network. Modifying this array with - strategic merge patch may corrupt the data. For more - information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -3142,74 +1573,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if - the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3217,104 +1611,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -3330,8 +1671,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -3340,270 +1679,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields - of SecurityContext override the equivalent fields of - PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has - successfully initialized. If specified, no other probes - are executed until this completes successfully. If this - probe fails, the Pod will be restarted, just as if the - livenessProbe failed. This can be used to provide different - probe parameters at the beginning of a Pod''s lifecycle, - when it might take a long time to load data or warm - a cache, than during steady-state operation. This cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3611,143 +1781,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -3755,43 +1843,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -3799,226 +1863,100 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array dnsConfig: - description: Specifies the DNS parameters of a pod. Parameters - specified here will be merged to the generated DNS configuration - based on DNSPolicy. properties: nameservers: - description: A list of DNS name server IP addresses. This - will be appended to the base nameservers generated from - DNSPolicy. Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be - merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options - given in Options will override those that appear in the - base DNSPolicy. items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. properties: name: - description: Required. type: string value: type: string type: object type: array searches: - description: A list of DNS search domains for host-name - lookup. This will be appended to the base search paths - generated from DNSPolicy. Duplicated search paths will - be removed. items: type: string type: array type: object dnsPolicy: - description: Set DNS policy for the pod. Defaults to "ClusterFirst". - Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', - 'Default' or 'None'. DNS parameters given in DNSConfig will - be merged with the policy selected with DNSPolicy. To have - DNS options set along with hostNetwork, you have to specify - DNS policy explicitly to 'ClusterFirstWithHostNet'. type: string enableServiceLinks: - description: 'EnableServiceLinks indicates whether information - about services should be injected into pod''s environment - variables, matching the syntax of Docker links. Optional: - Defaults to true.' type: boolean ephemeralContainers: - description: List of ephemeral containers run in this pod. Ephemeral - containers may be run in an existing pod to perform user-initiated - actions such as debugging. This list cannot be specified when - creating a pod, and it cannot be modified by updating the - pod spec. In order to add an ephemeral container to an existing - pod, use the pod's ephemeralcontainers subresource. items: - description: "An EphemeralContainer is a temporary container - that you may add to an existing Pod for user-initiated activities - such as debugging. Ephemeral containers have no resource - or scheduling guarantees, and they will not be restarted - when they exit or when a Pod is removed or restarted. The - kubelet may evict a Pod if an ephemeral container causes - the Pod to exceed its resource allocation. \n To add an - ephemeral container, use the ephemeralcontainers subresource - of an existing Pod. Ephemeral containers may not be removed - or restarted." properties: args: - description: 'Arguments to the entrypoint. The image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded - using the container''s environment. If a variable cannot - be resolved, the reference in the input string will - be unchanged. Double $$ are reduced to a single $, which - allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". Escaped - references will never be expanded, regardless of whether - the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -4030,112 +1968,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Lifecycle is not allowed for ephemeral containers. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4143,102 +2022,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4246,43 +2072,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4290,72 +2098,37 @@ spec: type: object type: object livenessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4363,124 +2136,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the ephemeral container specified - as a DNS_LABEL. This name must be unique among all containers, - init containers and ephemeral containers. type: string ports: - description: Ports are not allowed for ephemeral containers. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -4491,72 +2202,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4564,105 +2240,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: Resources are not allowed for ephemeral containers. - Ephemeral containers use spare resources already allocated - to the pod. properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -4678,8 +2300,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -4688,262 +2308,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'Optional: SecurityContext defines the security - options the ephemeral container should be run with. - If set, the fields of SecurityContext override the equivalent - fields of PodSecurityContext.' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4951,153 +2410,63 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean targetContainerName: - description: "If set, the name of the container from PodSpec - that this ephemeral container targets. The ephemeral - container will be run in the namespaces (IPC, PID, etc) - of this container. If not set then the ephemeral container - uses the namespaces configured in the Pod spec. \n The - container runtime must implement support for this feature. - If the runtime does not support namespace targeting - then the result of setting this field is undefined." type: string terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -5105,44 +2474,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Subpath mounts are not allowed for ephemeral - containers. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -5150,240 +2494,105 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array hostAliases: - description: HostAliases is an optional list of hosts and IPs - that will be injected into the pod's hosts file if specified. - This is only valid for non-hostNetwork pods. items: - description: HostAlias holds the mapping between IP and hostnames - that will be injected as an entry in the pod's hosts file. properties: hostnames: - description: Hostnames for the above IP address. items: type: string type: array ip: - description: IP address of the host file entry. type: string type: object type: array hostIPC: - description: 'Use the host''s ipc namespace. Optional: Default - to false.' type: boolean hostNetwork: - description: Host networking requested for this pod. Use the - host's network namespace. If this option is set, the ports - that will be used must be specified. Default to false. type: boolean hostPID: - description: 'Use the host''s pid namespace. Optional: Default - to false.' type: boolean hostUsers: - description: 'Use the host''s user namespace. Optional: Default - to true. If set to true or not present, the pod will be run - in the host user namespace, useful for when the pod needs - a feature only available to the host user namespace, such - as loading a kernel module with CAP_SYS_MODULE. When set to - false, a new userns is created for the pod. Setting false - is useful for mitigating container breakout vulnerabilities - even allowing users to run their containers as root without - actually having root privileges on the host. This field is - alpha-level and is only honored by servers that enable the - UserNamespacesSupport feature.' type: boolean hostname: - description: Specifies the hostname of the Pod If not specified, - the pod's hostname will be set to a system-defined value. type: string imagePullSecrets: - description: 'ImagePullSecrets is an optional list of references - to secrets in the same namespace to use for pulling any of - the images used by this PodSpec. If specified, these secrets - will be passed to individual puller implementations for them - to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same - namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: - description: 'List of initialization containers belonging to - the pod. Init containers are executed in order prior to containers - being started. If any init container fails, the pod is considered - to have failed and is handled according to its restartPolicy. - The name for an init container or normal container must be - unique among all containers. Init containers may not have - Lifecycle actions, Readiness probes, Liveness probes, or Startup - probes. The resourceRequirements of an init container are - taken into account during scheduling by finding the highest - request/limit for each resource type, and then using the max - of of that value or the sum of the normal containers. Limits - are applied to init containers in a similar fashion. Init - containers cannot currently be added or removed. Cannot be - updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: - description: A single application container that you want - to run within a pod. properties: args: - description: 'Arguments to the entrypoint. The container - image''s CMD is used if this is not provided. Variable - references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The container image''s ENTRYPOINT is used if - this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If - a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -5395,117 +2604,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config - management to default or override container images in - workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should - take in response to container lifecycle events. Cannot - be updated. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -5513,102 +2658,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -5616,43 +2708,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -5660,74 +2734,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -5735,131 +2772,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. - Not specifying a port here DOES NOT prevent that port - from being exposed. Any port which is listening on the - default "0.0.0.0" address inside a container will be - accessible from the network. Modifying this array with - strategic merge patch may corrupt the data. For more - information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -5870,74 +2838,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if - the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -5945,104 +2876,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -6058,8 +2936,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -6068,270 +2944,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields - of SecurityContext override the equivalent fields of - PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has - successfully initialized. If specified, no other probes - are executed until this completes successfully. If this - probe fails, the Pod will be restarted, just as if the - livenessProbe failed. This can be used to provide different - probe parameters at the beginning of a Pod''s lifecycle, - when it might take a long time to load data or warm - a cache, than during steady-state operation. This cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -6339,143 +3046,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -6483,43 +3108,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -6527,54 +3128,21 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array nodeName: - description: NodeName is a request to schedule this pod onto - a specific node. If it is non-empty, the scheduler simply - schedules this pod onto that node, assuming that it fits resource - requirements. type: string nodeSelector: additionalProperties: type: string - description: 'NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match a - node''s labels for the pod to be scheduled on that node. More - info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object x-kubernetes-map-type: atomic os: - description: "Specifies the OS of the containers in the pod. - Some pod and container fields are restricted if this is set. - \n If the OS field is set to linux, the following fields must - be unset: -securityContext.windowsOptions \n If the OS field - is set to windows, following fields must be unset: - spec.hostPID - - spec.hostIPC - spec.hostUsers - spec.securityContext.seLinuxOptions - - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - - spec.shareProcessNamespace - spec.securityContext.runAsUser - - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - - spec.containers[*].securityContext.runAsGroup" properties: name: - description: 'Name is the name of the operating system. - The currently supported values are linux and windows. - Additional value may be defined in future and can be one - of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration - Clients should expect to handle additional values and - treat unrecognized values in this field as os: null' type: string required: - name @@ -6586,100 +3154,33 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Overhead represents the resource overhead associated - with running a pod for a given RuntimeClass. This field will - be autopopulated at admission time by the RuntimeClass admission - controller. If the RuntimeClass admission controller is enabled, - overhead must not be set in Pod create requests. The RuntimeClass - admission controller will reject Pod create requests which - have the overhead already set. If RuntimeClass is configured - and selected in the PodSpec, Overhead will be set to the value - defined in the corresponding RuntimeClass, otherwise it will - remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md' type: object preemptionPolicy: - description: PreemptionPolicy is the Policy for preempting pods - with lower priority. One of Never, PreemptLowerPriority. Defaults - to PreemptLowerPriority if unset. type: string priority: - description: The priority value. Various system components use - this field to find the priority of the pod. When Priority - Admission Controller is enabled, it prevents users from setting - this field. The admission controller populates this field - from PriorityClassName. The higher the value, the higher the - priority. format: int32 type: integer priorityClassName: - description: If specified, indicates the pod's priority. "system-node-critical" - and "system-cluster-critical" are two special keywords which - indicate the highest priorities with the former being the - highest priority. Any other name must be defined by creating - a PriorityClass object with that name. If not specified, the - pod priority will be default or zero if there is no default. type: string readinessGates: - description: 'If specified, all readiness gates will be evaluated - for pod readiness. A pod is ready when all its containers - are ready AND all conditions specified in the readiness gates - have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates' items: - description: PodReadinessGate contains the reference to a - pod condition properties: conditionType: - description: ConditionType refers to a condition in the - pod's condition list with matching type. type: string required: - conditionType type: object type: array resourceClaims: - description: "ResourceClaims defines which ResourceClaims must - be allocated and reserved before the Pod is allowed to start. - The resources will be made available to those containers which - consume them by name. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. \n This - field is immutable." items: - description: PodResourceClaim references exactly one ResourceClaim - through a ClaimSource. It adds a name to it that uniquely - identifies the ResourceClaim inside the Pod. Containers - that need access to the ResourceClaim reference it with - this name. properties: name: - description: Name uniquely identifies this resource claim - inside the pod. This must be a DNS_LABEL. type: string source: - description: Source describes where to find the ResourceClaim. properties: resourceClaimName: - description: ResourceClaimName is the name of a ResourceClaim - object in the same namespace as this pod. type: string resourceClaimTemplateName: - description: "ResourceClaimTemplateName is the name - of a ResourceClaimTemplate object in the same namespace - as this pod. \n The template will be used to create - a new ResourceClaim, which will be bound to this - pod. When this pod is deleted, the ResourceClaim - will also be deleted. The name of the ResourceClaim - will be -, where is the PodResourceClaim.Name. Pod validation - will reject the pod if the concatenated name is - not valid for a ResourceClaim (e.g. too long). \n - An existing ResourceClaim with that name that is - not owned by the pod will not be used for the pod - to avoid using an unrelated resource by mistake. - Scheduling and pod startup are then blocked until - the unrelated ResourceClaim is removed. \n This - field is immutable and no changes will be made to - the corresponding ResourceClaim by the control plane - after creating the ResourceClaim." type: string type: object required: @@ -6690,35 +3191,15 @@ spec: - name x-kubernetes-list-type: map restartPolicy: - description: 'Restart policy for all containers within the pod. - One of Always, OnFailure, Never. Default to Always. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' type: string runtimeClassName: - description: 'RuntimeClassName refers to a RuntimeClass object - in the node.k8s.io group, which should be used to run this - pod. If no RuntimeClass resource matches the named class, - the pod will not be run. If unset or empty, the "legacy" RuntimeClass - will be used, which is an implicit class with an empty definition - that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class' type: string schedulerName: - description: If specified, the pod will be dispatched by specified - scheduler. If not specified, the pod will be dispatched by - default scheduler. type: string schedulingGates: - description: "SchedulingGates is an opaque list of values that - if specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness. - \n This is an alpha-level feature enabled by PodSchedulingReadiness - feature gate." items: - description: PodSchedulingGate is associated to a Pod to guard - its scheduling. properties: name: - description: Name of the scheduling gate. Each scheduling - gate must have a unique name field. type: string required: - name @@ -6728,140 +3209,51 @@ spec: - name x-kubernetes-list-type: map securityContext: - description: 'SecurityContext holds pod-level security attributes - and common container settings. Optional: Defaults to empty. See - type description for default values of each field.' properties: fsGroup: - description: "A special supplemental group that applies - to all containers in a pod. Some volume types allow the - Kubelet to change the ownership of that volume to be owned - by the pod: \n 1. The owning GID will be the FSGroup 2. - The setgid bit is set (new files created in the volume - will be owned by FSGroup) 3. The permission bits are OR'd - with rw-rw---- \n If unset, the Kubelet will not modify - the ownership and permissions of any volume. Note that - this field cannot be set when spec.os.name is windows." format: int64 type: integer fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types - which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such - as: secret, configmaps and emptydir. Valid values are - "OnRootMismatch" and "Always". If not specified, "Always" - is used. Note that this field cannot be set when spec.os.name - is windows.' type: string runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as a - non-root user. If true, the Kubelet will validate the - image at runtime to ensure that it does not run as UID - 0 (root) and fail to start the container if it does. If - unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence for - that container. Note that this field cannot be set when - spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a - random SELinux context for each container. May also be - set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by the containers - in this pod. Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile - must be preconfigured on the node to work. Must be - a descending path, relative to the kubelet's configured - seccomp profile location. Must only be set if type - is "Localhost". type: string type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should be - used. RuntimeDefault - the container runtime default - profile should be used. Unconfined - no profile should - be applied." type: string required: - type type: object supplementalGroups: - description: A list of groups applied to the first process - run in each container, in addition to the container's - primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container - process. If unspecified, no additional groups are added - to any container. Note that group memberships defined - in the container image for the uid of the container process - are still effective, even if they are not included in - this list. Note that this field cannot be set when spec.os.name - is windows. items: format: int64 type: integer type: array sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. Note that this field cannot - be set when spec.os.name is windows. items: - description: Sysctl defines a kernel parameter to be set properties: name: - description: Name of a property to set type: string value: - description: Value of a property to set type: string required: - name @@ -6869,172 +3261,59 @@ spec: type: object type: array windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options within a container's - SecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is - alpha-level and will only be honored by components - that enable the WindowsHostProcessContainers feature - flag. Setting this field without the feature flag - will result in errors when validating the Pod. All - of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object serviceAccount: - description: 'DeprecatedServiceAccount is a depreciated alias - for ServiceAccountName. Deprecated: Use serviceAccountName - instead.' type: string serviceAccountName: - description: 'ServiceAccountName is the name of the ServiceAccount - to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string setHostnameAsFQDN: - description: If true the pod's hostname will be configured as - the pod's FQDN, rather than the leaf name (the default). In - Linux containers, this means setting the FQDN in the hostname - field of the kernel (the nodename field of struct utsname). - In Windows containers, this means setting the registry value - of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters - to FQDN. If a pod does not have FQDN, this has no effect. - Default to false. type: boolean shareProcessNamespace: - description: 'Share a single process namespace between all of - the containers in a pod. When this is set containers will - be able to view and signal processes from other containers - in the same pod, and the first process in each container will - not be assigned PID 1. HostPID and ShareProcessNamespace cannot - both be set. Optional: Default to false.' type: boolean subdomain: - description: If specified, the fully qualified Pod hostname - will be "...svc.". If not specified, the pod will not have a domainname - at all. type: string terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully. May be decreased in delete request. Value must - be non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). If this - value is nil, the default grace period will be used instead. - The grace period is the duration in seconds after the processes - running in the pod are sent a termination signal and the time - when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your - process. Defaults to 30 seconds. format: int64 type: integer tolerations: - description: If specified, the pod's tolerations. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of - time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. type: string type: object type: array topologySpreadConstraints: - description: TopologySpreadConstraints describes how a group - of pods ought to spread across topology domains. Scheduler - will schedule pods in a way which abides by the constraints. - All topologySpreadConstraints are ANDed. items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. properties: labelSelector: - description: LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine - the number of pods in their corresponding topology domain. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. properties: key: - description: key is the label key that the selector - applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. items: type: string type: array @@ -7046,131 +3325,27 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic matchLabelKeys: - description: MatchLabelKeys is a set of pod label keys - to select the pods over which spreading will be calculated. - The keys are used to lookup values from the incoming - pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading - will be calculated for the incoming pod. Keys that don't - exist in the incoming pod labels will be ignored. A - null or empty list means only match against labelSelector. items: type: string type: array x-kubernetes-list-type: atomic maxSkew: - description: 'MaxSkew describes the degree to which pods - may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, - it is the maximum permitted difference between the number - of matching pods in the target topology and the global - minimum. The global minimum is the minimum number of - matching pods in an eligible domain or zero if the number - of eligible domains is less than MinDomains. For example, - in a 3-zone cluster, MaxSkew is set to 1, and pods with - the same labelSelector spread as 2/2/1: In this case, - the global minimum is 1. | zone1 | zone2 | zone3 | | P - P | P P | P | - if MaxSkew is 1, incoming pod - can only be scheduled to zone3 to become 2/2/2; scheduling - it onto zone1(zone2) would make the ActualSkew(3-1) - on zone1(zone2) violate MaxSkew(1). - if MaxSkew is - 2, incoming pod can be scheduled onto any zone. When - `whenUnsatisfiable=ScheduleAnyway`, it is used to give - higher precedence to topologies that satisfy it. It''s - a required field. Default value is 1 and 0 is not allowed.' format: int32 type: integer minDomains: - description: "MinDomains indicates a minimum number of - eligible domains. When the number of eligible domains - with matching topology keys is less than minDomains, - Pod Topology Spread treats \"global minimum\" as 0, - and then the calculation of Skew is performed. And when - the number of eligible domains with matching topology - keys equals or greater than minDomains, this value has - no effect on scheduling. As a result, when the number - of eligible domains is less than minDomains, scheduler - won't schedule more than maxSkew Pods to those domains. - If value is nil, the constraint behaves as if MinDomains - is equal to 1. Valid values are integers greater than - 0. When value is not nil, WhenUnsatisfiable must be - DoNotSchedule. \n For example, in a 3-zone cluster, - MaxSkew is set to 2, MinDomains is set to 5 and pods - with the same labelSelector spread as 2/2/2: | zone1 - | zone2 | zone3 | | P P | P P | P P | The number - of domains is less than 5(MinDomains), so \"global minimum\" - is treated as 0. In this situation, new pod with the - same labelSelector cannot be scheduled, because computed - skew will be 3(3 - 0) if new Pod is scheduled to any - of the three zones, it will violate MaxSkew. \n This - is a beta field and requires the MinDomainsInPodTopologySpread - feature gate to be enabled (enabled by default)." format: int32 type: integer nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will - treat Pod's nodeAffinity/nodeSelector when calculating - pod topology spread skew. Options are: - Honor: only - nodes matching nodeAffinity/nodeSelector are included - in the calculations. - Ignore: nodeAffinity/nodeSelector - are ignored. All nodes are included in the calculations. - \n If this value is nil, the behavior is equivalent - to the Honor policy. This is a beta-level feature default - enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." type: string nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat - node taints when calculating pod topology spread skew. - Options are: - Honor: nodes without taints, along with - tainted nodes for which the incoming pod has a toleration, - are included. - Ignore: node taints are ignored. All - nodes are included. \n If this value is nil, the behavior - is equivalent to the Ignore policy. This is a beta-level - feature default enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." type: string topologyKey: - description: TopologyKey is the key of node labels. Nodes - that have a label with this key and identical values - are considered to be in the same topology. We consider - each as a "bucket", and try to put balanced - number of pods into each bucket. We define a domain - as a particular instance of a topology. Also, we define - an eligible domain as a domain whose nodes meet the - requirements of nodeAffinityPolicy and nodeTaintsPolicy. - e.g. If TopologyKey is "kubernetes.io/hostname", each - Node is a domain of that topology. And, if TopologyKey - is "topology.kubernetes.io/zone", each zone is a domain - of that topology. It's a required field. type: string whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal - with a pod if it doesn''t satisfy the spread constraint. - - DoNotSchedule (default) tells the scheduler not to - schedule it. - ScheduleAnyway tells the scheduler to - schedule the pod in any location, but giving higher - precedence to topologies that would help reduce the - skew. A constraint is considered "Unsatisfiable" for - an incoming pod if and only if every possible node assignment - for that pod would violate "MaxSkew" on some topology. - For example, in a 3-zone cluster, MaxSkew is set to - 1, and pods with the same labelSelector spread as 3/1/1: - | zone1 | zone2 | zone3 | | P P P | P | P | - If WhenUnsatisfiable is set to DoNotSchedule, incoming - pod can only be scheduled to zone2(zone3) to become - 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies - MaxSkew(1). In other words, the cluster can still be - imbalanced, but scheduler won''t make it *more* imbalanced. - It''s a required field.' type: string required: - maxSkew @@ -7183,240 +3358,106 @@ spec: - whenUnsatisfiable x-kubernetes-list-type: map volumes: - description: 'List of volumes that can be mounted by containers - belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' items: - description: Volume represents a named volume in a pod that - may be accessed by any container in the pod. properties: awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty).' format: int32 type: integer readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: - description: 'volumeID is unique ID of the persistent - disk resource in AWS (Amazon EBS volume). More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. properties: cachingMode: - description: 'cachingMode is the Host Caching mode: - None, Read Only, Read Write.' type: string diskName: - description: diskName is the Name of the data disk - in the blob storage type: string diskURI: - description: diskURI is the URI of data disk in the - blob storage type: string fsType: - description: fsType is Filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure managed - data disk (only in managed availability set). defaults - to shared' type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: - description: azureFile represents an Azure File Service - mount on the host and bind mount to the pod. properties: readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretName: - description: secretName is the name of secret that - contains Azure Storage Account Name and Key type: string shareName: - description: shareName is the azure share Name type: string required: - secretName - shareName type: object cephfs: - description: cephFS represents a Ceph FS mount on the - host that shares a pod's lifetime properties: monitors: - description: 'monitors is Required: Monitors is a - collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: - description: 'path is Optional: Used as the mounted - root, rather than the full Ceph tree, default is - /' type: string readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: - description: 'secretFile is Optional: SecretFile is - the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: - description: 'secretRef is Optional: SecretRef is - reference to the authentication secret for User, - default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is optional: User is the rados - user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: - description: 'cinder represents a cinder volume attached - and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: - description: 'readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to - OpenStack.' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeID: - description: 'volumeID used to identify the volume - in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: - description: configMap represents a configMap that should - populate this volume properties: defaultMode: - description: 'defaultMode is optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. type: string required: - key @@ -7424,146 +3465,66 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: optional specify whether the ConfigMap - or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers (Beta feature). properties: driver: - description: driver is the name of the CSI driver - that handles this volume. Consult with your admin - for the correct name as registered in the cluster. type: string fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the - associated CSI driver which will determine the default - filesystem to apply. type: string nodePublishSecretRef: - description: nodePublishSecretRef is a reference to - the secret object containing sensitive information - to pass to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the - secret object contains more than one secret, all - secret references are passed. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string - description: volumeAttributes stores driver-specific - properties that are passed to the CSI driver. Consult - your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: - description: downwardAPI represents downward API about - the pod that should populate this volume properties: defaultMode: - description: 'Optional: mode bits to use on created - files by default. Must be a Optional: mode bits - used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: Items is a list of downward API volume - file items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field properties: fieldRef: - description: 'Required: Selects a field of the - pod: only annotations, labels, name and namespace - are supported.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used to set - permissions on this file, must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource @@ -7575,126 +3536,35 @@ spec: type: array type: object emptyDir: - description: 'emptyDir represents a temporary directory - that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: - description: 'medium represents what type of storage - medium should back this directory. The default is - "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More - info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string - description: 'sizeLimit is the total amount of local - storage required for this EmptyDir volume. The size - limit is also applicable for memory medium. The - maximum usage on memory medium EmptyDir would be - the minimum value between the SizeLimit specified - here and the sum of memory limits of all containers - in a pod. The default is nil which means that the - limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle - is tied to the pod that defines it - it will be created - before the pod starts, and deleted when the pod is removed. - \n Use this if: a) the volume is only needed while the - pod runs, b) features of normal volumes like restoring - from snapshot or capacity tracking are needed, c) the - storage driver is specified through a storage class, - and d) the storage driver supports dynamic volume provisioning - through a PersistentVolumeClaim (see EphemeralVolumeSource - for more information on the connection between this - volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim - or one of the vendor-specific APIs for volumes that - persist for longer than the lifecycle of an individual - pod. \n Use CSI for light-weight local ephemeral volumes - if the CSI driver is meant to be used that way - see - the documentation of the driver for more information. - \n A pod can use both types of ephemeral volumes and - persistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone - PVC to provision the volume. The pod in which this - EphemeralVolumeSource is embedded will be the owner - of the PVC, i.e. the PVC will be deleted together - with the pod. The name of the PVC will be `-` where `` is the - name from the `PodSpec.Volumes` array entry. Pod - validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). - \n An existing PVC with that name that is not owned - by the pod will *not* be used for the pod to avoid - using an unrelated volume by mistake. Starting the - pod is then blocked until the unrelated PVC is removed. - If such a pre-created PVC is meant to be used by - the pod, the PVC has to updated with an owner reference - to the pod once the pod exists. Normally this should - not be necessary, but it may be useful when manually - reconstructing a broken cluster. \n This field is - read-only and no changes will be made by Kubernetes - to the PVC after it has been created. \n Required, - must not be nil." properties: metadata: - description: May contain labels and annotations - that will be copied into the PVC when creating - it. No other fields are allowed and will be - rejected during validation. type: object spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into - the PVC that gets created from this template. - The same fields as in a PersistentVolumeClaim - are also valid here. properties: accessModes: - description: 'accessModes contains the desired - access modes the volume should have. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: - description: 'dataSource field can be used - to specify either: * An existing VolumeSnapshot - object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller - can support the specified data source, it - will create a new volume based on the contents - of the specified data source. When the AnyVolumeDataSource - feature gate is enabled, dataSource contents - will be copied to dataSourceRef, and dataSourceRef - contents will be copied to dataSource when - dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef - will not be copied to dataSource.' properties: apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string required: - kind @@ -7702,100 +3572,25 @@ spec: type: object x-kubernetes-map-type: atomic dataSourceRef: - description: 'dataSourceRef specifies the - object from which to populate the volume - with data, if a non-empty volume is desired. - This may be any object from a non-empty - API group (non core object) or a PersistentVolumeClaim - object. When this field is specified, volume - binding will only succeed if the type of - the specified object matches some installed - volume populator or dynamic provisioner. - This field will replace the functionality - of the dataSource field and as such if both - fields are non-empty, they must have the - same value. For backwards compatibility, - when namespace isn''t specified in dataSourceRef, - both fields (dataSource and dataSourceRef) - will be set to the same value automatically - if one of them is empty and the other is - non-empty. When namespace is specified in - dataSourceRef, dataSource isn''t set to - the same value and must be empty. There - are three important differences between - dataSource and dataSourceRef: * While dataSource - only allows two specific types of objects, - dataSourceRef allows any non-core object, - as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values - (dropping them), dataSourceRef preserves - all values, and generates an error if a - disallowed value is specified. * While dataSource - only allows local objects, dataSourceRef - allows objects in any namespaces. (Beta) - Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using - the namespace field of dataSourceRef requires - the CrossNamespaceVolumeDataSource feature - gate to be enabled.' properties: apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string namespace: - description: Namespace is the namespace - of resource being referenced Note that - when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant - documentation for details. (Alpha) This - field requires the CrossNamespaceVolumeDataSource - feature gate to be enabled. type: string required: - kind - name type: object resources: - description: 'resources represents the minimum - resources the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to - specify resource requirements that are lower - than previous value but must still be higher - than capacity recorded in the status field - of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: - description: "Claims lists the names of - resources, defined in spec.resourceClaims, - that are used by this container. \n - This is an alpha field and requires - enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." items: - description: ResourceClaim references - one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the - name of one entry in pod.spec.resourceClaims - of the Pod where this field is - used. It makes that resource available - inside a container. type: string required: - name @@ -7811,9 +3606,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum - amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -7822,47 +3614,18 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. - If Requests is omitted for a container, - it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: - description: selector is a label query over - volumes to consider for binding. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -7874,29 +3637,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: - description: 'storageClassName is the name - of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: - description: volumeMode defines what type - of volume is required by the claim. Value - of Filesystem is implied when not included - in claim spec. type: string volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. type: string type: object required: @@ -7904,80 +3652,38 @@ spec: type: object type: object fc: - description: fc represents a Fibre Channel resource that - is attached to a kubelet's host machine and then exposed - to the pod. properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. TODO: how - do we prevent errors in the filesystem from compromising - the machine' type: string lun: - description: 'lun is Optional: FC target lun number' format: int32 type: integer readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' items: type: string type: array wwids: - description: 'wwids Optional: FC volume world wide - identifiers (wwids) Either wwids or combination - of targetWWNs and lun must be set, but not both - simultaneously.' items: type: string type: array type: object flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. properties: driver: - description: driver is the name of the driver to use - for this volume. type: string fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". The - default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string - description: 'options is Optional: this field holds - extra command options if any.' type: object readOnly: - description: 'readOnly is Optional: defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean secretRef: - description: 'secretRef is Optional: secretRef is - reference to the secret object containing sensitive - information to pass to the plugin scripts. This - may be empty if no secret object is specified. If - the secret object contains more than one secret, - all secrets are passed to the plugin scripts.' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic @@ -7985,194 +3691,88 @@ spec: - driver type: object flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running properties: datasetName: - description: datasetName is Name of the dataset stored - as metadata -> name on the dataset for Flocker should - be considered as deprecated type: string datasetUUID: - description: datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: - description: 'fsType is filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: - description: 'pdName is unique name of the PD resource - in GCE. Used to identify the disk in GCE. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: - description: 'gitRepo represents a git repository at a - particular revision. DEPRECATED: GitRepo is deprecated. - To provision a container with a git repo, mount an EmptyDir - into an InitContainer that clones the repo using git, - then mount the EmptyDir into the Pod''s container.' properties: directory: - description: directory is the target directory name. - Must not contain or start with '..'. If '.' is - supplied, the volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. type: string repository: - description: repository is the URL type: string revision: - description: revision is the commit hash for the specified - revision. type: string required: - repository type: object glusterfs: - description: 'glusterfs represents a Glusterfs mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: - description: 'endpoints is the endpoint name that - details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: - description: 'path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: - description: 'readOnly here will force the Glusterfs - volume to be mounted with read-only permissions. - Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: - description: 'hostPath represents a pre-existing file - or directory on the host machine that is directly exposed - to the container. This is generally used for system - agents or other privileged things that are allowed to - see the host machine. Most containers will NOT need - this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host - directory mounts and who can/can not mount host directories - as read/write.' properties: path: - description: 'path of the directory on the host. If - the path is a symlink, it will follow the link to - the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: - description: 'type for HostPath Volume Defaults to - "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: - description: 'iscsi represents an ISCSI Disk resource - that is attached to a kubelet''s host machine and then - exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: chapAuthSession defines whether support - iSCSI Session CHAP authentication type: boolean fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. type: string iqn: - description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: - description: iscsiInterface is the interface Name - that uses an iSCSI transport. Defaults to 'default' - (tcp). type: string lun: - description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: - description: portals is the iSCSI Target Portal List. - The portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). items: type: string type: array readOnly: - description: readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. type: boolean secretRef: - description: secretRef is the CHAP Secret for iSCSI - target and initiator authentication properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic targetPortal: - description: targetPortal is iSCSI Target Portal. - The Portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). type: string required: - iqn @@ -8180,157 +3780,67 @@ spec: - targetPortal type: object name: - description: 'name of the volume. Must be a DNS_LABEL - and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string nfs: - description: 'nfs represents an NFS mount on the host - that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: - description: 'path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: - description: 'readOnly here will force the NFS export - to be mounted with read-only permissions. Defaults - to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: - description: 'server is the hostname or IP address - of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: - description: readOnly Will force the ReadOnly setting - in VolumeMounts. Default false. type: boolean required: - claimName type: object photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host - machine properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. type: string pdID: - description: pdID is the ID that identifies Photon - Controller persistent disk type: string required: - pdID type: object portworxVolume: - description: portworxVolume represents a portworx volume - attached and mounted on kubelets host machine properties: fsType: - description: fSType represents the filesystem type - to mount Must be a filesystem type supported by - the host operating system. Ex. "ext4", "xfs". Implicitly - inferred to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean volumeID: - description: volumeID uniquely identifies a Portworx - volume type: string required: - volumeID type: object projected: - description: projected items for all in one resources - secrets, configmaps, and downward API properties: defaultMode: - description: defaultMode are the mode bits used to - set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal values - for mode bits. Directories within the path are not - affected by this setting. This might be in conflict - with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. format: int32 type: integer sources: - description: sources is the list of volume projections items: - description: Projection that may be projected along - with other supported volume types properties: configMap: - description: configMap information about the - configMap data to project properties: items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced ConfigMap will be projected - into the volume as a file whose name is - the key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, - the volume setup will error unless it - is marked optional. Paths must be relative - and may not contain the '..' path or start - with '..'. items: - description: Maps a string key to a path - within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. type: string required: - key @@ -8338,97 +3848,42 @@ spec: type: object type: array name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional specify whether the - ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: downwardAPI information about the - downwardAPI data to project properties: items: - description: Items is a list of DownwardAPIVolume - file items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field properties: fieldRef: - description: 'Required: Selects a - field of the pod: only annotations, - labels, name and namespace are supported.' properties: apiVersion: - description: Version of the schema - the FieldPath is written in - terms of, defaults to "v1". type: string fieldPath: - description: Path of the field - to select in the specified API - version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits - used to set permissions on this - file, must be an octal value between - 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of - the container: only resources limits - and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: - required for volumes, optional - for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource - to select' type: string required: - resource @@ -8440,53 +3895,16 @@ spec: type: array type: object secret: - description: secret information about the secret - data to project properties: items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced Secret will be projected into - the volume as a file whose name is the - key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the - volume setup will error unless it is marked - optional. Paths must be relative and may - not contain the '..' path or start with - '..'. items: - description: Maps a string key to a path - within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. type: string required: - key @@ -8494,46 +3912,19 @@ spec: type: object type: array name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional field specify whether - the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project properties: audience: - description: audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience - defaults to the identifier of the apiserver. type: string expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The - kubelet will start trying to rotate the - token if the token is older than 80 percent - of its time to live or if the token is - older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. format: int64 type: integer path: - description: path is the path relative to - the mount point of the file to project - the token into. type: string required: - path @@ -8542,159 +3933,76 @@ spec: type: array type: object quobyte: - description: quobyte represents a Quobyte mount on the - host that shares a pod's lifetime properties: group: - description: group to map volume access to Default - is no group type: string readOnly: - description: readOnly here will force the Quobyte - volume to be mounted with read-only permissions. - Defaults to false. type: boolean registry: - description: registry represents a single or multiple - Quobyte Registry services specified as a string - as host:port pair (multiple entries are separated - with commas) which acts as the central registry - for volumes type: string tenant: - description: tenant owning the given Quobyte volume - in the Backend Used with dynamically provisioned - Quobyte volumes, value is set by the plugin type: string user: - description: user to map volume access to Defaults - to serivceaccount user type: string volume: - description: volume is a string that references an - already created Quobyte volume by name. type: string required: - registry - volume type: object rbd: - description: 'rbd represents a Rados Block Device mount - on the host that shares a pod''s lifetime. More info: - https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string image: - description: 'image is the rados image name. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: - description: 'keyring is the path to key ring for - RBDUser. Default is /etc/ceph/keyring. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: - description: 'pool is the rados pool name. Default - is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: - description: 'secretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. - Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is the rados user name. Default - is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Default - is "xfs". type: string gateway: - description: gateway is the host address of the ScaleIO - API Gateway. type: string protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretRef: - description: secretRef references to the secret for - ScaleIO user and other sensitive information. If - this is not provided, Login operation will fail. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false type: boolean storageMode: - description: storageMode indicates whether the storage - for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. type: string storagePool: - description: storagePool is the ScaleIO Storage Pool - associated with the protection domain. type: string system: - description: system is the name of the storage system - as configured in ScaleIO. type: string volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated - with this volume source. type: string required: - gateway @@ -8702,58 +4010,19 @@ spec: - system type: object secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: - description: 'defaultMode is Optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: items If unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the Secret, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. type: string required: - key @@ -8761,81 +4030,36 @@ spec: type: object type: array optional: - description: optional field specify whether the Secret - or its keys must be defined type: boolean secretName: - description: 'secretName is the name of the secret - in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretRef: - description: secretRef specifies the secret to use - for obtaining the StorageOS API credentials. If - not specified, default values will be attempted. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeName: - description: volumeName is the human-readable name - of the StorageOS volume. Volume names are only - unique within a namespace. type: string volumeNamespace: - description: volumeNamespace specifies the scope of - the volume within StorageOS. If no namespace is - specified then the Pod's namespace will be used. This - allows the Kubernetes name scoping to be mirrored - within StorageOS for tighter integration. Set VolumeName - to any name to override the default behaviour. Set - to "default" if you are not using namespaces within - StorageOS. Namespaces that do not pre-exist within - StorageOS will be created. type: string type: object vsphereVolume: - description: vsphereVolume represents a vSphere volume - attached and mounted on kubelets host machine properties: fsType: - description: fsType is filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string storagePolicyID: - description: storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated with - the StoragePolicyName. type: string storagePolicyName: - description: storagePolicyName is the storage Policy - Based Management (SPBM) profile name. type: string volumePath: - description: volumePath is the path that identifies - vSphere volume vmdk type: string required: - volumePath @@ -8848,23 +4072,13 @@ spec: - containers type: object timeout: - description: Timeout defines the maximum amount of time the Serving - should take to execute before the Serving is running. type: string triggers: - description: Triggers are used to specify the trigger sources of - the function. The Keda (ScaledObject, ScaledJob) configuration - in ScaleOptions cannot take effect without Triggers being set. items: properties: authenticationRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used to authenticate - the scaler with the environment properties: kind: - description: Kind of the resource being referred to. Defaults - to TriggerAuthentication. type: string name: type: string @@ -8876,15 +4090,10 @@ spec: type: string type: object metricType: - description: MetricTargetType specifies the type of metric - being targeted, and should be either "Value", "AverageValue", - or "Utilization" type: string name: type: string targetKind: - description: ScaleTargetKind represents the kind of trigger - target. enum: - object - job @@ -8902,29 +4111,21 @@ spec: - runtime type: object version: - description: Function version in format like v1.0.0 type: string workloadRuntime: default: OCIContainer - description: 'WorkloadRuntime for Function. Know values: ``` OCIContainer: - Nodes will run standard OCI container workloads. WasmEdge: Nodes will - run workloads using the crun (with WasmEdge support). ```' type: string required: - image type: object status: - description: FunctionStatus defines the observed state of Function properties: addresses: - description: Addresses holds the addresses that used to access the Function. items: properties: type: - description: Type of the address. type: string value: - description: Value of the address. maxLength: 253 minLength: 1 type: string @@ -8954,67 +4155,30 @@ spec: route: properties: conditions: - description: Conditions describes the status of the route with respect - to the Gateway. Note that the route's availability is also subject - to the Gateway's own status conditions and listener status. items: - description: "Condition contains details for one aspect of the - current state of this API Resource. --- This struct is intended - for direct use as an array at the field path .status.conditions. - \ For example, \n type FooStatus struct{ // Represents the observations - of a foo's current state. // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type - // +patchStrategy=merge // +listType=map // +listMapKey=type - Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be - when the underlying condition changed. If that is not known, - then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if - .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: - description: status of the condition, one of True, False, - Unknown. enum: - "True" - "False" - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -9032,20 +4196,7 @@ spec: - type x-kubernetes-list-type: map hosts: - description: Hosts list all actual hostnames of HTTPRoute. items: - description: "Hostname is the fully qualified domain name of a - network host. This matches the RFC 1123 definition of a hostname - with 2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname - may be prefixed with a wildcard label (`*.`). The wildcard label - must appear by itself as the first label. \n Hostname can be - \"precise\" which is a domain name without the terminating dot - of a network host (e.g. \"foo.example.com\") or \"wildcard\", - which is a domain name prefixed with a single wildcard label - (e.g. `*.example.com`). \n Note that as per RFC1035 and RFC1123, - a *label* must consist of lower case alphanumeric characters - or '-', and must start and end with an alphanumeric character. - No other punctuation is allowed." maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -9053,16 +4204,10 @@ spec: maxItems: 16 type: array paths: - description: Paths list all actual paths of HTTPRoute. items: - description: HTTPPathMatch describes how to select a HTTP route - by matching the HTTP request path. properties: type: default: PathPrefix - description: "Type specifies how to match against the path - Value. \n Support: Core (Exact, PathPrefix) \n Support: - Custom (RegularExpression)" enum: - Exact - PathPrefix @@ -9070,7 +4215,6 @@ spec: type: string value: default: / - description: Value of the HTTP path to match against. maxLength: 1024 type: string type: object @@ -9091,39 +4235,23 @@ spec: type: string type: object sources: - description: Sources holds the results emitted from the step definition - of different sources items: - description: SourceResult holds the results emitted from the different - sources properties: bundle: - description: Bundle holds the results emitted from from the step - definition of bundle source properties: digest: - description: Digest hold the image digest result type: string type: object git: - description: Git holds the results emitted from from the step - definition of a git source properties: branchName: - description: BranchName holds the default branch name of the - git source this will be set only when revision is not specified - in Build object type: string commitAuthor: - description: CommitAuthor holds the commit author of a git - source type: string commitSha: - description: CommitSha holds the commit sha of git source type: string type: object name: - description: Name is the name of source type: string required: - name @@ -9157,162 +4285,97 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: Function is the Schema for the functions API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: FunctionSpec defines the desired state of Function properties: build: - description: Information needed to build a function. The build step - will be skipped if Build is nil. properties: builder: - description: Builder refers to the image containing the build tools - to build the source code. type: string builderCredentials: - description: BuilderCredentials references a Secret that contains - credentials to access the builder image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic builderMaxAge: - description: The duration to retain a completed builder, defaults - to 0 (forever). type: string dockerfile: - description: Dockerfile is the path to the Dockerfile used by build - strategies that rely on the Dockerfile to build an image. type: string env: additionalProperties: type: string - description: Environment variables to pass to the builder. type: object failedBuildsHistoryLimit: - description: The number of failed builds to retain, default is 1. format: int32 type: integer shipwright: - description: The configuration for the `Shipwright` build engine. properties: params: - description: 'Params is a list of key/value that could be used - to set strategy parameters. When using _params_, users should - avoid: Defining a parameter name that doesn''t match one of - the `spec.parameters` defined in the `BuildStrategy`. Defining - a parameter name that collides with the Shipwright reserved - parameters including BUILDER_IMAGE,DOCKERFILE,CONTEXT_DIR - and any name starting with shp-.' items: - description: ParamValue is a key/value that populates a strategy - parameter used in the execution of the strategy steps properties: configMapValue: - description: The ConfigMap value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object name: - description: Name of the parameter type: string secretValue: - description: The secret value of the parameter properties: format: - description: An optional format to add pre- or suffix - to the object value. For example 'KEY=${SECRET_VALUE}' - or 'KEY=${CONFIGMAP_VALUE}' depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object value: - description: The value of the parameter type: string values: - description: Values of an array parameter items: - description: SingleValue is the value type contains - the properties for a value, this allows for an easy - extension in the future to support more kinds properties: configMapValue: - description: The ConfigMap value of the parameter properties: format: - description: An optional format to add pre- - or suffix to the object value. For example - 'KEY=${SECRET_VALUE}' or 'KEY=${CONFIGMAP_VALUE}' - depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object secretValue: - description: The secret value of the parameter properties: format: - description: An optional format to add pre- - or suffix to the object value. For example - 'KEY=${SECRET_VALUE}' or 'KEY=${CONFIGMAP_VALUE}' - depending on the context. type: string key: - description: Key inside the object type: string name: - description: Name of the object type: string required: - key - name type: object value: - description: The value of the parameter type: string type: object type: array @@ -9321,97 +4384,64 @@ spec: type: object type: array strategy: - description: Strategy references the BuildStrategy to use to - build the image. properties: kind: - description: BuildStrategyKind indicates the kind of the - build strategy BuildStrategy or ClusterBuildStrategy, - default to BuildStrategy. type: string name: - description: 'Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names' type: string required: - name type: object timeout: - description: Timeout defines the maximum amount of time the - Build should take to execute. format: duration type: string type: object srcRepo: - description: Function Source code repository properties: bundleContainer: - description: BundleContainer properties: image: - description: Image reference, i.e. quay.io/org/image:tag type: string required: - image type: object credentials: - description: Credentials references a Secret that contains credentials - to access the repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic revision: - description: Git revision to check out (branch, tag, sha, ref…) - (default:"") type: string sourceSubPath: - description: A subpath within the `source` input where the source - to build is located. type: string url: - description: Git url to clone type: string type: object successfulBuildsHistoryLimit: - description: The number of successful builds to retain, default - is 0. format: int32 type: integer timeout: - description: Timeout defines the maximum amount of time the Build - should take to execute. type: string required: - srcRepo type: object image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic serving: - description: Information needed to run a function. The serving step - will be skipped if `Serving` is nil. properties: annotations: additionalProperties: type: string - description: Annotations that will be added to the workload. type: object bindings: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -9419,14 +4449,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -9437,8 +4463,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -9453,11 +4477,8 @@ spec: - type - version type: object - description: Configurations of dapr bindings components. type: object hooks: - description: Hooks define the hooks that will execute before or - after function execution. properties: policy: type: string @@ -9473,12 +4494,8 @@ spec: labels: additionalProperties: type: string - description: Parameters of asyncFunc runtime, must not be nil when - runtime is OpenFuncAsync. type: object outputs: - description: Function outputs from Dapr components including binding, - pubsub items: properties: dapr: @@ -9486,26 +4503,16 @@ spec: metadata: additionalProperties: type: string - description: Metadata is the metadata for dapr Com. type: object name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string operation: - description: Operation field tells the Dapr component - which operation it should perform. type: string outputName: - description: 'Deprecated: Only for compatibility with - v1beta1' type: string topic: type: string type: - description: Type is the type of the component, if it - is not set, controller will get it automatically. type: string required: - name @@ -9515,13 +4522,9 @@ spec: params: additionalProperties: type: string - description: Parameters to pass to the serving. All parameters will - be injected into the pod as environment variables. Function code - can use these parameters by getting environment variables type: object pubsub: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -9529,14 +4532,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -9547,8 +4546,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -9563,22 +4560,17 @@ spec: - type - version type: object - description: Configurations of dapr pubsub components. type: object scaleOptions: - description: The ScaleOptions will help us to set up guidelines - for the autoscaling of function workloads. properties: keda: properties: httpScaledObject: properties: cooldownPeriod: - description: Cooldown period value format: int32 type: integer targetPendingRequests: - description: Target metric value format: int32 type: integer type: object @@ -9591,12 +4583,8 @@ spec: format: int32 type: integer restartPolicy: - description: Restart policy for all containers within - the pod. One of 'OnFailure', 'Never'. Default to 'Never'. type: string scalingStrategy: - description: ScalingStrategy defines the strategy of - Scaling properties: customScalingQueueLengthDeduction: format: int32 @@ -9619,56 +4607,22 @@ spec: scaledObject: properties: advanced: - description: AdvancedConfig specifies advance scaling - options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies - horizontal scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior - configures the scaling behavior of the target - in both Up and Down directions (scaleUp and - scaleDown fields respectively). properties: scaleDown: - description: scaleDown is scaling policy - for scaling Down. If not set, the default - value is to allow to scale down to minReplicas - pods, with a 300 second stabilization - window (i.e., the highest recommendation - for the last 300sec is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used - during scaling. At least one policy - must be specified, otherwise the HPAScalingRules - will be discarded as invalid items: - description: HPAScalingPolicy is a - single policy which must hold true - for a specified past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which - the policy should hold true. - PeriodSeconds must be greater - than zero and less than or equal - to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the - amount of change which is permitted - by the policy. It must be greater - than zero format: int32 type: integer required: @@ -9679,64 +4633,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to - specify which policy should be used. - If not set, the default value Max - is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which - past recommendations should be considered - while scaling up or scaling down. - StabilizationWindowSeconds must be - greater than or equal to zero and - less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy - for scaling Up. If not set, the default - value is the higher of: * increase no - more than 4 pods per 60 seconds * double - the number of pods per 60 seconds No stabilization - is used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used - during scaling. At least one policy - must be specified, otherwise the HPAScalingRules - will be discarded as invalid items: - description: HPAScalingPolicy is a - single policy which must hold true - for a specified past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which - the policy should hold true. - PeriodSeconds must be greater - than zero and less than or equal - to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the - amount of change which is permitted - by the policy. It must be greater - than zero format: int32 type: integer required: @@ -9747,24 +4659,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to - specify which policy should be used. - If not set, the default value Max - is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which - past recommendations should be considered - while scaling up or scaling down. - StabilizationWindowSeconds must be - greater than or equal to zero and - less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object @@ -9779,7 +4675,6 @@ spec: format: int32 type: integer fallback: - description: Fallback is the spec for fallback options properties: failureThreshold: format: int32 @@ -9796,22 +4691,11 @@ spec: type: integer type: object triggers: - description: Triggers are used to specify the trigger sources - of the function. The Keda (ScaledObject, ScaledJob) configuration - in ScaleOptions cannot take effect without Triggers being - set. items: - description: ScaleTriggers reference the scaler that will - be used properties: authenticationRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used - to authenticate the scaler with the environment properties: kind: - description: Kind of the resource being referred - to. Defaults to TriggerAuthentication. type: string name: type: string @@ -9823,9 +4707,6 @@ spec: type: string type: object metricType: - description: MetricTargetType specifies the type of - metric being targeted, and should be either "Value", - "AverageValue", or "Utilization" type: string name: type: string @@ -9842,8 +4723,6 @@ spec: knative: additionalProperties: type: string - description: Refer to https://knative.dev/docs/serving/autoscaling/ - to learn more about the autoscaling options of Knative Serving. type: object maxReplicas: format: int32 @@ -9856,7 +4735,6 @@ spec: additionalProperties: properties: spec: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -9864,16 +4742,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a - metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name - is the secret name, and key is the field in the - secret. properties: key: type: string @@ -9884,8 +4756,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -9901,81 +4771,29 @@ spec: - version type: object type: object - description: Configurations of dapr state components. It can refer - to an existing state when the `state.spec` is nil. type: object template: - description: Template describes the pods that will be created. The - container named `function` is the container which is used to run - the image built by the builder. If it is not set, the controller - will automatically add one. properties: activeDeadlineSeconds: - description: Optional duration in seconds the pod may be active - on the node relative to StartTime before the system will actively - try to mark it failed and kill associated containers. Value - must be a positive integer. format: int64 type: integer affinity: - description: If specified, the pod's scheduling constraints properties: nodeAffinity: - description: Describes node affinity scheduling rules for - the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node matches the corresponding matchExpressions; - the node(s) with the highest sum are the most preferred. items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a - no-op). A null preferred scheduling term matches - no objects (i.e. is also a no-op). properties: preference: - description: A node selector term, associated - with the corresponding weight. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -9985,35 +4803,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -10025,9 +4821,6 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: Weight associated with matching the - corresponding nodeSelectorTerm, in the range - 1-100. format: int32 type: integer required: @@ -10036,53 +4829,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to an - update), the system may or may not try to eventually - evict the pod from its node. properties: nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. items: - description: A null or empty node selector term - matches no objects. The requirements of them - are ANDed. The TopologySelectorTerm type implements - a subset of the NodeSelectorTerm. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -10092,35 +4850,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: The label key that the - selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators - are In, NotIn, Exists, DoesNotExist. - Gt, and Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the - values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. If - the operator is Gt or Lt, the values - array must have a single element, - which will be interpreted as an integer. - This array is replaced during a strategic - merge patch. items: type: string type: array @@ -10138,65 +4874,22 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling - requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating - through the elements of this field and adding "weight" - to the sum if the node has pods which matches the - corresponding podAffinityTerm; the node(s) with the - highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10208,54 +4901,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10267,44 +4925,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. format: int32 type: integer required: @@ -10313,57 +4946,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10375,52 +4969,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10432,35 +4993,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey @@ -10468,65 +5008,22 @@ spec: type: array type: object podAntiAffinity: - description: Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions - specified by this field, but it may choose a node - that violates one or more of the expressions. The - node that is most preferred is the one with the greatest - sum of weights, i.e. for each node that meets all - of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the - node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10538,54 +5035,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of - namespaces that the term applies to. The - term is applied to the union of the namespaces - selected by this field and the ones listed - in the namespaces field. null selector and - null or empty namespaces list means "this - pod's namespace". An empty selector ({}) - matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10597,44 +5059,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static - list of namespace names that the term applies - to. The term is applied to the union of - the namespaces listed in this field and - the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located - (affinity) or not co-located (anti-affinity) - with the pods matching the labelSelector - in the specified namespaces, where co-located - is defined as running on a node whose value - of the label with key topologyKey matches - that of any node on which any of the selected - pods is running. Empty topologyKey is not - allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the - corresponding podAffinityTerm, in the range - 1-100. format: int32 type: integer required: @@ -10643,57 +5080,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the - pod will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met - at some point during pod execution (e.g. due to a - pod label update), the system may or may not try to - eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all - terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or - not co-located (anti-affinity) with, where co-located - is defined as running on a node whose value of the - label with key matches that of any - node on which a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10705,52 +5103,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -10762,35 +5127,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey @@ -10799,157 +5143,72 @@ spec: type: object type: object automountServiceAccountToken: - description: AutomountServiceAccountToken indicates whether - a service account token should be automatically mounted. type: boolean containers: - description: List of containers belonging to the pod. Containers - cannot currently be added or removed. There must be at least - one container in a Pod. Cannot be updated. items: - description: A single application container that you want - to run within a pod. properties: args: - description: 'Arguments to the entrypoint. The container - image''s CMD is used if this is not provided. Variable - references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The container image''s ENTRYPOINT is used if - this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If - a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -10961,117 +5220,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config - management to default or override container images in - workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should - take in response to container lifecycle events. Cannot - be updated. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11079,102 +5274,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11182,43 +5324,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -11226,74 +5350,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11301,131 +5388,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. - Not specifying a port here DOES NOT prevent that port - from being exposed. Any port which is listening on the - default "0.0.0.0" address inside a container will be - accessible from the network. Modifying this array with - strategic merge patch may corrupt the data. For more - information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -11436,74 +5454,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if - the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11511,104 +5492,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -11624,8 +5552,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -11634,270 +5560,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields - of SecurityContext override the equivalent fields of - PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has - successfully initialized. If specified, no other probes - are executed until this completes successfully. If this - probe fails, the Pod will be restarted, just as if the - livenessProbe failed. This can be used to provide different - probe parameters at the beginning of a Pod''s lifecycle, - when it might take a long time to load data or warm - a cache, than during steady-state operation. This cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11905,143 +5662,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -12049,43 +5724,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -12093,226 +5744,100 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array dnsConfig: - description: Specifies the DNS parameters of a pod. Parameters - specified here will be merged to the generated DNS configuration - based on DNSPolicy. properties: nameservers: - description: A list of DNS name server IP addresses. This - will be appended to the base nameservers generated from - DNSPolicy. Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be - merged with the base options generated from DNSPolicy. - Duplicated entries will be removed. Resolution options - given in Options will override those that appear in the - base DNSPolicy. items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. properties: name: - description: Required. type: string value: type: string type: object type: array searches: - description: A list of DNS search domains for host-name - lookup. This will be appended to the base search paths - generated from DNSPolicy. Duplicated search paths will - be removed. items: type: string type: array type: object dnsPolicy: - description: Set DNS policy for the pod. Defaults to "ClusterFirst". - Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', - 'Default' or 'None'. DNS parameters given in DNSConfig will - be merged with the policy selected with DNSPolicy. To have - DNS options set along with hostNetwork, you have to specify - DNS policy explicitly to 'ClusterFirstWithHostNet'. type: string enableServiceLinks: - description: 'EnableServiceLinks indicates whether information - about services should be injected into pod''s environment - variables, matching the syntax of Docker links. Optional: - Defaults to true.' type: boolean ephemeralContainers: - description: List of ephemeral containers run in this pod. Ephemeral - containers may be run in an existing pod to perform user-initiated - actions such as debugging. This list cannot be specified when - creating a pod, and it cannot be modified by updating the - pod spec. In order to add an ephemeral container to an existing - pod, use the pod's ephemeralcontainers subresource. items: - description: "An EphemeralContainer is a temporary container - that you may add to an existing Pod for user-initiated activities - such as debugging. Ephemeral containers have no resource - or scheduling guarantees, and they will not be restarted - when they exit or when a Pod is removed or restarted. The - kubelet may evict a Pod if an ephemeral container causes - the Pod to exceed its resource allocation. \n To add an - ephemeral container, use the ephemeralcontainers subresource - of an existing Pod. Ephemeral containers may not be removed - or restarted." properties: args: - description: 'Arguments to the entrypoint. The image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded - using the container''s environment. If a variable cannot - be resolved, the reference in the input string will - be unchanged. Double $$ are reduced to a single $, which - allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". Escaped - references will never be expanded, regardless of whether - the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -12324,112 +5849,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Lifecycle is not allowed for ephemeral containers. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12437,102 +5903,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12540,43 +5953,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -12584,72 +5979,37 @@ spec: type: object type: object livenessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12657,124 +6017,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the ephemeral container specified - as a DNS_LABEL. This name must be unique among all containers, - init containers and ephemeral containers. type: string ports: - description: Ports are not allowed for ephemeral containers. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -12785,72 +6083,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12858,105 +6121,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: Resources are not allowed for ephemeral containers. - Ephemeral containers use spare resources already allocated - to the pod. properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -12972,8 +6181,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -12982,262 +6189,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'Optional: SecurityContext defines the security - options the ephemeral container should be run with. - If set, the fields of SecurityContext override the equivalent - fields of PodSecurityContext.' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -13245,153 +6291,63 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean targetContainerName: - description: "If set, the name of the container from PodSpec - that this ephemeral container targets. The ephemeral - container will be run in the namespaces (IPC, PID, etc) - of this container. If not set then the ephemeral container - uses the namespaces configured in the Pod spec. \n The - container runtime must implement support for this feature. - If the runtime does not support namespace targeting - then the result of setting this field is undefined." type: string terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -13399,44 +6355,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Subpath mounts are not allowed for ephemeral - containers. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -13444,240 +6375,105 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array hostAliases: - description: HostAliases is an optional list of hosts and IPs - that will be injected into the pod's hosts file if specified. - This is only valid for non-hostNetwork pods. items: - description: HostAlias holds the mapping between IP and hostnames - that will be injected as an entry in the pod's hosts file. properties: hostnames: - description: Hostnames for the above IP address. items: type: string type: array ip: - description: IP address of the host file entry. type: string type: object type: array hostIPC: - description: 'Use the host''s ipc namespace. Optional: Default - to false.' type: boolean hostNetwork: - description: Host networking requested for this pod. Use the - host's network namespace. If this option is set, the ports - that will be used must be specified. Default to false. type: boolean hostPID: - description: 'Use the host''s pid namespace. Optional: Default - to false.' type: boolean hostUsers: - description: 'Use the host''s user namespace. Optional: Default - to true. If set to true or not present, the pod will be run - in the host user namespace, useful for when the pod needs - a feature only available to the host user namespace, such - as loading a kernel module with CAP_SYS_MODULE. When set to - false, a new userns is created for the pod. Setting false - is useful for mitigating container breakout vulnerabilities - even allowing users to run their containers as root without - actually having root privileges on the host. This field is - alpha-level and is only honored by servers that enable the - UserNamespacesSupport feature.' type: boolean hostname: - description: Specifies the hostname of the Pod If not specified, - the pod's hostname will be set to a system-defined value. type: string imagePullSecrets: - description: 'ImagePullSecrets is an optional list of references - to secrets in the same namespace to use for pulling any of - the images used by this PodSpec. If specified, these secrets - will be passed to individual puller implementations for them - to use. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same - namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: - description: 'List of initialization containers belonging to - the pod. Init containers are executed in order prior to containers - being started. If any init container fails, the pod is considered - to have failed and is handled according to its restartPolicy. - The name for an init container or normal container must be - unique among all containers. Init containers may not have - Lifecycle actions, Readiness probes, Liveness probes, or Startup - probes. The resourceRequirements of an init container are - taken into account during scheduling by finding the highest - request/limit for each resource type, and then using the max - of of that value or the sum of the normal containers. Limits - are applied to init containers in a similar fashion. Init - containers cannot currently be added or removed. Cannot be - updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: - description: A single application container that you want - to run within a pod. properties: args: - description: 'Arguments to the entrypoint. The container - image''s CMD is used if this is not provided. Variable - references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a - shell. The container image''s ENTRYPOINT is used if - this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If - a variable cannot be resolved, the reference in the - input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string - literal "$(VAR_NAME)". Escaped references will never - be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the - container. Cannot be updated. items: - description: EnvVar represents an environment variable - present in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are - expanded using the previously defined environment - variables in the container and any service environment - variables. If a variable cannot be resolved, the - reference in the input string will be unchanged. - Double $$ are reduced to a single $, which allows - for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless - of whether the variable exists or not. Defaults - to "".' type: string valueFrom: - description: Source for the environment variable's - value. Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap - or its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the - pod's namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret - or its key must be defined type: boolean required: - key @@ -13689,117 +6485,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported - as an event when the container is starting. When a key - exists in multiple sources, the value associated with - the last source will take precedence. Values defined - by an Env with a duplicate key will take precedence. - Cannot be updated. items: - description: EnvFromSource represents the source of - a set of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to - each key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret must - be defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config - management to default or override container images in - workload controllers like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, - IfNotPresent. Defaults to Always if :latest tag is specified, - or IfNotPresent otherwise. Cannot be updated. More info: - https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should - take in response to container lifecycle events. Cannot - be updated. properties: postStart: - description: 'PostStart is called immediately after - a container is created. If the handler fails, the - container is terminated and restarted according - to its restart policy. Other management of the container - blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -13807,102 +6539,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before - a container is terminated due to an API request - or management event such as liveness/startup probe - failure, preemption, resource contention, etc. The - handler is not called if the container crashes or - exits. The Pod''s termination grace period countdown - begins before the PreStop hook is executed. Regardless - of the outcome of the handler, the container will - eventually terminate within the Pod''s termination - grace period (unless delayed by finalizers). Other - management of the container blocks until the hook - completes or until the termination grace period - is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to - execute inside the container, the working - directory for the command is root ('/') - in the container's filesystem. The command - is simply exec'd, it is not run inside a - shell, so traditional shell instructions - ('|', etc) won't work. To use a shell, you - need to explicitly call out to that shell. - Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request - to perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set - "Host" in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the - request. HTTP allows repeated headers. items: - description: HTTPHeader describes a custom - header to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -13910,43 +6589,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting - to the host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this - field and lifecycle hooks will fail in runtime - when tcp handler is specified. properties: host: - description: 'Optional: Host name to connect - to, defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to - access on the container. Number must be - in the range 1 to 65535. Name must be an - IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -13954,74 +6615,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -14029,131 +6653,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. - Not specifying a port here DOES NOT prevent that port - from being exposed. Any port which is listening on the - default "0.0.0.0" address inside a container will be - accessible from the network. Modifying this array with - strategic merge patch may corrupt the data. For more - information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port - in a single container. properties: containerPort: - description: Number of port to expose on the pod's - IP address. This must be a valid port number, - 0 < x < 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. - If specified, this must be a valid port number, - 0 < x < 65536. If HostNetwork is specified, this - must match ContainerPort. Most containers do not - need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in - a pod must have a unique name. Name for the port - that can be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, - or SCTP. Defaults to "TCP". type: string required: - containerPort @@ -14164,74 +6719,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if - the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -14239,104 +6757,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are used by - this container. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. - \n This field is immutable." items: - description: ResourceClaim references one entry - in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one - entry in pod.spec.resourceClaims of the Pod - where this field is used. It makes that resource - available inside a container. type: string required: - name @@ -14352,8 +6817,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount - of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -14362,270 +6825,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields - of SecurityContext override the equivalent fields of - PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent - process. This bool directly controls if the no_new_privs - flag will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as - Privileged 2) has CAP_SYS_ADMIN Note that this field - cannot be set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this - field cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that - this field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field - cannot be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only - root filesystem. Default is false. Note that this - field cannot be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the - container process. Uses runtime default if unset. - May also be set in PodSecurityContext. If set in - both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run - as a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not - run as UID 0 (root) and fail to start the container - if it does. If unset or false, no such validation - will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the - container process. Defaults to user specified in - image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be - set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to - the container. If unspecified, the container runtime - will allocate a random SELinux context for each - container. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. properties: level: - description: Level is SELinux level label that - applies to the container. type: string role: - description: Role is a SELinux role label that - applies to the container. type: string type: - description: Type is a SELinux type label that - applies to the container. type: string user: - description: User is a SELinux user label that - applies to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod - & container level, the container options override - the pod options. Note that this field cannot be - set when spec.os.name is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. - The profile must be preconfigured on the node - to work. Must be a descending path, relative - to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: - \n Localhost - a profile defined in a file on - the node should be used. RuntimeDefault - the - container runtime default profile should be - used. Unconfined - no profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied - to all containers. If unspecified, the options from - the PodSecurityContext will be used. If set in both - SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name - is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential - spec named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name - of the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. - This field is alpha-level and will only be honored - by components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the - feature flag will result in errors when validating - the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is - not allowed to have a mix of HostProcess containers - and non-HostProcess containers). In addition, - if HostProcess is true then HostNetwork must - also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the - entrypoint of the container process. Defaults - to the user specified in image metadata if unspecified. - May also be set in PodSecurityContext. If set - in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes - precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has - successfully initialized. If specified, no other probes - are executed until this completes successfully. If this - probe fails, the Pod will be restarted, just as if the - livenessProbe failed. This can be used to provide different - probe parameters at the beginning of a Pod''s lifecycle, - when it might take a long time to load data or warm - a cache, than during steady-state operation. This cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the - probe to be considered failed after having succeeded. - Defaults to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a - GRPC port. This is a beta field and requires enabling - GRPCContainerProbe feature gate. properties: port: - description: Port number of the gRPC service. - Number must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service - to place in the gRPC HealthCheckRequest (see - https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -14633,143 +6927,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container - has started before liveness probes are initiated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the - probe. Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the - probe to be considered successful after having failed. - Defaults to 1. Must be 1 for liveness and startup. - Minimum value is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving - a TCP port. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod - needs to terminate gracefully upon probe failure. - The grace period is the duration in seconds after - the processes running in the pod are sent a termination - signal and the time when the processes are forcibly - halted with a kill signal. Set this value longer - than the expected cleanup time for your process. - If this value is nil, the pod's terminationGracePeriodSeconds - will be used. Otherwise, this value overrides the - value provided by the pod spec. Value must be non-negative - integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). - This is a beta field and requires enabling ProbeTerminationGracePeriod - feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is - 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a - buffer for stdin in the container runtime. If this is - not set, reads from stdin in the container will always - result in EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close - the stdin channel after it has been opened by a single - attach. When stdin is true the stdin stream will remain - open across multiple attach sessions. If stdinOnce is - set to true, stdin is opened on container start, is - empty until the first client attaches to stdin, and - then remains open and accepts data until the client - disconnects, at which time stdin is closed and remains - closed until the container is restarted. If this flag - is false, a container processes that reads from stdin - will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which - the container''s termination message will be written - is mounted into the container''s filesystem. Message - written is intended to be brief final status, such as - an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length - across all containers will be limited to 12kb. Defaults - to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should - be populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last - chunk of container log output if the termination message - file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, - whichever is smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a - TTY for itself, also requires 'stdin' to be true. Default - is false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices - to be used by the container. items: - description: volumeDevice describes a mapping of a raw - block device within a container. properties: devicePath: - description: devicePath is the path inside of the - container that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -14777,43 +6989,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's - filesystem. Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which - the volume should be mounted. Must not contain - ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and - the other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write - otherwise (false or unspecified). Defaults to - false. type: boolean subPath: - description: Path within the volume from which the - container's volume should be mounted. Defaults - to "" (volume's root). type: string subPathExpr: - description: Expanded path within the volume from - which the container's volume should be mounted. - Behaves similarly to SubPath but environment variable - references $(VAR_NAME) are expanded using the - container's environment. Defaults to "" (volume's - root). SubPathExpr and SubPath are mutually exclusive. type: string required: - mountPath @@ -14821,54 +7009,21 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which - might be configured in the container image. Cannot be - updated. type: string required: - name type: object type: array nodeName: - description: NodeName is a request to schedule this pod onto - a specific node. If it is non-empty, the scheduler simply - schedules this pod onto that node, assuming that it fits resource - requirements. type: string nodeSelector: additionalProperties: type: string - description: 'NodeSelector is a selector which must be true - for the pod to fit on a node. Selector which must match a - node''s labels for the pod to be scheduled on that node. More - info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object x-kubernetes-map-type: atomic os: - description: "Specifies the OS of the containers in the pod. - Some pod and container fields are restricted if this is set. - \n If the OS field is set to linux, the following fields must - be unset: -securityContext.windowsOptions \n If the OS field - is set to windows, following fields must be unset: - spec.hostPID - - spec.hostIPC - spec.hostUsers - spec.securityContext.seLinuxOptions - - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - - spec.shareProcessNamespace - spec.securityContext.runAsUser - - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - - spec.containers[*].securityContext.runAsGroup" properties: name: - description: 'Name is the name of the operating system. - The currently supported values are linux and windows. - Additional value may be defined in future and can be one - of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration - Clients should expect to handle additional values and - treat unrecognized values in this field as os: null' type: string required: - name @@ -14880,100 +7035,33 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Overhead represents the resource overhead associated - with running a pod for a given RuntimeClass. This field will - be autopopulated at admission time by the RuntimeClass admission - controller. If the RuntimeClass admission controller is enabled, - overhead must not be set in Pod create requests. The RuntimeClass - admission controller will reject Pod create requests which - have the overhead already set. If RuntimeClass is configured - and selected in the PodSpec, Overhead will be set to the value - defined in the corresponding RuntimeClass, otherwise it will - remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md' type: object preemptionPolicy: - description: PreemptionPolicy is the Policy for preempting pods - with lower priority. One of Never, PreemptLowerPriority. Defaults - to PreemptLowerPriority if unset. type: string priority: - description: The priority value. Various system components use - this field to find the priority of the pod. When Priority - Admission Controller is enabled, it prevents users from setting - this field. The admission controller populates this field - from PriorityClassName. The higher the value, the higher the - priority. format: int32 type: integer priorityClassName: - description: If specified, indicates the pod's priority. "system-node-critical" - and "system-cluster-critical" are two special keywords which - indicate the highest priorities with the former being the - highest priority. Any other name must be defined by creating - a PriorityClass object with that name. If not specified, the - pod priority will be default or zero if there is no default. type: string readinessGates: - description: 'If specified, all readiness gates will be evaluated - for pod readiness. A pod is ready when all its containers - are ready AND all conditions specified in the readiness gates - have status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates' items: - description: PodReadinessGate contains the reference to a - pod condition properties: conditionType: - description: ConditionType refers to a condition in the - pod's condition list with matching type. type: string required: - conditionType type: object type: array resourceClaims: - description: "ResourceClaims defines which ResourceClaims must - be allocated and reserved before the Pod is allowed to start. - The resources will be made available to those containers which - consume them by name. \n This is an alpha field and requires - enabling the DynamicResourceAllocation feature gate. \n This - field is immutable." items: - description: PodResourceClaim references exactly one ResourceClaim - through a ClaimSource. It adds a name to it that uniquely - identifies the ResourceClaim inside the Pod. Containers - that need access to the ResourceClaim reference it with - this name. properties: name: - description: Name uniquely identifies this resource claim - inside the pod. This must be a DNS_LABEL. type: string source: - description: Source describes where to find the ResourceClaim. properties: resourceClaimName: - description: ResourceClaimName is the name of a ResourceClaim - object in the same namespace as this pod. type: string resourceClaimTemplateName: - description: "ResourceClaimTemplateName is the name - of a ResourceClaimTemplate object in the same namespace - as this pod. \n The template will be used to create - a new ResourceClaim, which will be bound to this - pod. When this pod is deleted, the ResourceClaim - will also be deleted. The name of the ResourceClaim - will be -, where is the PodResourceClaim.Name. Pod validation - will reject the pod if the concatenated name is - not valid for a ResourceClaim (e.g. too long). \n - An existing ResourceClaim with that name that is - not owned by the pod will not be used for the pod - to avoid using an unrelated resource by mistake. - Scheduling and pod startup are then blocked until - the unrelated ResourceClaim is removed. \n This - field is immutable and no changes will be made to - the corresponding ResourceClaim by the control plane - after creating the ResourceClaim." type: string type: object required: @@ -14984,35 +7072,15 @@ spec: - name x-kubernetes-list-type: map restartPolicy: - description: 'Restart policy for all containers within the pod. - One of Always, OnFailure, Never. Default to Always. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' type: string runtimeClassName: - description: 'RuntimeClassName refers to a RuntimeClass object - in the node.k8s.io group, which should be used to run this - pod. If no RuntimeClass resource matches the named class, - the pod will not be run. If unset or empty, the "legacy" RuntimeClass - will be used, which is an implicit class with an empty definition - that uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class' type: string schedulerName: - description: If specified, the pod will be dispatched by specified - scheduler. If not specified, the pod will be dispatched by - default scheduler. type: string schedulingGates: - description: "SchedulingGates is an opaque list of values that - if specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness. - \n This is an alpha-level feature enabled by PodSchedulingReadiness - feature gate." items: - description: PodSchedulingGate is associated to a Pod to guard - its scheduling. properties: name: - description: Name of the scheduling gate. Each scheduling - gate must have a unique name field. type: string required: - name @@ -15022,140 +7090,51 @@ spec: - name x-kubernetes-list-type: map securityContext: - description: 'SecurityContext holds pod-level security attributes - and common container settings. Optional: Defaults to empty. See - type description for default values of each field.' properties: fsGroup: - description: "A special supplemental group that applies - to all containers in a pod. Some volume types allow the - Kubelet to change the ownership of that volume to be owned - by the pod: \n 1. The owning GID will be the FSGroup 2. - The setgid bit is set (new files created in the volume - will be owned by FSGroup) 3. The permission bits are OR'd - with rw-rw---- \n If unset, the Kubelet will not modify - the ownership and permissions of any volume. Note that - this field cannot be set when spec.os.name is windows." format: int64 type: integer fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types - which support fsGroup based ownership(and permissions). - It will have no effect on ephemeral volume types such - as: secret, configmaps and emptydir. Valid values are - "OnRootMismatch" and "Always". If not specified, "Always" - is used. Note that this field cannot be set when spec.os.name - is windows.' type: string runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in SecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as a - non-root user. If true, the Kubelet will validate the - image at runtime to ensure that it does not run as UID - 0 (root) and fail to start the container if it does. If - unset or false, no such validation will be performed. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence for - that container. Note that this field cannot be set when - spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a - random SELinux context for each container. May also be - set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by the containers - in this pod. Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile - must be preconfigured on the node to work. Must be - a descending path, relative to the kubelet's configured - seccomp profile location. Must only be set if type - is "Localhost". type: string type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should be - used. RuntimeDefault - the container runtime default - profile should be used. Unconfined - no profile should - be applied." type: string required: - type type: object supplementalGroups: - description: A list of groups applied to the first process - run in each container, in addition to the container's - primary GID, the fsGroup (if specified), and group memberships - defined in the container image for the uid of the container - process. If unspecified, no additional groups are added - to any container. Note that group memberships defined - in the container image for the uid of the container process - are still effective, even if they are not included in - this list. Note that this field cannot be set when spec.os.name - is windows. items: format: int64 type: integer type: array sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. Note that this field cannot - be set when spec.os.name is windows. items: - description: Sysctl defines a kernel parameter to be set properties: name: - description: Name of a property to set type: string value: - description: Value of a property to set type: string required: - name @@ -15163,172 +7142,59 @@ spec: type: object type: array windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options within a container's - SecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set when - spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is - alpha-level and will only be honored by components - that enable the WindowsHostProcessContainers feature - flag. Setting this field without the feature flag - will result in errors when validating the Pod. All - of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object serviceAccount: - description: 'DeprecatedServiceAccount is a depreciated alias - for ServiceAccountName. Deprecated: Use serviceAccountName - instead.' type: string serviceAccountName: - description: 'ServiceAccountName is the name of the ServiceAccount - to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string setHostnameAsFQDN: - description: If true the pod's hostname will be configured as - the pod's FQDN, rather than the leaf name (the default). In - Linux containers, this means setting the FQDN in the hostname - field of the kernel (the nodename field of struct utsname). - In Windows containers, this means setting the registry value - of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters - to FQDN. If a pod does not have FQDN, this has no effect. - Default to false. type: boolean shareProcessNamespace: - description: 'Share a single process namespace between all of - the containers in a pod. When this is set containers will - be able to view and signal processes from other containers - in the same pod, and the first process in each container will - not be assigned PID 1. HostPID and ShareProcessNamespace cannot - both be set. Optional: Default to false.' type: boolean subdomain: - description: If specified, the fully qualified Pod hostname - will be "...svc.". If not specified, the pod will not have a domainname - at all. type: string terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully. May be decreased in delete request. Value must - be non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). If this - value is nil, the default grace period will be used instead. - The grace period is the duration in seconds after the processes - running in the pod are sent a termination signal and the time - when the processes are forcibly halted with a kill signal. - Set this value longer than the expected cleanup time for your - process. Defaults to 30 seconds. format: int64 type: integer tolerations: - description: If specified, the pod's tolerations. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, - allowed values are NoSchedule, PreferNoSchedule and - NoExecute. type: string key: - description: Key is the taint key that the toleration - applies to. Empty means match all taint keys. If the - key is empty, operator must be Exists; this combination - means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship - to the value. Valid operators are Exists and Equal. - Defaults to Equal. Exists is equivalent to wildcard - for value, so that a pod can tolerate all taints of - a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of - time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the - taint forever (do not evict). Zero and negative values - will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. type: string type: object type: array topologySpreadConstraints: - description: TopologySpreadConstraints describes how a group - of pods ought to spread across topology domains. Scheduler - will schedule pods in a way which abides by the constraints. - All topologySpreadConstraints are ANDed. items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. properties: labelSelector: - description: LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine - the number of pods in their corresponding topology domain. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. properties: key: - description: key is the label key that the selector - applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. items: type: string type: array @@ -15340,131 +7206,27 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic matchLabelKeys: - description: MatchLabelKeys is a set of pod label keys - to select the pods over which spreading will be calculated. - The keys are used to lookup values from the incoming - pod labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading - will be calculated for the incoming pod. Keys that don't - exist in the incoming pod labels will be ignored. A - null or empty list means only match against labelSelector. items: type: string type: array x-kubernetes-list-type: atomic maxSkew: - description: 'MaxSkew describes the degree to which pods - may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, - it is the maximum permitted difference between the number - of matching pods in the target topology and the global - minimum. The global minimum is the minimum number of - matching pods in an eligible domain or zero if the number - of eligible domains is less than MinDomains. For example, - in a 3-zone cluster, MaxSkew is set to 1, and pods with - the same labelSelector spread as 2/2/1: In this case, - the global minimum is 1. | zone1 | zone2 | zone3 | | P - P | P P | P | - if MaxSkew is 1, incoming pod - can only be scheduled to zone3 to become 2/2/2; scheduling - it onto zone1(zone2) would make the ActualSkew(3-1) - on zone1(zone2) violate MaxSkew(1). - if MaxSkew is - 2, incoming pod can be scheduled onto any zone. When - `whenUnsatisfiable=ScheduleAnyway`, it is used to give - higher precedence to topologies that satisfy it. It''s - a required field. Default value is 1 and 0 is not allowed.' format: int32 type: integer minDomains: - description: "MinDomains indicates a minimum number of - eligible domains. When the number of eligible domains - with matching topology keys is less than minDomains, - Pod Topology Spread treats \"global minimum\" as 0, - and then the calculation of Skew is performed. And when - the number of eligible domains with matching topology - keys equals or greater than minDomains, this value has - no effect on scheduling. As a result, when the number - of eligible domains is less than minDomains, scheduler - won't schedule more than maxSkew Pods to those domains. - If value is nil, the constraint behaves as if MinDomains - is equal to 1. Valid values are integers greater than - 0. When value is not nil, WhenUnsatisfiable must be - DoNotSchedule. \n For example, in a 3-zone cluster, - MaxSkew is set to 2, MinDomains is set to 5 and pods - with the same labelSelector spread as 2/2/2: | zone1 - | zone2 | zone3 | | P P | P P | P P | The number - of domains is less than 5(MinDomains), so \"global minimum\" - is treated as 0. In this situation, new pod with the - same labelSelector cannot be scheduled, because computed - skew will be 3(3 - 0) if new Pod is scheduled to any - of the three zones, it will violate MaxSkew. \n This - is a beta field and requires the MinDomainsInPodTopologySpread - feature gate to be enabled (enabled by default)." format: int32 type: integer nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will - treat Pod's nodeAffinity/nodeSelector when calculating - pod topology spread skew. Options are: - Honor: only - nodes matching nodeAffinity/nodeSelector are included - in the calculations. - Ignore: nodeAffinity/nodeSelector - are ignored. All nodes are included in the calculations. - \n If this value is nil, the behavior is equivalent - to the Honor policy. This is a beta-level feature default - enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." type: string nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat - node taints when calculating pod topology spread skew. - Options are: - Honor: nodes without taints, along with - tainted nodes for which the incoming pod has a toleration, - are included. - Ignore: node taints are ignored. All - nodes are included. \n If this value is nil, the behavior - is equivalent to the Ignore policy. This is a beta-level - feature default enabled by the NodeInclusionPolicyInPodTopologySpread - feature flag." type: string topologyKey: - description: TopologyKey is the key of node labels. Nodes - that have a label with this key and identical values - are considered to be in the same topology. We consider - each as a "bucket", and try to put balanced - number of pods into each bucket. We define a domain - as a particular instance of a topology. Also, we define - an eligible domain as a domain whose nodes meet the - requirements of nodeAffinityPolicy and nodeTaintsPolicy. - e.g. If TopologyKey is "kubernetes.io/hostname", each - Node is a domain of that topology. And, if TopologyKey - is "topology.kubernetes.io/zone", each zone is a domain - of that topology. It's a required field. type: string whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal - with a pod if it doesn''t satisfy the spread constraint. - - DoNotSchedule (default) tells the scheduler not to - schedule it. - ScheduleAnyway tells the scheduler to - schedule the pod in any location, but giving higher - precedence to topologies that would help reduce the - skew. A constraint is considered "Unsatisfiable" for - an incoming pod if and only if every possible node assignment - for that pod would violate "MaxSkew" on some topology. - For example, in a 3-zone cluster, MaxSkew is set to - 1, and pods with the same labelSelector spread as 3/1/1: - | zone1 | zone2 | zone3 | | P P P | P | P | - If WhenUnsatisfiable is set to DoNotSchedule, incoming - pod can only be scheduled to zone2(zone3) to become - 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies - MaxSkew(1). In other words, the cluster can still be - imbalanced, but scheduler won''t make it *more* imbalanced. - It''s a required field.' type: string required: - maxSkew @@ -15477,240 +7239,106 @@ spec: - whenUnsatisfiable x-kubernetes-list-type: map volumes: - description: 'List of volumes that can be mounted by containers - belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' items: - description: Volume represents a named volume in a pod that - may be accessed by any container in the pod. properties: awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty).' format: int32 type: integer readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: - description: 'volumeID is unique ID of the persistent - disk resource in AWS (Amazon EBS volume). More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. properties: cachingMode: - description: 'cachingMode is the Host Caching mode: - None, Read Only, Read Write.' type: string diskName: - description: diskName is the Name of the data disk - in the blob storage type: string diskURI: - description: diskURI is the URI of data disk in the - blob storage type: string fsType: - description: fsType is Filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure managed - data disk (only in managed availability set). defaults - to shared' type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: - description: azureFile represents an Azure File Service - mount on the host and bind mount to the pod. properties: readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretName: - description: secretName is the name of secret that - contains Azure Storage Account Name and Key type: string shareName: - description: shareName is the azure share Name type: string required: - secretName - shareName type: object cephfs: - description: cephFS represents a Ceph FS mount on the - host that shares a pod's lifetime properties: monitors: - description: 'monitors is Required: Monitors is a - collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: - description: 'path is Optional: Used as the mounted - root, rather than the full Ceph tree, default is - /' type: string readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: - description: 'secretFile is Optional: SecretFile is - the path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: - description: 'secretRef is Optional: SecretRef is - reference to the authentication secret for User, - default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is optional: User is the rados - user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: - description: 'cinder represents a cinder volume attached - and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: - description: 'readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to - OpenStack.' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeID: - description: 'volumeID used to identify the volume - in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: - description: configMap represents a configMap that should - populate this volume properties: defaultMode: - description: 'defaultMode is optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the ConfigMap, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. type: string required: - key @@ -15718,146 +7346,66 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: optional specify whether the ConfigMap - or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers (Beta feature). properties: driver: - description: driver is the name of the CSI driver - that handles this volume. Consult with your admin - for the correct name as registered in the cluster. type: string fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the - associated CSI driver which will determine the default - filesystem to apply. type: string nodePublishSecretRef: - description: nodePublishSecretRef is a reference to - the secret object containing sensitive information - to pass to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the - secret object contains more than one secret, all - secret references are passed. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string - description: volumeAttributes stores driver-specific - properties that are passed to the CSI driver. Consult - your driver's documentation for supported values. type: object required: - driver type: object downwardAPI: - description: downwardAPI represents downward API about - the pod that should populate this volume properties: defaultMode: - description: 'Optional: mode bits to use on created - files by default. Must be a Optional: mode bits - used to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: Items is a list of downward API volume - file items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field properties: fieldRef: - description: 'Required: Selects a field of the - pod: only annotations, labels, name and namespace - are supported.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select - in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used to set - permissions on this file, must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: required for - volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format - of the exposed resources, defaults to - "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource @@ -15869,126 +7417,35 @@ spec: type: array type: object emptyDir: - description: 'emptyDir represents a temporary directory - that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: - description: 'medium represents what type of storage - medium should back this directory. The default is - "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More - info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string - description: 'sizeLimit is the total amount of local - storage required for this EmptyDir volume. The size - limit is also applicable for memory medium. The - maximum usage on memory medium EmptyDir would be - the minimum value between the SizeLimit specified - here and the sum of memory limits of all containers - in a pod. The default is nil which means that the - limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle - is tied to the pod that defines it - it will be created - before the pod starts, and deleted when the pod is removed. - \n Use this if: a) the volume is only needed while the - pod runs, b) features of normal volumes like restoring - from snapshot or capacity tracking are needed, c) the - storage driver is specified through a storage class, - and d) the storage driver supports dynamic volume provisioning - through a PersistentVolumeClaim (see EphemeralVolumeSource - for more information on the connection between this - volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim - or one of the vendor-specific APIs for volumes that - persist for longer than the lifecycle of an individual - pod. \n Use CSI for light-weight local ephemeral volumes - if the CSI driver is meant to be used that way - see - the documentation of the driver for more information. - \n A pod can use both types of ephemeral volumes and - persistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone - PVC to provision the volume. The pod in which this - EphemeralVolumeSource is embedded will be the owner - of the PVC, i.e. the PVC will be deleted together - with the pod. The name of the PVC will be `-` where `` is the - name from the `PodSpec.Volumes` array entry. Pod - validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). - \n An existing PVC with that name that is not owned - by the pod will *not* be used for the pod to avoid - using an unrelated volume by mistake. Starting the - pod is then blocked until the unrelated PVC is removed. - If such a pre-created PVC is meant to be used by - the pod, the PVC has to updated with an owner reference - to the pod once the pod exists. Normally this should - not be necessary, but it may be useful when manually - reconstructing a broken cluster. \n This field is - read-only and no changes will be made by Kubernetes - to the PVC after it has been created. \n Required, - must not be nil." properties: metadata: - description: May contain labels and annotations - that will be copied into the PVC when creating - it. No other fields are allowed and will be - rejected during validation. type: object spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into - the PVC that gets created from this template. - The same fields as in a PersistentVolumeClaim - are also valid here. properties: accessModes: - description: 'accessModes contains the desired - access modes the volume should have. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: - description: 'dataSource field can be used - to specify either: * An existing VolumeSnapshot - object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) - If the provisioner or an external controller - can support the specified data source, it - will create a new volume based on the contents - of the specified data source. When the AnyVolumeDataSource - feature gate is enabled, dataSource contents - will be copied to dataSourceRef, and dataSourceRef - contents will be copied to dataSource when - dataSourceRef.namespace is not specified. - If the namespace is specified, then dataSourceRef - will not be copied to dataSource.' properties: apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string required: - kind @@ -15996,100 +7453,25 @@ spec: type: object x-kubernetes-map-type: atomic dataSourceRef: - description: 'dataSourceRef specifies the - object from which to populate the volume - with data, if a non-empty volume is desired. - This may be any object from a non-empty - API group (non core object) or a PersistentVolumeClaim - object. When this field is specified, volume - binding will only succeed if the type of - the specified object matches some installed - volume populator or dynamic provisioner. - This field will replace the functionality - of the dataSource field and as such if both - fields are non-empty, they must have the - same value. For backwards compatibility, - when namespace isn''t specified in dataSourceRef, - both fields (dataSource and dataSourceRef) - will be set to the same value automatically - if one of them is empty and the other is - non-empty. When namespace is specified in - dataSourceRef, dataSource isn''t set to - the same value and must be empty. There - are three important differences between - dataSource and dataSourceRef: * While dataSource - only allows two specific types of objects, - dataSourceRef allows any non-core object, - as well as PersistentVolumeClaim objects. - * While dataSource ignores disallowed values - (dropping them), dataSourceRef preserves - all values, and generates an error if a - disallowed value is specified. * While dataSource - only allows local objects, dataSourceRef - allows objects in any namespaces. (Beta) - Using this field requires the AnyVolumeDataSource - feature gate to be enabled. (Alpha) Using - the namespace field of dataSourceRef requires - the CrossNamespaceVolumeDataSource feature - gate to be enabled.' properties: apiGroup: - description: APIGroup is the group for - the resource being referenced. If APIGroup - is not specified, the specified Kind - must be in the core API group. For any - other third-party types, APIGroup is - required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string namespace: - description: Namespace is the namespace - of resource being referenced Note that - when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant - documentation for details. (Alpha) This - field requires the CrossNamespaceVolumeDataSource - feature gate to be enabled. type: string required: - kind - name type: object resources: - description: 'resources represents the minimum - resources the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to - specify resource requirements that are lower - than previous value but must still be higher - than capacity recorded in the status field - of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: - description: "Claims lists the names of - resources, defined in spec.resourceClaims, - that are used by this container. \n - This is an alpha field and requires - enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." items: - description: ResourceClaim references - one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the - name of one entry in pod.spec.resourceClaims - of the Pod where this field is - used. It makes that resource available - inside a container. type: string required: - name @@ -16105,9 +7487,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum - amount of compute resources allowed. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -16116,47 +7495,18 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. - If Requests is omitted for a container, - it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: - description: selector is a label query over - volumes to consider for binding. properties: matchExpressions: - description: matchExpressions is a list - of label selector requirements. The - requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, - a key, and an operator that relates - the key and values. properties: key: - description: key is the label key - that the selector applies to. type: string operator: - description: operator represents - a key's relationship to a set - of values. Valid operators are - In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array - of string values. If the operator - is In or NotIn, the values array - must be non-empty. If the operator - is Exists or DoesNotExist, the - values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -16168,29 +7518,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator - is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: - description: 'storageClassName is the name - of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: - description: volumeMode defines what type - of volume is required by the claim. Value - of Filesystem is implied when not included - in claim spec. type: string volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. type: string type: object required: @@ -16198,80 +7533,38 @@ spec: type: object type: object fc: - description: fc represents a Fibre Channel resource that - is attached to a kubelet's host machine and then exposed - to the pod. properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. TODO: how - do we prevent errors in the filesystem from compromising - the machine' type: string lun: - description: 'lun is Optional: FC target lun number' format: int32 type: integer readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' items: type: string type: array wwids: - description: 'wwids Optional: FC volume world wide - identifiers (wwids) Either wwids or combination - of targetWWNs and lun must be set, but not both - simultaneously.' items: type: string type: array type: object flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. properties: driver: - description: driver is the name of the driver to use - for this volume. type: string fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". The - default filesystem depends on FlexVolume script. type: string options: additionalProperties: type: string - description: 'options is Optional: this field holds - extra command options if any.' type: object readOnly: - description: 'readOnly is Optional: defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean secretRef: - description: 'secretRef is Optional: secretRef is - reference to the secret object containing sensitive - information to pass to the plugin scripts. This - may be empty if no secret object is specified. If - the secret object contains more than one secret, - all secrets are passed to the plugin scripts.' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic @@ -16279,194 +7572,88 @@ spec: - driver type: object flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running properties: datasetName: - description: datasetName is Name of the dataset stored - as metadata -> name on the dataset for Flocker should - be considered as deprecated type: string datasetUUID: - description: datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk - resource that is attached to a kubelet''s host machine - and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: - description: 'fsType is filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. - Examples: "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default - is to mount by volume name. Examples: For volume - /dev/sda1, you specify the partition as "1". Similarly, - the volume partition for /dev/sda is "0" (or you - can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: - description: 'pdName is unique name of the PD resource - in GCE. Used to identify the disk in GCE. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: - description: 'gitRepo represents a git repository at a - particular revision. DEPRECATED: GitRepo is deprecated. - To provision a container with a git repo, mount an EmptyDir - into an InitContainer that clones the repo using git, - then mount the EmptyDir into the Pod''s container.' properties: directory: - description: directory is the target directory name. - Must not contain or start with '..'. If '.' is - supplied, the volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. type: string repository: - description: repository is the URL type: string revision: - description: revision is the commit hash for the specified - revision. type: string required: - repository type: object glusterfs: - description: 'glusterfs represents a Glusterfs mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: - description: 'endpoints is the endpoint name that - details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: - description: 'path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: - description: 'readOnly here will force the Glusterfs - volume to be mounted with read-only permissions. - Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: - description: 'hostPath represents a pre-existing file - or directory on the host machine that is directly exposed - to the container. This is generally used for system - agents or other privileged things that are allowed to - see the host machine. Most containers will NOT need - this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host - directory mounts and who can/can not mount host directories - as read/write.' properties: path: - description: 'path of the directory on the host. If - the path is a symlink, it will follow the link to - the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: - description: 'type for HostPath Volume Defaults to - "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: - description: 'iscsi represents an ISCSI Disk resource - that is attached to a kubelet''s host machine and then - exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: chapAuthSession defines whether support - iSCSI Session CHAP authentication type: boolean fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. type: string iqn: - description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: - description: iscsiInterface is the interface Name - that uses an iSCSI transport. Defaults to 'default' - (tcp). type: string lun: - description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: - description: portals is the iSCSI Target Portal List. - The portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). items: type: string type: array readOnly: - description: readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. type: boolean secretRef: - description: secretRef is the CHAP Secret for iSCSI - target and initiator authentication properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic targetPortal: - description: targetPortal is iSCSI Target Portal. - The Portal is either an IP or ip_addr:port if the - port is other than default (typically TCP ports - 860 and 3260). type: string required: - iqn @@ -16474,157 +7661,67 @@ spec: - targetPortal type: object name: - description: 'name of the volume. Must be a DNS_LABEL - and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string nfs: - description: 'nfs represents an NFS mount on the host - that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: - description: 'path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: - description: 'readOnly here will force the NFS export - to be mounted with read-only permissions. Defaults - to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: - description: 'server is the hostname or IP address - of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: - description: readOnly Will force the ReadOnly setting - in VolumeMounts. Default false. type: boolean required: - claimName type: object photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host - machine properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. type: string pdID: - description: pdID is the ID that identifies Photon - Controller persistent disk type: string required: - pdID type: object portworxVolume: - description: portworxVolume represents a portworx volume - attached and mounted on kubelets host machine properties: fsType: - description: fSType represents the filesystem type - to mount Must be a filesystem type supported by - the host operating system. Ex. "ext4", "xfs". Implicitly - inferred to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean volumeID: - description: volumeID uniquely identifies a Portworx - volume type: string required: - volumeID type: object projected: - description: projected items for all in one resources - secrets, configmaps, and downward API properties: defaultMode: - description: defaultMode are the mode bits used to - set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal - and decimal values, JSON requires decimal values - for mode bits. Directories within the path are not - affected by this setting. This might be in conflict - with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. format: int32 type: integer sources: - description: sources is the list of volume projections items: - description: Projection that may be projected along - with other supported volume types properties: configMap: - description: configMap information about the - configMap data to project properties: items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced ConfigMap will be projected - into the volume as a file whose name is - the key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, - the volume setup will error unless it - is marked optional. Paths must be relative - and may not contain the '..' path or start - with '..'. items: - description: Maps a string key to a path - within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. type: string required: - key @@ -16632,97 +7729,42 @@ spec: type: object type: array name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional specify whether the - ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: downwardAPI information about the - downwardAPI data to project properties: items: - description: Items is a list of DownwardAPIVolume - file items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field properties: fieldRef: - description: 'Required: Selects a - field of the pod: only annotations, - labels, name and namespace are supported.' properties: apiVersion: - description: Version of the schema - the FieldPath is written in - terms of, defaults to "v1". type: string fieldPath: - description: Path of the field - to select in the specified API - version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits - used to set permissions on this - file, must be an octal value between - 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of - the container: only resources limits - and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: - required for volumes, optional - for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource - to select' type: string required: - resource @@ -16734,53 +7776,16 @@ spec: type: array type: object secret: - description: secret information about the secret - data to project properties: items: - description: items if unspecified, each - key-value pair in the Data field of the - referenced Secret will be projected into - the volume as a file whose name is the - key and content is the value. If specified, - the listed keys will be projected into - the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the - volume setup will error unless it is marked - optional. Paths must be relative and may - not contain the '..' path or start with - '..'. items: - description: Maps a string key to a path - within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode - bits used to set permissions on - this file. Must be an octal value - between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts - both octal and decimal values, JSON - requires decimal values for mode - bits. If not specified, the volume - defaultMode will be used. This might - be in conflict with other options - that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative - path of the file to map the key - to. May not be an absolute path. - May not contain the path element - '..'. May not start with the string - '..'. type: string required: - key @@ -16788,46 +7793,19 @@ spec: type: object type: array name: - description: 'Name of the referent. More - info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional field specify whether - the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project properties: audience: - description: audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience - defaults to the identifier of the apiserver. type: string expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The - kubelet will start trying to rotate the - token if the token is older than 80 percent - of its time to live or if the token is - older than 24 hours.Defaults to 1 hour - and must be at least 10 minutes. format: int64 type: integer path: - description: path is the path relative to - the mount point of the file to project - the token into. type: string required: - path @@ -16836,159 +7814,76 @@ spec: type: array type: object quobyte: - description: quobyte represents a Quobyte mount on the - host that shares a pod's lifetime properties: group: - description: group to map volume access to Default - is no group type: string readOnly: - description: readOnly here will force the Quobyte - volume to be mounted with read-only permissions. - Defaults to false. type: boolean registry: - description: registry represents a single or multiple - Quobyte Registry services specified as a string - as host:port pair (multiple entries are separated - with commas) which acts as the central registry - for volumes type: string tenant: - description: tenant owning the given Quobyte volume - in the Backend Used with dynamically provisioned - Quobyte volumes, value is set by the plugin type: string user: - description: user to map volume access to Defaults - to serivceaccount user type: string volume: - description: volume is a string that references an - already created Quobyte volume by name. type: string required: - registry - volume type: object rbd: - description: 'rbd represents a Rados Block Device mount - on the host that shares a pod''s lifetime. More info: - https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: - description: 'fsType is the filesystem type of the - volume that you want to mount. Tip: Ensure that - the filesystem type is supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem - from compromising the machine' type: string image: - description: 'image is the rados image name. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: - description: 'keyring is the path to key ring for - RBDUser. Default is /etc/ceph/keyring. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: - description: 'pool is the rados pool name. Default - is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: - description: 'readOnly here will force the ReadOnly - setting in VolumeMounts. Defaults to false. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: - description: 'secretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. - Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is the rados user name. Default - is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Default - is "xfs". type: string gateway: - description: gateway is the host address of the ScaleIO - API Gateway. type: string protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretRef: - description: secretRef references to the secret for - ScaleIO user and other sensitive information. If - this is not provided, Login operation will fail. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false type: boolean storageMode: - description: storageMode indicates whether the storage - for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. type: string storagePool: - description: storagePool is the ScaleIO Storage Pool - associated with the protection domain. type: string system: - description: system is the name of the storage system - as configured in ScaleIO. type: string volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated - with this volume source. type: string required: - gateway @@ -16996,58 +7891,19 @@ spec: - system type: object secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: - description: 'defaultMode is Optional: mode bits used - to set permissions on created files by default. - Must be an octal value between 0000 and 0777 or - a decimal value between 0 and 511. YAML accepts - both octal and decimal values, JSON requires decimal - values for mode bits. Defaults to 0644. Directories - within the path are not affected by this setting. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer items: - description: items If unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. If - a key is specified which is not present in the Secret, - the volume setup will error unless it is marked - optional. Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used - to set permissions on this file. Must be an - octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both - octal and decimal values, JSON requires decimal - values for mode bits. If not specified, the - volume defaultMode will be used. This might - be in conflict with other options that affect - the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the - file to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. type: string required: - key @@ -17055,81 +7911,36 @@ spec: type: object type: array optional: - description: optional field specify whether the Secret - or its keys must be defined type: boolean secretName: - description: 'secretName is the name of the secret - in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. - Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in - VolumeMounts. type: boolean secretRef: - description: secretRef specifies the secret to use - for obtaining the StorageOS API credentials. If - not specified, default values will be attempted. properties: name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeName: - description: volumeName is the human-readable name - of the StorageOS volume. Volume names are only - unique within a namespace. type: string volumeNamespace: - description: volumeNamespace specifies the scope of - the volume within StorageOS. If no namespace is - specified then the Pod's namespace will be used. This - allows the Kubernetes name scoping to be mirrored - within StorageOS for tighter integration. Set VolumeName - to any name to override the default behaviour. Set - to "default" if you are not using namespaces within - StorageOS. Namespaces that do not pre-exist within - StorageOS will be created. type: string type: object vsphereVolume: - description: vsphereVolume represents a vSphere volume - attached and mounted on kubelets host machine properties: fsType: - description: fsType is filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string storagePolicyID: - description: storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated with - the StoragePolicyName. type: string storagePolicyName: - description: storagePolicyName is the storage Policy - Based Management (SPBM) profile name. type: string volumePath: - description: volumePath is the path that identifies - vSphere volume vmdk type: string required: - volumePath @@ -17142,11 +7953,8 @@ spec: - containers type: object timeout: - description: Timeout defines the maximum amount of time the Serving - should take to execute before the Serving is running. type: string tracing: - description: Tracing is the config of tracing. properties: baggage: additionalProperties: @@ -17190,25 +7998,17 @@ spec: - provider type: object triggers: - description: Triggers used to trigger the Function. properties: dapr: items: properties: inputName: - description: 'Deprecated: Only for compatibility with - v1beta1' type: string name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string topic: type: string type: - description: Type is the type of the component, if it - is not set, controller will get it automatically. type: string required: - name @@ -17217,32 +8017,19 @@ spec: http: properties: engine: - description: Http function runtime engine, can be set to - knative or keda, default to knative if not set type: string port: - description: The port on which the function will be invoked format: int32 type: integer route: - description: Information needed to make HTTPRoute. Will - attempt to make HTTPRoute using the default Gateway resource - if Route is nil. properties: gatewayRef: - description: GatewayRef references the Gateway resources - that a Route wants to be attached to. properties: name: - description: Name is the name of the referent. It - refers to the name of a Gateway resource. maxLength: 253 minLength: 1 type: string namespace: - description: Namespace is the namespace of the referent. - When unspecified, this refers to the local namespace - of the Route. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -17252,25 +8039,7 @@ spec: - namespace type: object hostnames: - description: Hostnames defines a set of hostname that - should match against the HTTP Host header to select - a HTTPRoute to process the request. items: - description: "Hostname is the fully qualified domain - name of a network host. This matches the RFC 1123 - definition of a hostname with 2 notable exceptions: - \n 1. IPs are not allowed. 2. A hostname may be - prefixed with a wildcard label (`*.`). The wildcard - label must appear by itself as the first label. - \n Hostname can be \"precise\" which is a domain - name without the terminating dot of a network host - (e.g. \"foo.example.com\") or \"wildcard\", which - is a domain name prefixed with a single wildcard - label (e.g. `*.example.com`). \n Note that as per - RFC1035 and RFC1123, a *label* must consist of lower - case alphanumeric characters or '-', and must start - and end with an alphanumeric character. No other - punctuation is allowed." maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -17278,81 +8047,26 @@ spec: maxItems: 16 type: array rules: - description: Rules are a list of HTTP matchers, filters - and actions. items: - description: HTTPRouteRule defines semantics for matching - an HTTP request based on conditions (matches), processing - it (filters), and forwarding the request to an API - object (backendRefs). properties: backendRefs: - description: "If unspecified or invalid (refers - to a non-existent resource or a Service with - no endpoints), the rule performs no forwarding. - If there are also no filters specified that - would result in a response being sent, a HTTP - 503 status code is returned. 503 responses must - be sent so that the overall weight is respected; - if an invalid backend is requested to have 80% - of requests, then 80% of requests must get a - 503 instead. \n Support: Core for Kubernetes - Service Support: Custom for any other resource - \n Support for weight: Core" items: - description: HTTPBackendRef defines how a HTTPRoute - should forward an HTTP request. properties: filters: - description: "Filters defined at this level - should be executed if and only if the - request is being forwarded to the backend - defined here. \n Support: Custom (For - broader support of filters, use the Filters - field in HTTPRouteRule.)" items: - description: HTTPRouteFilter defines processing - steps that must be completed during - the request or response lifecycle. HTTPRouteFilters - are meant as an extension point to express - processing that may be done in Gateway - implementations. Some examples include - request or response modification, implementing - authentication strategies, rate-limiting, - and traffic shaping. API guarantee/conformance - is defined based on the type of the - filter. properties: extensionRef: - description: "ExtensionRef is an optional, - implementation-specific extension - to the \"filter\" behavior. For - example, resource \"myroutefilter\" - in group \"networking.example.net\"). - ExtensionRef MUST NOT be used for - core and extended filters. \n Support: - Implementation-specific" properties: group: - description: Group is the group - of the referent. For example, - "networking.k8s.io". When unspecified - (empty string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the - referent. For example "HTTPRoute" - or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name - of the referent. maxLength: 253 minLength: 1 type: string @@ -17362,54 +8076,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier - defines a schema for a filter that - modifies request headers. \n Support: - Core" properties: add: - description: "Add adds the given - header(s) (name, value) to the - request before the action. It - appends to any existing values - associated with the header name. - \n Input: GET /foo HTTP/1.1 - my-header: foo \n Config: add: - - name: \"my-header\" value: - \"bar\" \n Output: GET /foo - HTTP/1.1 my-header: foo my-header: - bar" items: - description: HTTPHeader represents - an HTTP Header name and value - as defined by RFC 7230. properties: name: - description: "Name is the - name of the HTTP Header - to be matched. Name matching - MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries - specify equivalent header - names, the first entry - with an equivalent name - MUST be considered for - a match. Subsequent entries - with an equivalent header - name MUST be ignored. - Due to the case-insensitivity - of header names, \"foo\" - and \"Foo\" are considered - equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the - value of HTTP Header to - be matched. maxLength: 4096 minLength: 1 type: string @@ -17423,63 +8099,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given - header(s) from the HTTP request - before the action. The value - of Remove is a list of HTTP - header names. Note that the - header names are case-insensitive - (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 - my-header1: foo my-header2: - bar my-header3: baz \n Config: - remove: [\"my-header1\", \"my-header3\"] - \n Output: GET /foo HTTP/1.1 - my-header2: bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the - request with the given header - (name, value) before the action. - \n Input: GET /foo HTTP/1.1 - my-header: foo \n Config: set: - - name: \"my-header\" value: - \"bar\" \n Output: GET /foo - HTTP/1.1 my-header: bar" items: - description: HTTPHeader represents - an HTTP Header name and value - as defined by RFC 7230. properties: name: - description: "Name is the - name of the HTTP Header - to be matched. Name matching - MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries - specify equivalent header - names, the first entry - with an equivalent name - MUST be considered for - a match. Subsequent entries - with an equivalent header - name MUST be ignored. - Due to the case-insensitivity - of header names, \"foo\" - and \"Foo\" are considered - equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the - value of HTTP Header to - be matched. maxLength: 4096 minLength: 1 type: string @@ -17494,96 +8126,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines - a schema for a filter that mirrors - requests. Requests are sent to the - specified destination, but responses - from that destination are ignored. - \n Support: Extended" properties: backendRef: - description: "BackendRef references - a resource where mirrored requests - are sent. \n If the referent - cannot be found, this BackendRef - is invalid and must be dropped - from the Gateway. The controller - must ensure the \"ResolvedRefs\" - condition on the Route status - is set to `status: False` and - not configure this backend in - the underlying implementation. - \n If there is a cross-namespace - reference to an *existing* object - that is not allowed by a ReferencePolicy, - the controller must ensure the - \"ResolvedRefs\" condition - on the Route is set to `status: - False`, with the \"RefNotPermitted\" - reason and not configure this - backend in the underlying implementation. - \n In either error case, the - Message of the `ResolvedRefs` - Condition should be used to - provide more detail about the - problem. \n Support: Extended - for Kubernetes Service Support: - Custom for any other resource" properties: group: default: "" - description: Group is the - group of the referent. For - example, "networking.k8s.io". - When unspecified (empty - string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind - of the referent. For example - "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name - of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is - the namespace of the backend. - When unspecified, the local - namespace is inferred. \n - Note that when a namespace - is specified, a ReferencePolicy - object is required in the - referent namespace to allow - that namespace's owner to - accept the reference. See - the ReferencePolicy documentation - for details. \n Support: - Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies - the destination port number - to use for this resource. - Port is required when the - referent is a Kubernetes - Service. For other resources, - destination port might be - derived from the referent - resource or this field. format: int32 maximum: 65535 minimum: 1 @@ -17595,89 +8161,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines - a schema for a filter that responds - to the request with an HTTP redirection. - \n Support: Core" properties: hostname: - description: "Hostname is the - hostname to be used in the value - of the `Location` header in - the response. When empty, the - hostname of the request is used. - \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port - to be used in the value of the - `Location` header in the response. - When empty, port (if specified) - of the request is used. \n Support: - Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme - to be used in the value of the - `Location` header in the response. - When empty, the scheme of the - request is used. \n Support: - Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the - HTTP status code to be used - in response. \n Support: Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the - type of filter to apply. As with - other API fields, types are classified - into three conformance levels: \n - - Core: Filter types and their corresponding - configuration defined by \"Support: - Core\" in this package, e.g. \"RequestHeaderModifier\". - All implementations must support - core filters. \n - Extended: Filter - types and their corresponding configuration - defined by \"Support: Extended\" - in this package, e.g. \"RequestMirror\". - Implementers are encouraged to support - extended filters. \n - Custom: Filters - that are defined and supported by - specific vendors. In the future, - filters showing convergence in behavior - across multiple implementations - will be considered for inclusion - in extended or core conformance - levels. Filter-specific configuration - for such filters is specified using - the ExtensionRef field. `Type` should - be set to \"ExtensionRef\" for custom - filters. \n Implementers are encouraged - to define custom implementation - types to extend the core API with - implementation-specific behavior. - \n If a reference to a custom filter - type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests - that would have been processed by - that filter MUST receive a HTTP - error response." enum: - RequestHeaderModifier - RequestMirror @@ -17691,70 +8198,31 @@ spec: type: array group: default: "" - description: Group is the group of the referent. - For example, "networking.k8s.io". When - unspecified (empty string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace - of the backend. When unspecified, the - local namespace is inferred. \n Note that - when a namespace is specified, a ReferencePolicy - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferencePolicy - documentation for details. \n Support: - Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination - port number to use for this resource. - Port is required when the referent is - a Kubernetes Service. For other resources, - destination port might be derived from - the referent resource or this field. format: int32 maximum: 65535 minimum: 1 type: integer weight: default: 1 - description: "Weight specifies the proportion - of requests forwarded to the referenced - backend. This is computed as weight/(sum - of all weights in this BackendRefs list). - For non-zero values, there may be some - epsilon from the exact proportion defined - here depending on the precision an implementation - supports. Weight is not a percentage and - the sum of weights does not need to equal - 100. \n If only one backend is specified - and it has a weight greater than 0, 100% - of the traffic is forwarded to that backend. - If weight is set to 0, no traffic should - be forwarded for this entry. If unspecified, - weight defaults to 1. \n Support for this - field varies based on the context where - used." format: int32 maximum: 1000000 minimum: 0 @@ -17765,58 +8233,20 @@ spec: maxItems: 16 type: array filters: - description: "Filters define the filters that - are applied to requests that match this rule. - \n The effects of ordering of multiple behaviors - are currently unspecified. This can change in - the future based on feedback during the alpha - stage. \n Conformance-levels at this level are - defined based on the type of filter: \n - ALL - core filters MUST be supported by all implementations. - - Implementers are encouraged to support extended - filters. - Implementation-specific custom filters - have no API guarantees across implementations. - \n Specifying a core filter multiple times has - unspecified or custom conformance. \n Support: - Core" items: - description: HTTPRouteFilter defines processing - steps that must be completed during the request - or response lifecycle. HTTPRouteFilters are - meant as an extension point to express processing - that may be done in Gateway implementations. - Some examples include request or response - modification, implementing authentication - strategies, rate-limiting, and traffic shaping. - API guarantee/conformance is defined based - on the type of the filter. properties: extensionRef: - description: "ExtensionRef is an optional, - implementation-specific extension to the - \"filter\" behavior. For example, resource - \"myroutefilter\" in group \"networking.example.net\"). - ExtensionRef MUST NOT be used for core - and extended filters. \n Support: Implementation-specific" properties: group: - description: Group is the group of the - referent. For example, "networking.k8s.io". - When unspecified (empty string), core - API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the - referent. maxLength: 253 minLength: 1 type: string @@ -17826,47 +8256,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier defines - a schema for a filter that modifies request - headers. \n Support: Core" properties: add: - description: "Add adds the given header(s) - (name, value) to the request before - the action. It appends to any existing - values associated with the header - name. \n Input: GET /foo HTTP/1.1 - my-header: foo \n Config: add: - name: - \"my-header\" value: \"bar\" \n Output: - GET /foo HTTP/1.1 my-header: foo my-header: - bar" items: - description: HTTPHeader represents - an HTTP Header name and value as - defined by RFC 7230. properties: name: - description: "Name is the name - of the HTTP Header to be matched. - Name matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify - equivalent header names, the - first entry with an equivalent - name MUST be considered for - a match. Subsequent entries - with an equivalent header name - MUST be ignored. Due to the - case-insensitivity of header - names, \"foo\" and \"Foo\" are - considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value - of HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -17880,55 +8279,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given header(s) - from the HTTP request before the action. - The value of Remove is a list of HTTP - header names. Note that the header - names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 my-header1: - foo my-header2: bar my-header3: baz - \n Config: remove: [\"my-header1\", - \"my-header3\"] \n Output: GET /foo - HTTP/1.1 my-header2: bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the request - with the given header (name, value) - before the action. \n Input: GET /foo - HTTP/1.1 my-header: foo \n Config: - set: - name: \"my-header\" value: - \"bar\" \n Output: GET /foo HTTP/1.1 - my-header: bar" items: - description: HTTPHeader represents - an HTTP Header name and value as - defined by RFC 7230. properties: name: - description: "Name is the name - of the HTTP Header to be matched. - Name matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify - equivalent header names, the - first entry with an equivalent - name MUST be considered for - a match. Subsequent entries - with an equivalent header name - MUST be ignored. Due to the - case-insensitivity of header - names, \"foo\" and \"Foo\" are - considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value - of HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -17943,86 +8306,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines a schema - for a filter that mirrors requests. Requests - are sent to the specified destination, - but responses from that destination are - ignored. \n Support: Extended" properties: backendRef: - description: "BackendRef references - a resource where mirrored requests - are sent. \n If the referent cannot - be found, this BackendRef is invalid - and must be dropped from the Gateway. - The controller must ensure the \"ResolvedRefs\" - condition on the Route status is set - to `status: False` and not configure - this backend in the underlying implementation. - \n If there is a cross-namespace reference - to an *existing* object that is not - allowed by a ReferencePolicy, the - controller must ensure the \"ResolvedRefs\" - \ condition on the Route is set to - `status: False`, with the \"RefNotPermitted\" - reason and not configure this backend - in the underlying implementation. - \n In either error case, the Message - of the `ResolvedRefs` Condition should - be used to provide more detail about - the problem. \n Support: Extended - for Kubernetes Service Support: Custom - for any other resource" properties: group: default: "" - description: Group is the group - of the referent. For example, - "networking.k8s.io". When unspecified - (empty string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the - referent. For example "HTTPRoute" - or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of - the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace - of the backend. When unspecified, - the local namespace is inferred. - \n Note that when a namespace - is specified, a ReferencePolicy - object is required in the referent - namespace to allow that namespace's - owner to accept the reference. - See the ReferencePolicy documentation - for details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the - destination port number to use - for this resource. Port is required - when the referent is a Kubernetes - Service. For other resources, - destination port might be derived - from the referent resource or - this field. format: int32 maximum: 65535 minimum: 1 @@ -18034,81 +8341,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines a - schema for a filter that responds to the - request with an HTTP redirection. \n Support: - Core" properties: hostname: - description: "Hostname is the hostname - to be used in the value of the `Location` - header in the response. When empty, - the hostname of the request is used. - \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port to be - used in the value of the `Location` - header in the response. When empty, - port (if specified) of the request - is used. \n Support: Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme to - be used in the value of the `Location` - header in the response. When empty, - the scheme of the request is used. - \n Support: Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the HTTP - status code to be used in response. - \n Support: Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the type of - filter to apply. As with other API fields, - types are classified into three conformance - levels: \n - Core: Filter types and their - corresponding configuration defined by - \"Support: Core\" in this package, e.g. - \"RequestHeaderModifier\". All implementations - must support core filters. \n - Extended: - Filter types and their corresponding configuration - defined by \"Support: Extended\" in this - package, e.g. \"RequestMirror\". Implementers - are encouraged to support extended filters. - \n - Custom: Filters that are defined - and supported by specific vendors. In - the future, filters showing convergence - in behavior across multiple implementations - will be considered for inclusion in extended - or core conformance levels. Filter-specific - configuration for such filters is specified - using the ExtensionRef field. `Type` should - be set to \"ExtensionRef\" for custom - filters. \n Implementers are encouraged - to define custom implementation types - to extend the core API with implementation-specific - behavior. \n If a reference to a custom - filter type cannot be resolved, the filter - MUST NOT be skipped. Instead, requests - that would have been processed by that - filter MUST receive a HTTP error response." enum: - RequestHeaderModifier - RequestMirror @@ -18125,110 +8381,23 @@ spec: - path: type: PathPrefix value: / - description: "Matches define conditions used for - matching the rule against incoming HTTP requests. - Each match is independent, i.e. this rule will - be matched if **any** one of the matches is - satisfied. \n For example, take the following - matches configuration: \n ``` matches: - path: - value: \"/foo\" headers: - name: \"version\" - value: \"v2\" - path: value: \"/v2/foo\" ``` - \n For a request to match against this rule, - a request must satisfy EITHER of the two conditions: - \n - path prefixed with `/foo` AND contains - the header `version: v2` - path prefix of `/v2/foo` - \n See the documentation for HTTPRouteMatch - on how to specify multiple match conditions - that should be ANDed together. \n If no matches - are specified, the default is a prefix path - match on \"/\", which has the effect of matching - every HTTP request. \n Proxy or Load Balancer - routing configuration generated from HTTPRoutes - MUST prioritize rules based on the following - criteria, continuing on ties. Precedence must - be given to the the Rule with the largest number - of: \n * Characters in a matching non-wildcard - hostname. * Characters in a matching hostname. - * Characters in a matching path. * Header matches. - * Query param matches. \n If ties still exist - across multiple Routes, matching precedence - MUST be determined in order of the following - criteria, continuing on ties: \n * The oldest - Route based on creation timestamp. * The Route - appearing first in alphabetical order by \"/\". - \n If ties still exist within the Route that - has been given precedence, matching precedence - MUST be granted to the first matching rule meeting - the above criteria." items: - description: "HTTPRouteMatch defines the predicate - used to match requests to a given action. - Multiple match types are ANDed together, i.e. - the match will evaluate to true only if all - conditions are satisfied. \n For example, - the match below will match a HTTP request - only if its path starts with `/foo` AND it - contains the `version: v1` header: \n ``` - match: path: value: \"/foo\" headers: - name: - \"version\" value \"v1\" ```" properties: headers: - description: Headers specifies HTTP request - header matchers. Multiple match values - are ANDed together, meaning, a request - must match all the specified headers to - select the route. items: - description: HTTPHeaderMatch describes - how to select a HTTP route by matching - HTTP request headers. properties: name: - description: "Name is the name of - the HTTP Header to be matched. Name - matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, only the first entry - with an equivalent name MUST be - considered for a match. Subsequent - entries with an equivalent header - name MUST be ignored. Due to the - case-insensitivity of header names, - \"foo\" and \"Foo\" are considered - equivalent. \n When a header is - repeated in an HTTP request, it - is implementation-specific behavior - as to how this is represented. Generally, - proxies should follow the guidance - from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 - regarding processing a repeated - header, with special handling for - \"Set-Cookie\"." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string type: default: Exact - description: "Type specifies how to - match against the value of the header. - \n Support: Core (Exact) \n Support: - Custom (RegularExpression) \n Since - RegularExpression HeaderMatchType - has custom conformance, implementations - can support POSIX, PCRE or any other - dialects of regular expressions. - Please read the implementation's - documentation to determine the supported - dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of - HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -18242,10 +8411,6 @@ spec: - name x-kubernetes-list-type: map method: - description: "Method specifies HTTP method - matcher. When specified, this route will - be matched only if the request has the - specified method. \n Support: Extended" enum: - GET - HEAD @@ -18261,17 +8426,9 @@ spec: default: type: PathPrefix value: / - description: Path specifies a HTTP request - path matcher. If this field is not specified, - a default prefix match on the "/" path - is provided. properties: type: default: PathPrefix - description: "Type specifies how to - match against the path Value. \n Support: - Core (Exact, PathPrefix) \n Support: - Custom (RegularExpression)" enum: - Exact - PathPrefix @@ -18279,50 +8436,23 @@ spec: type: string value: default: / - description: Value of the HTTP path - to match against. maxLength: 1024 type: string type: object queryParams: - description: QueryParams specifies HTTP - query parameter matchers. Multiple match - values are ANDed together, meaning, a - request must match all the specified query - parameters to select the route. items: - description: HTTPQueryParamMatch describes - how to select a HTTP route by matching - HTTP query parameters. properties: name: - description: Name is the name of the - HTTP query param to be matched. - This must be an exact string match. - (See https://tools.ietf.org/html/rfc7230#section-2.7.3). maxLength: 256 minLength: 1 type: string type: default: Exact - description: "Type specifies how to - match against the value of the query - parameter. \n Support: Extended - (Exact) \n Support: Custom (RegularExpression) - \n Since RegularExpression QueryParamMatchType - has custom conformance, implementations - can support POSIX, PCRE or any other - dialects of regular expressions. - Please read the implementation's - documentation to determine the supported - dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of - HTTP query param to be matched. maxLength: 1024 minLength: 1 type: string @@ -18349,15 +8479,10 @@ spec: dapr: properties: name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string topic: type: string type: - description: Type is the type of the component, if - it is not set, controller will get it automatically. type: string required: - name @@ -18366,34 +8491,24 @@ spec: type: array type: object workloadType: - description: How to run the function, known values are Deployment - or StatefulSet, default is Deployment. type: string type: object version: - description: Function version in format like v1.0.0 type: string workloadRuntime: default: OCIContainer - description: 'WorkloadRuntime for Function. Know values: ``` OCIContainer: - Nodes will run standard OCI container workloads. WasmEdge: Nodes will - run workloads using the crun (with WasmEdge support). ```' type: string required: - image type: object status: - description: FunctionStatus defines the observed state of Function properties: addresses: - description: Addresses holds the addresses that used to access the Function. items: properties: type: - description: Type of the address. type: string value: - description: Value of the address. maxLength: 253 minLength: 1 type: string @@ -18429,67 +8544,30 @@ spec: route: properties: conditions: - description: Conditions describes the status of the route with respect - to the Gateway. Note that the route's availability is also subject - to the Gateway's own status conditions and listener status. items: - description: "Condition contains details for one aspect of the - current state of this API Resource. --- This struct is intended - for direct use as an array at the field path .status.conditions. - \ For example, \n type FooStatus struct{ // Represents the observations - of a foo's current state. // Known .status.conditions.type are: - \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type - // +patchStrategy=merge // +listType=map // +listMapKey=type - Conditions []metav1.Condition `json:\"conditions,omitempty\" - patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` - \n // other fields }" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be - when the underlying condition changed. If that is not known, - then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if - .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. - This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: - description: status of the condition, one of True, False, - Unknown. enum: - "True" - "False" - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be - useful (see .node.status.conditions), the ability to deconflict - is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -18507,20 +8585,7 @@ spec: - type x-kubernetes-list-type: map hosts: - description: Hosts list all actual hostnames of HTTPRoute. items: - description: "Hostname is the fully qualified domain name of a - network host. This matches the RFC 1123 definition of a hostname - with 2 notable exceptions: \n 1. IPs are not allowed. 2. A hostname - may be prefixed with a wildcard label (`*.`). The wildcard label - must appear by itself as the first label. \n Hostname can be - \"precise\" which is a domain name without the terminating dot - of a network host (e.g. \"foo.example.com\") or \"wildcard\", - which is a domain name prefixed with a single wildcard label - (e.g. `*.example.com`). \n Note that as per RFC1035 and RFC1123, - a *label* must consist of lower case alphanumeric characters - or '-', and must start and end with an alphanumeric character. - No other punctuation is allowed." maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -18528,16 +8593,10 @@ spec: maxItems: 16 type: array paths: - description: Paths list all actual paths of HTTPRoute. items: - description: HTTPPathMatch describes how to select a HTTP route - by matching the HTTP request path. properties: type: default: PathPrefix - description: "Type specifies how to match against the path - Value. \n Support: Core (Exact, PathPrefix) \n Support: - Custom (RegularExpression)" enum: - Exact - PathPrefix @@ -18545,7 +8604,6 @@ spec: type: string value: default: / - description: Value of the HTTP path to match against. maxLength: 1024 type: string type: object @@ -18572,39 +8630,23 @@ spec: type: string type: object sources: - description: Sources holds the results emitted from the step definition - of different sources items: - description: SourceResult holds the results emitted from the different - sources properties: bundle: - description: Bundle holds the results emitted from from the step - definition of bundle source properties: digest: - description: Digest hold the image digest result type: string type: object git: - description: Git holds the results emitted from from the step - definition of a git source properties: branchName: - description: BranchName holds the default branch name of the - git source this will be set only when revision is not specified - in Build object type: string commitAuthor: - description: CommitAuthor holds the commit author of a git - source type: string commitSha: - description: CommitSha holds the commit sha of git source type: string type: object name: - description: Name is the name of source type: string required: - name diff --git a/openfunction/crds/gateway.yaml b/openfunction/crds/gateway.yaml index e5cb8ef..b81d9d0 100644 --- a/openfunction/crds/gateway.yaml +++ b/openfunction/crds/gateway.yaml @@ -24,47 +24,31 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Gateway is the Schema for the gateways API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: GatewaySpec defines the desired state of Gateway properties: clusterDomain: default: cluster.local - description: Used to generate the hostname field of gatewaySpec.listeners.openfunction.hostname type: string domain: - description: Used to generate the hostname field of gatewaySpec.listeners.openfunction.hostname type: string gatewayDef: - description: Definition to a new K8s gateway properties: gatewayClassName: - description: GatewayClassName used for this Gateway. This is the - name of a GatewayClass resource. maxLength: 253 minLength: 1 type: string name: - description: Name is the name of the referent. It refers to the - name of a k8s Gateway resource. maxLength: 253 minLength: 1 type: string namespace: - description: Namespace is the namespace of the referent. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -74,17 +58,12 @@ spec: - namespace type: object gatewayRef: - description: Reference to an existing K8s gateway properties: name: - description: Name is the name of the referent. It refers to the - name of a k8s Gateway resource. maxLength: 253 minLength: 1 type: string namespace: - description: Namespace is the namespace of the referent. It refers - to a k8s namespace. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -94,67 +73,24 @@ spec: - namespace type: object gatewaySpec: - description: GatewaySpec defines the desired state of k8s Gateway. properties: listeners: - description: "Listeners associated with this Gateway. Listeners - define logical endpoints that are bound on this Gateway's addresses. - At least one Listener MUST be specified. \n Each listener in a - Gateway must have a unique combination of Hostname, Port, and - Protocol." items: - description: Listener embodies the concept of a logical endpoint - where a Gateway accepts network connections. properties: allowedRoutes: default: namespaces: from: Same - description: "AllowedRoutes defines the types of routes that - MAY be attached to a Listener and the trusted namespaces - where those Route resources MAY be present. \n Although - a client request may match multiple route rules, only one - rule may ultimately receive the request. Matching precedence - MUST be determined in order of the following criteria: \n - * The most specific match as defined by the Route type. - * The oldest Route based on creation timestamp. For example, - a Route with a creation timestamp of \"2020-09-08 01:02:03\" - is given precedence over a Route with a creation timestamp - of \"2020-09-08 01:02:04\". * If everything else is equivalent, - the Route appearing first in alphabetical order (namespace/name) - should be given precedence. For example, foo/bar is given - precedence over foo/baz. \n All valid rules within a Route - attached to this Listener should be implemented. Invalid - Route rules can be ignored (sometimes that will mean the - full Route). If a Route rule transitions from valid to invalid, - support for that Route rule should be dropped to ensure - consistency. For example, even if a filter specified by - a Route rule is invalid, the rest of the rules within that - Route should still be supported. \n Support: Core" properties: kinds: - description: "Kinds specifies the groups and kinds of - Routes that are allowed to bind to this Gateway Listener. - When unspecified or empty, the kinds of Routes selected - are determined using the Listener protocol. \n A RouteGroupKind - MUST correspond to kinds of Routes that are compatible - with the application protocol specified in the Listener's - Protocol field. If an implementation does not support - or recognize this resource type, it MUST set the \"ResolvedRefs\" - condition to False for this Listener with the \"InvalidRoutesRef\" - reason. \n Support: Core" items: - description: RouteGroupKind indicates the group and - kind of a Route resource. properties: group: default: gateway.networking.k8s.io - description: Group is the group of the Route. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is the kind of the Route. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ @@ -167,57 +103,24 @@ spec: namespaces: default: from: Same - description: "Namespaces indicates namespaces from which - Routes may be attached to this Listener. This is restricted - to the namespace of this Gateway by default. \n Support: - Core" properties: from: default: Same - description: "From indicates where Routes will be - selected for this Gateway. Possible values are: - * All: Routes in all namespaces may be used by this - Gateway. * Selector: Routes in namespaces selected - by the selector may be used by this Gateway. * Same: - Only Routes in the same namespace may be used by - this Gateway. \n Support: Core" enum: - All - Selector - Same type: string selector: - description: "Selector must be specified when From - is set to \"Selector\". In that case, only Routes - in Namespaces matching this Selector will be selected - by this Gateway. This field is ignored for other - values of \"From\". \n Support: Core" properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -229,132 +132,52 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic type: object type: object hostname: - description: "Hostname specifies the virtual hostname to match - for protocol types that define this concept. When unspecified, - all hostnames are matched. This field is ignored for protocols - that don't require hostname based matching. \n Implementations - MUST apply Hostname matching appropriately for each of the - following protocols: \n * TLS: The Listener Hostname MUST - match the SNI. * HTTP: The Listener Hostname MUST match - the Host header of the request. * HTTPS: The Listener Hostname - SHOULD match at both the TLS and HTTP protocol layers as - described above. If an implementation does not ensure that - both the SNI and Host header match the Listener hostname, - it MUST clearly document that. \n For HTTPRoute and TLSRoute - resources, there is an interaction with the `spec.hostnames` - array. When both listener and route specify hostnames, there - MUST be an intersection between the values for a Route to - be accepted. For more information, refer to the Route specific - Hostnames documentation. \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string name: - description: "Name is the name of the Listener. \n Support: - Core" maxLength: 253 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the network port. Multiple listeners - may use the same port, subject to the Listener compatibility - rules. \n Support: Core" format: int32 maximum: 65535 minimum: 1 type: integer protocol: - description: "Protocol specifies the network protocol this - listener expects to receive. \n Support: Core" maxLength: 255 minLength: 1 pattern: ^[a-zA-Z0-9]([-a-zSA-Z0-9]*[a-zA-Z0-9])?$|[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9]+$ type: string tls: - description: "TLS is the TLS configuration for the Listener. - This field is required if the Protocol field is \"HTTPS\" - or \"TLS\". It is invalid to set this field if the Protocol - field is \"HTTP\", \"TCP\", or \"UDP\". \n The association - of SNIs to Certificate defined in GatewayTLSConfig is defined - based on the Hostname field for this listener. \n The GatewayClass - MUST use the longest matching SNI out of all available certificates - for any TLS handshake. \n Support: Core" properties: certificateRefs: - description: "CertificateRefs contains a series of references - to Kubernetes objects that contains TLS certificates - and private keys. These certificates are used to establish - a TLS handshake for requests that match the hostname - of the associated listener. \n A single CertificateRef - to a Kubernetes Secret has \"Core\" support. Implementations - MAY choose to support attaching multiple certificates - to a Listener, but this behavior is implementation-specific. - \n References to a resource in different namespace are - invalid UNLESS there is a ReferencePolicy in the target - namespace that allows the certificate to be attached. - If a ReferencePolicy does not allow this reference, - the \"ResolvedRefs\" condition MUST be set to False - for this listener with the \"InvalidCertificateRef\" - reason. \n This field is required to have at least one - element when the mode is set to \"Terminate\" (default) - and is optional otherwise. \n CertificateRefs can reference - to standard Kubernetes resources, i.e. Secret, or implementation-specific - custom resources. \n Support: Core - A single reference - to a Kubernetes Secret \n Support: Implementation-specific - (More than one reference or other resource types)" items: - description: "SecretObjectReference identifies an API - object including its namespace, defaulting to Secret. - \n The API object must be valid in the cluster; the - Group and Kind must be registered in the cluster for - this reference to be valid. \n References to objects - with invalid Group and Kind are not valid, and must - be rejected by the implementation, with appropriate - Conditions set on the containing object." properties: group: default: "" - description: Group is the group of the referent. - For example, "networking.k8s.io". When unspecified - (empty string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Secret - description: Kind is kind of the referent. For example - "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace of the - backend. When unspecified, the local namespace - is inferred. \n Note that when a namespace is - specified, a ReferencePolicy object is required - in the referent namespace to allow that namespace's - owner to accept the reference. See the ReferencePolicy - documentation for details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -366,40 +189,15 @@ spec: type: array mode: default: Terminate - description: "Mode defines the TLS behavior for the TLS - session initiated by the client. There are two possible - modes: \n - Terminate: The TLS session between the downstream - client and the Gateway is terminated at the Gateway. - This mode requires certificateRefs to be set and contain - at least one element. - Passthrough: The TLS session - is NOT terminated by the Gateway. This implies that - the Gateway can't decipher the TLS stream except for - the ClientHello message of the TLS protocol. CertificateRefs - field is ignored in this mode. \n Support: Core" enum: - Terminate - Passthrough type: string options: additionalProperties: - description: AnnotationValue is the value of an annotation - in Gateway API. This is used for validation of maps - such as TLS options. This roughly matches Kubernetes - annotation validation, although the length validation - in that case is based on the entire size of the annotations - struct. maxLength: 4096 minLength: 0 type: string - description: "Options are a list of key/value pairs to - enable extended TLS configuration for each implementation. - For example, configuring the minimum TLS version or - supported cipher suites. \n A set of common keys MAY - be defined by the API in the future. To avoid any ambiguity, - implementation-specific definitions MUST use domain-prefixed - names, such as `example.com/my-custom-option`. Un-prefixed - names are reserved for key names defined by Gateway - API. \n Support: Implementation-specific" maxProperties: 16 type: object type: object @@ -418,42 +216,30 @@ spec: type: object hostTemplate: default: '{{.Name}}.{{.Namespace}}.{{.Domain}}' - description: Used to generate the hostname of attaching HTTPRoute type: string httpRouteLabelKey: default: app.kubernetes.io/managed-by - description: Label key to add to the HTTPRoute generated by function - The value will be the `gateway.openfunction.openfunction.io` CR's - namespaced name type: string pathTemplate: default: '{{.Namespace}}/{{.Name}}' - description: Used to generate the path of attaching HTTPRoute type: string required: - domain - gatewaySpec type: object status: - description: GatewayStatus defines the observed state of Gateway properties: addresses: items: - description: GatewayAddress describes an address that can be bound - to a Gateway. properties: type: default: IPAddress - description: Type of the address. enum: - IPAddress - Hostname - NamedAddress type: string value: - description: "Value of the address. The validity of the values - will depend on the type and support by the controller. \n Examples: - `1.2.3.4`, `128::1`, `my-ip-address`." maxLength: 253 minLength: 1 type: string @@ -468,8 +254,6 @@ spec: reason: NotReconciled status: Unknown type: Scheduled - description: "Conditions describe the current conditions of the Gateway. - \n Known condition types are: \n * \"Scheduled\" * \"Ready\"" items: properties: message: @@ -492,18 +276,12 @@ spec: - type x-kubernetes-list-type: map listeners: - description: Listeners provide status for each unique listener port - defined in the Spec. items: properties: attachedRoutes: - description: AttachedRoutes represents the total number of Routes - that have been successfully attached to this Listener. format: int32 type: integer conditions: - description: Conditions describe the current condition of this - listener. items: properties: message: @@ -526,34 +304,19 @@ spec: - type x-kubernetes-list-type: map name: - description: Name is the name of the Listener that this status - corresponds to. maxLength: 253 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string supportedKinds: - description: "SupportedKinds is the list indicating the Kinds - supported by this listener. This MUST represent the kinds an - implementation supports for that Listener configuration. \n - If kinds are specified in Spec that are not supported, they - MUST NOT appear in this list and an implementation MUST set - the \"ResolvedRefs\" condition to \"False\" with the \"InvalidRouteKinds\" - reason. If both valid and invalid Route kinds are specified, - the implementation MUST reference the valid Route kinds that - have been specified." items: - description: RouteGroupKind indicates the group and kind of - a Route resource. properties: group: default: gateway.networking.k8s.io - description: Group is the group of the Route. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is the kind of the Route. maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ diff --git a/openfunction/crds/serving.yaml b/openfunction/crds/serving.yaml index 854a9c6..12be4b3 100644 --- a/openfunction/crds/serving.yaml +++ b/openfunction/crds/serving.yaml @@ -35,31 +35,21 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: Serving is the Schema for the servings API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ServingSpec defines the desired state of Serving properties: annotations: additionalProperties: type: string - description: Annotations that will be add to the workload. type: object bindings: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -67,14 +57,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. properties: key: type: string @@ -85,8 +71,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct for - the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -101,43 +85,29 @@ spec: - type - version type: object - description: Configurations of dapr bindings components. type: object image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic inputs: - description: Function inputs from Dapr components including binding, - pubsub Available for Async Runtime only. items: properties: component: - description: Component indicates the name of components in Dapr type: string name: - description: The name of DaprIO. type: string operation: - description: Operation field tells the Dapr component which operation - it should perform. type: string params: additionalProperties: type: string - description: Parameters for dapr input/output. type: object topic: - description: Topic name of mq, required when type is pubsub type: string required: - component @@ -147,30 +117,21 @@ spec: labels: additionalProperties: type: string - description: Parameters of OpenFuncAsync runtime. type: object outputs: - description: Function outputs from Dapr components including binding, - pubsub items: properties: component: - description: Component indicates the name of components in Dapr type: string name: - description: The name of DaprIO. type: string operation: - description: Operation field tells the Dapr component which operation - it should perform. type: string params: additionalProperties: type: string - description: Parameters for dapr input/output. type: object topic: - description: Topic name of mq, required when type is pubsub type: string required: - component @@ -180,17 +141,12 @@ spec: params: additionalProperties: type: string - description: Parameters to pass to the serving. All parameters will - be injected into the pod as environment variables. Function code can - use these parameters by getting environment variables type: object port: - description: The port on which the function will be invoked format: int32 type: integer pubsub: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -198,14 +154,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. properties: key: type: string @@ -216,8 +168,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct for - the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -232,17 +182,13 @@ spec: - type - version type: object - description: Configurations of dapr pubsub components. type: object runtime: - description: The configuration of the backend runtime for running function. enum: - knative - async type: string scaleOptions: - description: The ScaleOptions will help us to set up guidelines for - the autoscaling of function workloads. properties: keda: properties: @@ -258,11 +204,8 @@ spec: format: int32 type: integer restartPolicy: - description: Restart policy for all containers within the - pod. One of 'OnFailure', 'Never'. Default to 'Never'. type: string scalingStrategy: - description: ScalingStrategy defines the strategy of Scaling properties: customScalingQueueLengthDeduction: format: int32 @@ -285,54 +228,22 @@ spec: scaledObject: properties: advanced: - description: AdvancedConfig specifies advance scaling options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies - horizontal scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior configures - the scaling behavior of the target in both Up - and Down directions (scaleUp and scaleDown fields - respectively). properties: scaleDown: - description: scaleDown is scaling policy for - scaling Down. If not set, the default value - is to allow to scale down to minReplicas pods, - with a 300 second stabilization window (i.e., - the highest recommendation for the last 300sec - is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be - discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the - policy should hold true. PeriodSeconds - must be greater than zero and less - than or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by - the policy. It must be greater than - zero format: int32 type: integer required: @@ -343,61 +254,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which past - recommendations should be considered while - scaling up or scaling down. StabilizationWindowSeconds - must be greater than or equal to zero - and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy for - scaling Up. If not set, the default value - is the higher of: * increase no more than - 4 pods per 60 seconds * double the number - of pods per 60 seconds No stabilization is - used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be - discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the - policy should hold true. PeriodSeconds - must be greater than zero and less - than or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by - the policy. It must be greater than - zero format: int32 type: integer required: @@ -408,22 +280,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which past - recommendations should be considered while - scaling up or scaling down. StabilizationWindowSeconds - must be greater than or equal to zero - and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object @@ -447,16 +305,12 @@ spec: format: int32 type: integer workloadType: - description: How to run the function, known values are Deployment - or StatefulSet, default is Deployment. type: string type: object type: object knative: additionalProperties: type: string - description: Refer to https://knative.dev/docs/serving/autoscaling/ - to learn more about the autoscaling options of Knative Serving. type: object maxReplicas: format: int32 @@ -467,7 +321,6 @@ spec: type: object states: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -475,14 +328,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. properties: key: type: string @@ -493,8 +342,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct for - the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -509,78 +356,29 @@ spec: - type - version type: object - description: Configurations of dapr state components. type: object template: - description: Template describes the pods that will be created. The container - named `function` is the container which is used to run the image built - by the builder. If it is not set, the controller will automatically - add one. properties: activeDeadlineSeconds: - description: Optional duration in seconds the pod may be active - on the node relative to StartTime before the system will actively - try to mark it failed and kill associated containers. Value must - be a positive integer. format: int64 type: integer affinity: - description: If specified, the pod's scheduling constraints properties: nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - matches the corresponding matchExpressions; the node(s) - with the highest sum are the most preferred. items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a no-op). - A null preferred scheduling term matches no objects - (i.e. is also a no-op). properties: preference: - description: A node selector term, associated with - the corresponding weight. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -590,33 +388,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -628,8 +406,6 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -638,51 +414,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its - node. properties: nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. - The TopologySelectorTerm type implements a subset - of the NodeSelectorTerm. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -692,33 +435,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -736,62 +459,22 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -803,52 +486,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -860,42 +510,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. format: int32 type: integer required: @@ -904,53 +531,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to a pod label update), - the system may or may not try to eventually evict the - pod from its node. When there are multiple elements, the - lists of nodes corresponding to each podAffinityTerm are - intersected, i.e. all terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -962,49 +554,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -1016,33 +578,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. type: string required: - topologyKey @@ -1050,64 +593,22 @@ spec: type: array type: object podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling anti-affinity - expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the - sum if the node has pods which matches the corresponding - podAffinityTerm; the node(s) with the highest sum are - the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -1119,52 +620,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -1176,42 +644,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. format: int32 type: integer required: @@ -1220,53 +665,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the pod - will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met at - some point during pod execution (e.g. due to a pod label - update), the system may or may not try to eventually evict - the pod from its node. When there are multiple elements, - the lists of nodes corresponding to each podAffinityTerm - are intersected, i.e. all terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -1278,49 +688,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -1332,33 +712,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. type: string required: - topologyKey @@ -1367,154 +728,72 @@ spec: type: object type: object automountServiceAccountToken: - description: AutomountServiceAccountToken indicates whether a service - account token should be automatically mounted. type: boolean containers: - description: List of containers belonging to the pod. Containers - cannot currently be added or removed. There must be at least one - container in a Pod. Cannot be updated. items: - description: A single application container that you want to run - within a pod. properties: args: - description: 'Arguments to the entrypoint. The container image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the input - string will be unchanged. Double $$ are reduced to a single - $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of - whether the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The container image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded using - the container''s environment. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double - $$ are reduced to a single $, which allows for escaping - the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references will - never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -1526,111 +805,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should take - in response to container lifecycle events. Cannot be updated. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -1638,98 +859,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -1737,41 +909,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -1779,71 +935,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -1851,129 +973,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. Not - specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Modifying this array with strategic merge patch may corrupt - the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -1984,71 +1039,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if the - probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -2056,103 +1077,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -2168,8 +1137,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -2178,261 +1145,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields of - SecurityContext override the equivalent fields of PodSecurityContext. - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed - until this completes successfully. If this probe fails, - the Pod will be restarted, just as if the livenessProbe - failed. This can be used to provide different probe parameters - at the beginning of a Pod''s lifecycle, when it might take - a long time to load data or warm a cache, than during steady-state - operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -2440,141 +1247,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -2582,41 +1309,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -2624,217 +1329,100 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array dnsConfig: - description: Specifies the DNS parameters of a pod. Parameters specified - here will be merged to the generated DNS configuration based on - DNSPolicy. properties: nameservers: - description: A list of DNS name server IP addresses. This will - be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be merged - with the base options generated from DNSPolicy. Duplicated - entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. properties: name: - description: Required. type: string value: type: string type: object type: array searches: - description: A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from - DNSPolicy. Duplicated search paths will be removed. items: type: string type: array type: object dnsPolicy: - description: Set DNS policy for the pod. Defaults to "ClusterFirst". - Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' - or 'None'. DNS parameters given in DNSConfig will be merged with - the policy selected with DNSPolicy. To have DNS options set along - with hostNetwork, you have to specify DNS policy explicitly to - 'ClusterFirstWithHostNet'. type: string enableServiceLinks: - description: 'EnableServiceLinks indicates whether information about - services should be injected into pod''s environment variables, - matching the syntax of Docker links. Optional: Defaults to true.' type: boolean ephemeralContainers: - description: List of ephemeral containers run in this pod. Ephemeral - containers may be run in an existing pod to perform user-initiated - actions such as debugging. This list cannot be specified when - creating a pod, and it cannot be modified by updating the pod - spec. In order to add an ephemeral container to an existing pod, - use the pod's ephemeralcontainers subresource. items: - description: "An EphemeralContainer is a temporary container that - you may add to an existing Pod for user-initiated activities - such as debugging. Ephemeral containers have no resource or - scheduling guarantees, and they will not be restarted when they - exit or when a Pod is removed or restarted. The kubelet may - evict a Pod if an ephemeral container causes the Pod to exceed - its resource allocation. \n To add an ephemeral container, use - the ephemeralcontainers subresource of an existing Pod. Ephemeral - containers may not be removed or restarted." properties: args: - description: 'Arguments to the entrypoint. The image''s CMD - is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will - be unchanged. Double $$ are reduced to a single $, which - allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string literal - "$(VAR_NAME)". Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot - be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -2846,107 +1434,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Lifecycle is not allowed for ephemeral containers. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -2954,98 +1488,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3053,41 +1538,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -3095,69 +1564,37 @@ spec: type: object type: object livenessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3165,123 +1602,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the ephemeral container specified as - a DNS_LABEL. This name must be unique among all containers, - init containers and ephemeral containers. type: string ports: - description: Ports are not allowed for ephemeral containers. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -3292,69 +1668,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3362,104 +1706,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: Resources are not allowed for ephemeral containers. - Ephemeral containers use spare resources already allocated - to the pod. properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -3475,8 +1766,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -3485,254 +1774,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'Optional: SecurityContext defines the security - options the ephemeral container should be run with. If set, - the fields of SecurityContext override the equivalent fields - of PodSecurityContext.' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -3740,151 +1876,63 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean targetContainerName: - description: "If set, the name of the container from PodSpec - that this ephemeral container targets. The ephemeral container - will be run in the namespaces (IPC, PID, etc) of this container. - If not set then the ephemeral container uses the namespaces - configured in the Pod spec. \n The container runtime must - implement support for this feature. If the runtime does - not support namespace targeting then the result of setting - this field is undefined." type: string terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -3892,42 +1940,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Subpath mounts are not allowed for ephemeral containers. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -3935,233 +1960,105 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array hostAliases: - description: HostAliases is an optional list of hosts and IPs that - will be injected into the pod's hosts file if specified. This - is only valid for non-hostNetwork pods. items: - description: HostAlias holds the mapping between IP and hostnames - that will be injected as an entry in the pod's hosts file. properties: hostnames: - description: Hostnames for the above IP address. items: type: string type: array ip: - description: IP address of the host file entry. type: string type: object type: array hostIPC: - description: 'Use the host''s ipc namespace. Optional: Default to - false.' type: boolean hostNetwork: - description: Host networking requested for this pod. Use the host's - network namespace. If this option is set, the ports that will - be used must be specified. Default to false. type: boolean hostPID: - description: 'Use the host''s pid namespace. Optional: Default to - false.' type: boolean hostUsers: - description: 'Use the host''s user namespace. Optional: Default - to true. If set to true or not present, the pod will be run in - the host user namespace, useful for when the pod needs a feature - only available to the host user namespace, such as loading a kernel - module with CAP_SYS_MODULE. When set to false, a new userns is - created for the pod. Setting false is useful for mitigating container - breakout vulnerabilities even allowing users to run their containers - as root without actually having root privileges on the host. This - field is alpha-level and is only honored by servers that enable - the UserNamespacesSupport feature.' type: boolean hostname: - description: Specifies the hostname of the Pod If not specified, - the pod's hostname will be set to a system-defined value. type: string imagePullSecrets: - description: 'ImagePullSecrets is an optional list of references - to secrets in the same namespace to use for pulling any of the - images used by this PodSpec. If specified, these secrets will - be passed to individual puller implementations for them to use. - More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: - description: 'List of initialization containers belonging to the - pod. Init containers are executed in order prior to containers - being started. If any init container fails, the pod is considered - to have failed and is handled according to its restartPolicy. - The name for an init container or normal container must be unique - among all containers. Init containers may not have Lifecycle actions, - Readiness probes, Liveness probes, or Startup probes. The resourceRequirements - of an init container are taken into account during scheduling - by finding the highest request/limit for each resource type, and - then using the max of of that value or the sum of the normal containers. - Limits are applied to init containers in a similar fashion. Init - containers cannot currently be added or removed. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: - description: A single application container that you want to run - within a pod. properties: args: - description: 'Arguments to the entrypoint. The container image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the input - string will be unchanged. Double $$ are reduced to a single - $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of - whether the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The container image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded using - the container''s environment. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double - $$ are reduced to a single $, which allows for escaping - the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references will - never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -4173,111 +2070,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should take - in response to container lifecycle events. Cannot be updated. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4285,98 +2124,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4384,41 +2174,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -4426,71 +2200,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4498,129 +2238,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. Not - specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Modifying this array with strategic merge patch may corrupt - the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -4631,71 +2304,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if the - probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -4703,103 +2342,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -4815,8 +2402,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -4825,261 +2410,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields of - SecurityContext override the equivalent fields of PodSecurityContext. - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed - until this completes successfully. If this probe fails, - the Pod will be restarted, just as if the livenessProbe - failed. This can be used to provide different probe parameters - at the beginning of a Pod''s lifecycle, when it might take - a long time to load data or warm a cache, than during steady-state - operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -5087,141 +2512,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -5229,41 +2574,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -5271,50 +2594,21 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array nodeName: - description: NodeName is a request to schedule this pod onto a specific - node. If it is non-empty, the scheduler simply schedules this - pod onto that node, assuming that it fits resource requirements. type: string nodeSelector: additionalProperties: type: string - description: 'NodeSelector is a selector which must be true for - the pod to fit on a node. Selector which must match a node''s - labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object x-kubernetes-map-type: atomic os: - description: "Specifies the OS of the containers in the pod. Some - pod and container fields are restricted if this is set. \n If - the OS field is set to linux, the following fields must be unset: - -securityContext.windowsOptions \n If the OS field is set to windows, - following fields must be unset: - spec.hostPID - spec.hostIPC - - spec.hostUsers - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - - spec.securityContext.sysctls - spec.shareProcessNamespace - - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - - spec.containers[*].securityContext.readOnlyRootFilesystem - - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - - spec.containers[*].securityContext.runAsGroup" properties: name: - description: 'Name is the name of the operating system. The - currently supported values are linux and windows. Additional - value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration - Clients should expect to handle additional values and treat - unrecognized values in this field as os: null' type: string required: - name @@ -5326,96 +2620,33 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Overhead represents the resource overhead associated - with running a pod for a given RuntimeClass. This field will be - autopopulated at admission time by the RuntimeClass admission - controller. If the RuntimeClass admission controller is enabled, - overhead must not be set in Pod create requests. The RuntimeClass - admission controller will reject Pod create requests which have - the overhead already set. If RuntimeClass is configured and selected - in the PodSpec, Overhead will be set to the value defined in the - corresponding RuntimeClass, otherwise it will remain unset and - treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md' type: object preemptionPolicy: - description: PreemptionPolicy is the Policy for preempting pods - with lower priority. One of Never, PreemptLowerPriority. Defaults - to PreemptLowerPriority if unset. type: string priority: - description: The priority value. Various system components use this - field to find the priority of the pod. When Priority Admission - Controller is enabled, it prevents users from setting this field. - The admission controller populates this field from PriorityClassName. - The higher the value, the higher the priority. format: int32 type: integer priorityClassName: - description: If specified, indicates the pod's priority. "system-node-critical" - and "system-cluster-critical" are two special keywords which indicate - the highest priorities with the former being the highest priority. - Any other name must be defined by creating a PriorityClass object - with that name. If not specified, the pod priority will be default - or zero if there is no default. type: string readinessGates: - description: 'If specified, all readiness gates will be evaluated - for pod readiness. A pod is ready when all its containers are - ready AND all conditions specified in the readiness gates have - status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates' items: - description: PodReadinessGate contains the reference to a pod - condition properties: conditionType: - description: ConditionType refers to a condition in the pod's - condition list with matching type. type: string required: - conditionType type: object type: array resourceClaims: - description: "ResourceClaims defines which ResourceClaims must be - allocated and reserved before the Pod is allowed to start. The - resources will be made available to those containers which consume - them by name. \n This is an alpha field and requires enabling - the DynamicResourceAllocation feature gate. \n This field is immutable." items: - description: PodResourceClaim references exactly one ResourceClaim - through a ClaimSource. It adds a name to it that uniquely identifies - the ResourceClaim inside the Pod. Containers that need access - to the ResourceClaim reference it with this name. properties: name: - description: Name uniquely identifies this resource claim - inside the pod. This must be a DNS_LABEL. type: string source: - description: Source describes where to find the ResourceClaim. properties: resourceClaimName: - description: ResourceClaimName is the name of a ResourceClaim - object in the same namespace as this pod. type: string resourceClaimTemplateName: - description: "ResourceClaimTemplateName is the name of - a ResourceClaimTemplate object in the same namespace - as this pod. \n The template will be used to create - a new ResourceClaim, which will be bound to this pod. - When this pod is deleted, the ResourceClaim will also - be deleted. The name of the ResourceClaim will be -, where is the - PodResourceClaim.Name. Pod validation will reject the - pod if the concatenated name is not valid for a ResourceClaim - (e.g. too long). \n An existing ResourceClaim with that - name that is not owned by the pod will not be used for - the pod to avoid using an unrelated resource by mistake. - Scheduling and pod startup are then blocked until the - unrelated ResourceClaim is removed. \n This field is - immutable and no changes will be made to the corresponding - ResourceClaim by the control plane after creating the - ResourceClaim." type: string type: object required: @@ -5426,35 +2657,15 @@ spec: - name x-kubernetes-list-type: map restartPolicy: - description: 'Restart policy for all containers within the pod. - One of Always, OnFailure, Never. Default to Always. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' type: string runtimeClassName: - description: 'RuntimeClassName refers to a RuntimeClass object in - the node.k8s.io group, which should be used to run this pod. If - no RuntimeClass resource matches the named class, the pod will - not be run. If unset or empty, the "legacy" RuntimeClass will - be used, which is an implicit class with an empty definition that - uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class' type: string schedulerName: - description: If specified, the pod will be dispatched by specified - scheduler. If not specified, the pod will be dispatched by default - scheduler. type: string schedulingGates: - description: "SchedulingGates is an opaque list of values that if - specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness. - \n This is an alpha-level feature enabled by PodSchedulingReadiness - feature gate." items: - description: PodSchedulingGate is associated to a Pod to guard - its scheduling. properties: name: - description: Name of the scheduling gate. Each scheduling - gate must have a unique name field. type: string required: - name @@ -5464,133 +2675,51 @@ spec: - name x-kubernetes-list-type: map securityContext: - description: 'SecurityContext holds pod-level security attributes - and common container settings. Optional: Defaults to empty. See - type description for default values of each field.' properties: fsGroup: - description: "A special supplemental group that applies to all - containers in a pod. Some volume types allow the Kubelet to - change the ownership of that volume to be owned by the pod: - \n 1. The owning GID will be the FSGroup 2. The setgid bit - is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- \n If unset, - the Kubelet will not modify the ownership and permissions - of any volume. Note that this field cannot be set when spec.os.name - is windows." format: int64 type: integer fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types which - support fsGroup based ownership(and permissions). It will - have no effect on ephemeral volume types such as: secret, - configmaps and emptydir. Valid values are "OnRootMismatch" - and "Always". If not specified, "Always" is used. Note that - this field cannot be set when spec.os.name is windows.' type: string runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set in - SecurityContext. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence for - that container. Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to - start the container if it does. If unset or false, no such - validation will be performed. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies to - the container. type: string role: - description: Role is a SELinux role label that applies to - the container. type: string type: - description: Type is a SELinux type label that applies to - the container. type: string user: - description: User is a SELinux user label that applies to - the container. type: string type: object seccompProfile: - description: The seccomp options to use by the containers in - this pod. Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile must - be preconfigured on the node to work. Must be a descending - path, relative to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - a profile - defined in a file on the node should be used. RuntimeDefault - - the container runtime default profile should be used. - Unconfined - no profile should be applied." type: string required: - type type: object supplementalGroups: - description: A list of groups applied to the first process run - in each container, in addition to the container's primary - GID, the fsGroup (if specified), and group memberships defined - in the container image for the uid of the container process. - If unspecified, no additional groups are added to any container. - Note that group memberships defined in the container image - for the uid of the container process are still effective, - even if they are not included in this list. Note that this - field cannot be set when spec.os.name is windows. items: format: int64 type: integer type: array sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. Note that this field cannot - be set when spec.os.name is windows. items: - description: Sysctl defines a kernel parameter to be set properties: name: - description: Name of a property to set type: string value: - description: Value of a property to set type: string required: - name @@ -5598,165 +2727,59 @@ spec: type: object type: array windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. type: string hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is alpha-level - and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this - field without the feature flag will result in errors when - validating the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is not allowed - to have a mix of HostProcess containers and non-HostProcess - containers). In addition, if HostProcess is true then - HostNetwork must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: string type: object type: object serviceAccount: - description: 'DeprecatedServiceAccount is a depreciated alias for - ServiceAccountName. Deprecated: Use serviceAccountName instead.' type: string serviceAccountName: - description: 'ServiceAccountName is the name of the ServiceAccount - to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string setHostnameAsFQDN: - description: If true the pod's hostname will be configured as the - pod's FQDN, rather than the leaf name (the default). In Linux - containers, this means setting the FQDN in the hostname field - of the kernel (the nodename field of struct utsname). In Windows - containers, this means setting the registry value of hostname - for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters - to FQDN. If a pod does not have FQDN, this has no effect. Default - to false. type: boolean shareProcessNamespace: - description: 'Share a single process namespace between all of the - containers in a pod. When this is set containers will be able - to view and signal processes from other containers in the same - pod, and the first process in each container will not be assigned - PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: - Default to false.' type: boolean subdomain: - description: If specified, the fully qualified Pod hostname will - be "...svc.". - If not specified, the pod will not have a domainname at all. type: string terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully. May be decreased in delete request. Value must be - non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). If this value - is nil, the default grace period will be used instead. The grace - period is the duration in seconds after the processes running - in the pod are sent a termination signal and the time when the - processes are forcibly halted with a kill signal. Set this value - longer than the expected cleanup time for your process. Defaults - to 30 seconds. format: int64 type: integer tolerations: - description: If specified, the pod's tolerations. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using the - matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. type: string operator: - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to - Equal. Exists is equivalent to wildcard for value, so that - a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoExecute, otherwise - this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do - not evict). Zero and negative values will be treated as - 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. type: string type: object type: array topologySpreadConstraints: - description: TopologySpreadConstraints describes how a group of - pods ought to spread across topology domains. Scheduler will schedule - pods in a way which abides by the constraints. All topologySpreadConstraints - are ANDed. items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. properties: labelSelector: - description: LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine - the number of pods in their corresponding topology domain. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. properties: key: - description: key is the label key that the selector - applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. items: type: string type: array @@ -5768,123 +2791,27 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic matchLabelKeys: - description: MatchLabelKeys is a set of pod label keys to - select the pods over which spreading will be calculated. - The keys are used to lookup values from the incoming pod - labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading - will be calculated for the incoming pod. Keys that don't - exist in the incoming pod labels will be ignored. A null - or empty list means only match against labelSelector. items: type: string type: array x-kubernetes-list-type: atomic maxSkew: - description: 'MaxSkew describes the degree to which pods may - be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, - it is the maximum permitted difference between the number - of matching pods in the target topology and the global minimum. - The global minimum is the minimum number of matching pods - in an eligible domain or zero if the number of eligible - domains is less than MinDomains. For example, in a 3-zone - cluster, MaxSkew is set to 1, and pods with the same labelSelector - spread as 2/2/1: In this case, the global minimum is 1. - | zone1 | zone2 | zone3 | | P P | P P | P | - if - MaxSkew is 1, incoming pod can only be scheduled to zone3 - to become 2/2/2; scheduling it onto zone1(zone2) would make - the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - - if MaxSkew is 2, incoming pod can be scheduled onto any - zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used - to give higher precedence to topologies that satisfy it. - It''s a required field. Default value is 1 and 0 is not - allowed.' format: int32 type: integer minDomains: - description: "MinDomains indicates a minimum number of eligible - domains. When the number of eligible domains with matching - topology keys is less than minDomains, Pod Topology Spread - treats \"global minimum\" as 0, and then the calculation - of Skew is performed. And when the number of eligible domains - with matching topology keys equals or greater than minDomains, - this value has no effect on scheduling. As a result, when - the number of eligible domains is less than minDomains, - scheduler won't schedule more than maxSkew Pods to those - domains. If value is nil, the constraint behaves as if MinDomains - is equal to 1. Valid values are integers greater than 0. - When value is not nil, WhenUnsatisfiable must be DoNotSchedule. - \n For example, in a 3-zone cluster, MaxSkew is set to 2, - MinDomains is set to 5 and pods with the same labelSelector - spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P - P | P P | The number of domains is less than 5(MinDomains), - so \"global minimum\" is treated as 0. In this situation, - new pod with the same labelSelector cannot be scheduled, - because computed skew will be 3(3 - 0) if new Pod is scheduled - to any of the three zones, it will violate MaxSkew. \n This - is a beta field and requires the MinDomainsInPodTopologySpread - feature gate to be enabled (enabled by default)." format: int32 type: integer nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will treat - Pod's nodeAffinity/nodeSelector when calculating pod topology - spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector - are included in the calculations. - Ignore: nodeAffinity/nodeSelector - are ignored. All nodes are included in the calculations. - \n If this value is nil, the behavior is equivalent to the - Honor policy. This is a beta-level feature default enabled - by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat - node taints when calculating pod topology spread skew. Options - are: - Honor: nodes without taints, along with tainted nodes - for which the incoming pod has a toleration, are included. - - Ignore: node taints are ignored. All nodes are included. - \n If this value is nil, the behavior is equivalent to the - Ignore policy. This is a beta-level feature default enabled - by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string topologyKey: - description: TopologyKey is the key of node labels. Nodes - that have a label with this key and identical values are - considered to be in the same topology. We consider each - as a "bucket", and try to put balanced number - of pods into each bucket. We define a domain as a particular - instance of a topology. Also, we define an eligible domain - as a domain whose nodes meet the requirements of nodeAffinityPolicy - and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", - each Node is a domain of that topology. And, if TopologyKey - is "topology.kubernetes.io/zone", each zone is a domain - of that topology. It's a required field. type: string whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal with - a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule - (default) tells the scheduler not to schedule it. - ScheduleAnyway - tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help - reduce the skew. A constraint is considered "Unsatisfiable" - for an incoming pod if and only if every possible node assignment - for that pod would violate "MaxSkew" on some topology. For - example, in a 3-zone cluster, MaxSkew is set to 1, and pods - with the same labelSelector spread as 3/1/1: | zone1 | zone2 - | zone3 | | P P P | P | P | If WhenUnsatisfiable - is set to DoNotSchedule, incoming pod can only be scheduled - to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) - on zone2(zone3) satisfies MaxSkew(1). In other words, the - cluster can still be imbalanced, but scheduler won''t make - it *more* imbalanced. It''s a required field.' type: string required: - maxSkew @@ -5897,229 +2824,106 @@ spec: - whenUnsatisfiable x-kubernetes-list-type: map volumes: - description: 'List of volumes that can be mounted by containers - belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. properties: awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine and - then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default is to - mount by volume name. Examples: For volume /dev/sda1, - you specify the partition as "1". Similarly, the volume - partition for /dev/sda is "0" (or you can leave the - property empty).' format: int32 type: integer readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: - description: 'volumeID is unique ID of the persistent - disk resource in AWS (Amazon EBS volume). More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. properties: cachingMode: - description: 'cachingMode is the Host Caching mode: None, - Read Only, Read Write.' type: string diskName: - description: diskName is the Name of the data disk in - the blob storage type: string diskURI: - description: diskURI is the URI of data disk in the blob - storage type: string fsType: - description: fsType is Filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single blob - disk per storage account Managed: azure managed data - disk (only in managed availability set). defaults to - shared' type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: - description: azureFile represents an Azure File Service mount - on the host and bind mount to the pod. properties: readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: secretName is the name of secret that contains - Azure Storage Account Name and Key type: string shareName: - description: shareName is the azure share Name type: string required: - secretName - shareName type: object cephfs: - description: cephFS represents a Ceph FS mount on the host - that shares a pod's lifetime properties: monitors: - description: 'monitors is Required: Monitors is a collection - of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: - description: 'path is Optional: Used as the mounted root, - rather than the full Ceph tree, default is /' type: string readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: - description: 'secretFile is Optional: SecretFile is the - path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: - description: 'secretRef is Optional: SecretRef is reference - to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is optional: User is the rados user - name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: - description: 'cinder represents a cinder volume attached and - mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: - description: 'readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to OpenStack.' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeID: - description: 'volumeID used to identify the volume in - cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: - description: configMap represents a configMap that should - populate this volume properties: defaultMode: - description: 'defaultMode is optional: mode bits used - to set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for mode - bits. Defaults to 0644. Directories within the path - are not affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: items if unspecified, each key-value pair - in the Data field of the referenced ConfigMap will be - projected into the volume as a file whose name is the - key and content is the value. If specified, the listed - keys will be projected into the specified paths, and - unlisted keys will not be present. If a key is specified - which is not present in the ConfigMap, the volume setup - will error unless it is marked optional. Paths must - be relative and may not contain the '..' path or start - with '..'. items: - description: Maps a string key to a path within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for - mode bits. If not specified, the volume defaultMode - will be used. This might be in conflict with other - options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not - start with the string '..'. type: string required: - key @@ -6127,140 +2931,66 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: optional specify whether the ConfigMap or - its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external CSI - drivers (Beta feature). properties: driver: - description: driver is the name of the CSI driver that - handles this volume. Consult with your admin for the - correct name as registered in the cluster. type: string fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated - CSI driver which will determine the default filesystem - to apply. type: string nodePublishSecretRef: - description: nodePublishSecretRef is a reference to the - secret object containing sensitive information to pass - to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the secret - object contains more than one secret, all secret references - are passed. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string - description: volumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. type: object required: - driver type: object downwardAPI: - description: downwardAPI represents downward API about the - pod that should populate this volume properties: defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a Optional: mode bits used to set - permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and decimal - values, JSON requires decimal values for mode bits. - Defaults to 0644. Directories within the path are not - affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: Items is a list of downward API volume file items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field properties: fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used to set permissions - on this file, must be an octal value between 0000 - and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON - requires decimal values for mode bits. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource @@ -6272,120 +3002,35 @@ spec: type: array type: object emptyDir: - description: 'emptyDir represents a temporary directory that - shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: - description: 'medium represents what type of storage medium - should back this directory. The default is "" which - means to use the node''s default medium. Must be an - empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string - description: 'sizeLimit is the total amount of local storage - required for this EmptyDir volume. The size limit is - also applicable for memory medium. The maximum usage - on memory medium EmptyDir would be the minimum value - between the SizeLimit specified here and the sum of - memory limits of all containers in a pod. The default - is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle is tied - to the pod that defines it - it will be created before the - pod starts, and deleted when the pod is removed. \n Use - this if: a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot - or capacity tracking are needed, c) the storage driver is - specified through a storage class, and d) the storage driver - supports dynamic volume provisioning through a PersistentVolumeClaim - (see EphemeralVolumeSource for more information on the connection - between this volume type and PersistentVolumeClaim). \n - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. \n Use CSI for light-weight local - ephemeral volumes if the CSI driver is meant to be used - that way - see the documentation of the driver for more - information. \n A pod can use both types of ephemeral volumes - and persistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC - to provision the volume. The pod in which this EphemeralVolumeSource - is embedded will be the owner of the PVC, i.e. the PVC - will be deleted together with the pod. The name of - the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). - \n An existing PVC with that name that is not owned - by the pod will *not* be used for the pod to avoid using - an unrelated volume by mistake. Starting the pod is - then blocked until the unrelated PVC is removed. If - such a pre-created PVC is meant to be used by the pod, - the PVC has to updated with an owner reference to the - pod once the pod exists. Normally this should not be - necessary, but it may be useful when manually reconstructing - a broken cluster. \n This field is read-only and no - changes will be made by Kubernetes to the PVC after - it has been created. \n Required, must not be nil." properties: metadata: - description: May contain labels and annotations that - will be copied into the PVC when creating it. No - other fields are allowed and will be rejected during - validation. type: object spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into the - PVC that gets created from this template. The same - fields as in a PersistentVolumeClaim are also valid - here. properties: accessModes: - description: 'accessModes contains the desired - access modes the volume should have. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: - description: 'dataSource field can be used to - specify either: * An existing VolumeSnapshot - object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If - the provisioner or an external controller can - support the specified data source, it will create - a new volume based on the contents of the specified - data source. When the AnyVolumeDataSource feature - gate is enabled, dataSource contents will be - copied to dataSourceRef, and dataSourceRef contents - will be copied to dataSource when dataSourceRef.namespace - is not specified. If the namespace is specified, - then dataSourceRef will not be copied to dataSource.' properties: apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string required: - kind @@ -6393,94 +3038,25 @@ spec: type: object x-kubernetes-map-type: atomic dataSourceRef: - description: 'dataSourceRef specifies the object - from which to populate the volume with data, - if a non-empty volume is desired. This may be - any object from a non-empty API group (non core - object) or a PersistentVolumeClaim object. When - this field is specified, volume binding will - only succeed if the type of the specified object - matches some installed volume populator or dynamic - provisioner. This field will replace the functionality - of the dataSource field and as such if both - fields are non-empty, they must have the same - value. For backwards compatibility, when namespace - isn''t specified in dataSourceRef, both fields - (dataSource and dataSourceRef) will be set to - the same value automatically if one of them - is empty and the other is non-empty. When namespace - is specified in dataSourceRef, dataSource isn''t - set to the same value and must be empty. There - are three important differences between dataSource - and dataSourceRef: * While dataSource only allows - two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim - objects. * While dataSource ignores disallowed - values (dropping them), dataSourceRef preserves - all values, and generates an error if a disallowed - value is specified. * While dataSource only - allows local objects, dataSourceRef allows objects - in any namespaces. (Beta) Using this field requires - the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef - requires the CrossNamespaceVolumeDataSource - feature gate to be enabled.' properties: apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string namespace: - description: Namespace is the namespace of - resource being referenced Note that when - a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant documentation - for details. (Alpha) This field requires - the CrossNamespaceVolumeDataSource feature - gate to be enabled. type: string required: - kind - name type: object resources: - description: 'resources represents the minimum - resources the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify - resource requirements that are lower than previous - value but must still be higher than capacity - recorded in the status field of the claim. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are - used by this container. \n This is an alpha - field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." items: - description: ResourceClaim references one - entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name - of one entry in pod.spec.resourceClaims - of the Pod where this field is used. - It makes that resource available inside - a container. type: string required: - name @@ -6496,9 +3072,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum - amount of compute resources allowed. More - info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -6507,46 +3080,18 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. If - Requests is omitted for a container, it - defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: - description: selector is a label query over volumes - to consider for binding. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -6558,28 +3103,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: - description: 'storageClassName is the name of - the StorageClass required by the claim. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: - description: volumeMode defines what type of volume - is required by the claim. Value of Filesystem - is implied when not included in claim spec. type: string volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. type: string type: object required: @@ -6587,77 +3118,38 @@ spec: type: object type: object fc: - description: fc represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to - the pod. properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. TODO: how do we prevent - errors in the filesystem from compromising the machine' type: string lun: - description: 'lun is Optional: FC target lun number' format: int32 type: integer readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' items: type: string type: array wwids: - description: 'wwids Optional: FC volume world wide identifiers - (wwids) Either wwids or combination of targetWWNs and - lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. properties: driver: - description: driver is the name of the driver to use for - this volume. type: string fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". The default filesystem - depends on FlexVolume script. type: string options: additionalProperties: type: string - description: 'options is Optional: this field holds extra - command options if any.' type: object readOnly: - description: 'readOnly is Optional: defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean secretRef: - description: 'secretRef is Optional: secretRef is reference - to the secret object containing sensitive information - to pass to the plugin scripts. This may be empty if - no secret object is specified. If the secret object - contains more than one secret, all secrets are passed - to the plugin scripts.' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic @@ -6665,186 +3157,88 @@ spec: - driver type: object flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running properties: datasetName: - description: datasetName is Name of the dataset stored - as metadata -> name on the dataset for Flocker should - be considered as deprecated type: string datasetUUID: - description: datasetUUID is the UUID of the dataset. This - is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: - description: 'fsType is filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default is to - mount by volume name. Examples: For volume /dev/sda1, - you specify the partition as "1". Similarly, the volume - partition for /dev/sda is "0" (or you can leave the - property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: - description: 'pdName is unique name of the PD resource - in GCE. Used to identify the disk in GCE. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: - description: 'gitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision - a container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir - into the Pod''s container.' properties: directory: - description: directory is the target directory name. Must - not contain or start with '..'. If '.' is supplied, - the volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. type: string repository: - description: repository is the URL type: string revision: - description: revision is the commit hash for the specified - revision. type: string required: - repository type: object glusterfs: - description: 'glusterfs represents a Glusterfs mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: - description: 'endpoints is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: - description: 'path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: - description: 'readOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to - false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: - description: 'hostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' properties: path: - description: 'path of the directory on the host. If the - path is a symlink, it will follow the link to the real - path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: - description: 'type for HostPath Volume Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: - description: 'iscsi represents an ISCSI Disk resource that - is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: chapAuthSession defines whether support iSCSI - Session CHAP authentication type: boolean fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. type: string iqn: - description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: - description: iscsiInterface is the interface Name that - uses an iSCSI transport. Defaults to 'default' (tcp). type: string lun: - description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: - description: portals is the iSCSI Target Portal List. - The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: - description: readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. type: boolean secretRef: - description: secretRef is the CHAP Secret for iSCSI target - and initiator authentication properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic targetPortal: - description: targetPortal is iSCSI Target Portal. The - Portal is either an IP or ip_addr:port if the port is - other than default (typically TCP ports 860 and 3260). type: string required: - iqn @@ -6852,150 +3246,67 @@ spec: - targetPortal type: object name: - description: 'name of the volume. Must be a DNS_LABEL and - unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string nfs: - description: 'nfs represents an NFS mount on the host that - shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: - description: 'path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: - description: 'readOnly here will force the NFS export - to be mounted with read-only permissions. Defaults to - false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: - description: 'server is the hostname or IP address of - the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: - description: readOnly Will force the ReadOnly setting - in VolumeMounts. Default false. type: boolean required: - claimName type: object photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string pdID: - description: pdID is the ID that identifies Photon Controller - persistent disk type: string required: - pdID type: object portworxVolume: - description: portworxVolume represents a portworx volume attached - and mounted on kubelets host machine properties: fsType: - description: fSType represents the filesystem type to - mount Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs". Implicitly inferred - to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: projected items for all in one resources secrets, - configmaps, and downward API properties: defaultMode: - description: defaultMode are the mode bits used to set - permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and decimal - values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this - setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set. format: int32 type: integer sources: - description: sources is the list of volume projections items: - description: Projection that may be projected along - with other supported volume types properties: configMap: - description: configMap information about the configMap - data to project properties: items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, the - volume setup will error unless it is marked - optional. Paths must be relative and may not - contain the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 - and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal - values for mode bits. If not specified, - the volume defaultMode will be used. - This might be in conflict with other - options that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative path - of the file to map the key to. May not - be an absolute path. May not contain - the path element '..'. May not start - with the string '..'. type: string required: - key @@ -7003,93 +3314,42 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional specify whether the ConfigMap - or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: downwardAPI information about the downwardAPI - data to project properties: items: - description: Items is a list of DownwardAPIVolume - file items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field properties: fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' properties: apiVersion: - description: Version of the schema - the FieldPath is written in terms - of, defaults to "v1". type: string fieldPath: - description: Path of the field to - select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used - to set permissions on this file, must - be an octal value between 0000 and 0777 - or a decimal value between 0 and 511. - YAML accepts both octal and decimal - values, JSON requires decimal values - for mode bits. If not specified, the - volume defaultMode will be used. This - might be in conflict with other options - that affect the file mode, like fsGroup, - and the result can be other mode bits - set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the - container: only resources limits and - requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are - currently supported.' properties: containerName: - description: 'Container name: required - for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to - select' type: string required: - resource @@ -7101,49 +3361,16 @@ spec: type: array type: object secret: - description: secret information about the secret - data to project properties: items: - description: items if unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the volume - setup will error unless it is marked optional. - Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 - and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal - values for mode bits. If not specified, - the volume defaultMode will be used. - This might be in conflict with other - options that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative path - of the file to map the key to. May not - be an absolute path. May not contain - the path element '..'. May not start - with the string '..'. type: string required: - key @@ -7151,45 +3378,19 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional field specify whether - the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project properties: audience: - description: audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience defaults - to the identifier of the apiserver. type: string expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The kubelet - will start trying to rotate the token if the - token is older than 80 percent of its time - to live or if the token is older than 24 hours.Defaults - to 1 hour and must be at least 10 minutes. format: int64 type: integer path: - description: path is the path relative to the - mount point of the file to project the token - into. type: string required: - path @@ -7198,150 +3399,76 @@ spec: type: array type: object quobyte: - description: quobyte represents a Quobyte mount on the host - that shares a pod's lifetime properties: group: - description: group to map volume access to Default is - no group type: string readOnly: - description: readOnly here will force the Quobyte volume - to be mounted with read-only permissions. Defaults to - false. type: boolean registry: - description: registry represents a single or multiple - Quobyte Registry services specified as a string as host:port - pair (multiple entries are separated with commas) which - acts as the central registry for volumes type: string tenant: - description: tenant owning the given Quobyte volume in - the Backend Used with dynamically provisioned Quobyte - volumes, value is set by the plugin type: string user: - description: user to map volume access to Defaults to - serivceaccount user type: string volume: - description: volume is a string that references an already - created Quobyte volume by name. type: string required: - registry - volume type: object rbd: - description: 'rbd represents a Rados Block Device mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string image: - description: 'image is the rados image name. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: - description: 'keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: - description: 'pool is the rados pool name. Default is - rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: - description: 'secretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. Default - is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is the rados user name. Default is - admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". type: string gateway: - description: gateway is the host address of the ScaleIO - API Gateway. type: string protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: - description: secretRef references to the secret for ScaleIO - user and other sensitive information. If this is not - provided, Login operation will fail. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false type: boolean storageMode: - description: storageMode indicates whether the storage - for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. type: string storagePool: - description: storagePool is the ScaleIO Storage Pool associated - with the protection domain. type: string system: - description: system is the name of the storage system - as configured in ScaleIO. type: string volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated with - this volume source. type: string required: - gateway @@ -7349,54 +3476,19 @@ spec: - system type: object secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: - description: 'defaultMode is Optional: mode bits used - to set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for mode - bits. Defaults to 0644. Directories within the path - are not affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: items If unspecified, each key-value pair - in the Data field of the referenced Secret will be projected - into the volume as a file whose name is the key and - content is the value. If specified, the listed keys - will be projected into the specified paths, and unlisted - keys will not be present. If a key is specified which - is not present in the Secret, the volume setup will - error unless it is marked optional. Paths must be relative - and may not contain the '..' path or start with '..'. items: - description: Maps a string key to a path within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for - mode bits. If not specified, the volume defaultMode - will be used. This might be in conflict with other - options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not - start with the string '..'. type: string required: - key @@ -7404,77 +3496,36 @@ spec: type: object type: array optional: - description: optional field specify whether the Secret - or its keys must be defined type: boolean secretName: - description: 'secretName is the name of the secret in - the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: - description: secretRef specifies the secret to use for - obtaining the StorageOS API credentials. If not specified, - default values will be attempted. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeName: - description: volumeName is the human-readable name of - the StorageOS volume. Volume names are only unique - within a namespace. type: string volumeNamespace: - description: volumeNamespace specifies the scope of the - volume within StorageOS. If no namespace is specified - then the Pod's namespace will be used. This allows - the Kubernetes name scoping to be mirrored within StorageOS - for tighter integration. Set VolumeName to any name - to override the default behaviour. Set to "default" - if you are not using namespaces within StorageOS. Namespaces - that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: - description: vsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine properties: fsType: - description: fsType is filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string storagePolicyID: - description: storagePolicyID is the storage Policy Based - Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: storagePolicyName is the storage Policy Based - Management (SPBM) profile name. type: string volumePath: - description: volumePath is the path that identifies vSphere - volume vmdk type: string required: - volumePath @@ -7487,23 +3538,13 @@ spec: - containers type: object timeout: - description: Timeout defines the maximum amount of time the Serving - should take to execute before the Serving is running. type: string triggers: - description: Triggers are used to specify the trigger sources of the - function. The Keda (ScaledObject, ScaledJob) configuration in ScaleOptions - cannot take effect without Triggers being set. items: properties: authenticationRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used to authenticate - the scaler with the environment properties: kind: - description: Kind of the resource being referred to. Defaults - to TriggerAuthentication. type: string name: type: string @@ -7515,13 +3556,10 @@ spec: type: string type: object metricType: - description: MetricTargetType specifies the type of metric being - targeted, and should be either "Value", "AverageValue", or "Utilization" type: string name: type: string targetKind: - description: ScaleTargetKind represents the kind of trigger target. enum: - object - job @@ -7536,26 +3574,22 @@ spec: type: object type: array version: - description: Function version in format like v1.0.0 type: string required: - image - runtime type: object status: - description: ServingStatus defines the observed state of Serving properties: phase: type: string resourceRef: additionalProperties: type: string - description: Associate resources. type: object state: type: string url: - description: Service holds the service name used to access the serving. type: string type: object type: object @@ -7576,31 +3610,21 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: Serving is the Schema for the servings API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: ServingSpec defines the desired state of Serving properties: annotations: additionalProperties: type: string - description: Annotations that will be added to the workload. type: object bindings: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -7608,14 +3632,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. properties: key: type: string @@ -7626,8 +3646,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct for - the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -7642,11 +3660,8 @@ spec: - type - version type: object - description: Configurations of dapr bindings components. type: object hooks: - description: Hooks define the hooks that will execute before or after - function execution. properties: policy: type: string @@ -7660,27 +3675,18 @@ spec: type: array type: object image: - description: Function image name type: string imageCredentials: - description: ImageCredentials references a Secret that contains credentials - to access the image repository. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic labels: additionalProperties: type: string - description: Parameters of asyncFunc runtime, must not be nil when runtime - is OpenFuncAsync. type: object outputs: - description: Function outputs from Dapr components including binding, - pubsub items: properties: dapr: @@ -7688,25 +3694,16 @@ spec: metadata: additionalProperties: type: string - description: Metadata is the metadata for dapr Com. type: object name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string operation: - description: Operation field tells the Dapr component which - operation it should perform. type: string outputName: - description: 'Deprecated: Only for compatibility with v1beta1' type: string topic: type: string type: - description: Type is the type of the component, if it is not - set, controller will get it automatically. type: string required: - name @@ -7716,13 +3713,9 @@ spec: params: additionalProperties: type: string - description: Parameters to pass to the serving. All parameters will - be injected into the pod as environment variables. Function code can - use these parameters by getting environment variables type: object pubsub: additionalProperties: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -7730,14 +3723,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. properties: key: type: string @@ -7748,8 +3737,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct for - the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -7764,22 +3751,17 @@ spec: - type - version type: object - description: Configurations of dapr pubsub components. type: object scaleOptions: - description: The ScaleOptions will help us to set up guidelines for - the autoscaling of function workloads. properties: keda: properties: httpScaledObject: properties: cooldownPeriod: - description: Cooldown period value format: int32 type: integer targetPendingRequests: - description: Target metric value format: int32 type: integer type: object @@ -7792,11 +3774,8 @@ spec: format: int32 type: integer restartPolicy: - description: Restart policy for all containers within the - pod. One of 'OnFailure', 'Never'. Default to 'Never'. type: string scalingStrategy: - description: ScalingStrategy defines the strategy of Scaling properties: customScalingQueueLengthDeduction: format: int32 @@ -7819,54 +3798,22 @@ spec: scaledObject: properties: advanced: - description: AdvancedConfig specifies advance scaling options properties: horizontalPodAutoscalerConfig: - description: HorizontalPodAutoscalerConfig specifies - horizontal scale config properties: behavior: - description: HorizontalPodAutoscalerBehavior configures - the scaling behavior of the target in both Up - and Down directions (scaleUp and scaleDown fields - respectively). properties: scaleDown: - description: scaleDown is scaling policy for - scaling Down. If not set, the default value - is to allow to scale down to minReplicas pods, - with a 300 second stabilization window (i.e., - the highest recommendation for the last 300sec - is used). properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be - discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the - policy should hold true. PeriodSeconds - must be greater than zero and less - than or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by - the policy. It must be greater than - zero format: int32 type: integer required: @@ -7877,61 +3824,22 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which past - recommendations should be considered while - scaling up or scaling down. StabilizationWindowSeconds - must be greater than or equal to zero - and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object scaleUp: - description: 'scaleUp is scaling policy for - scaling Up. If not set, the default value - is the higher of: * increase no more than - 4 pods per 60 seconds * double the number - of pods per 60 seconds No stabilization is - used.' properties: policies: - description: policies is a list of potential - scaling polices which can be used during - scaling. At least one policy must be specified, - otherwise the HPAScalingRules will be - discarded as invalid items: - description: HPAScalingPolicy is a single - policy which must hold true for a specified - past interval. properties: periodSeconds: - description: PeriodSeconds specifies - the window of time for which the - policy should hold true. PeriodSeconds - must be greater than zero and less - than or equal to 1800 (30 min). format: int32 type: integer type: - description: Type is used to specify - the scaling policy. type: string value: - description: Value contains the amount - of change which is permitted by - the policy. It must be greater than - zero format: int32 type: integer required: @@ -7942,22 +3850,8 @@ spec: type: array x-kubernetes-list-type: atomic selectPolicy: - description: selectPolicy is used to specify - which policy should be used. If not set, - the default value Max is used. type: string stabilizationWindowSeconds: - description: 'StabilizationWindowSeconds - is the number of seconds for which past - recommendations should be considered while - scaling up or scaling down. StabilizationWindowSeconds - must be greater than or equal to zero - and less than or equal to 3600 (one hour). - If not set, use the default values: - - For scale up: 0 (i.e. no stabilization - is done). - For scale down: 300 (i.e. - the stabilization window is 300 seconds - long).' format: int32 type: integer type: object @@ -7972,7 +3866,6 @@ spec: format: int32 type: integer fallback: - description: Fallback is the spec for fallback options properties: failureThreshold: format: int32 @@ -7989,22 +3882,11 @@ spec: type: integer type: object triggers: - description: Triggers are used to specify the trigger sources - of the function. The Keda (ScaledObject, ScaledJob) configuration - in ScaleOptions cannot take effect without Triggers being - set. items: - description: ScaleTriggers reference the scaler that will - be used properties: authenticationRef: - description: ScaledObjectAuthRef points to the TriggerAuthentication - or ClusterTriggerAuthentication object that is used - to authenticate the scaler with the environment properties: kind: - description: Kind of the resource being referred to. - Defaults to TriggerAuthentication. type: string name: type: string @@ -8016,9 +3898,6 @@ spec: type: string type: object metricType: - description: MetricTargetType specifies the type of metric - being targeted, and should be either "Value", "AverageValue", - or "Utilization" type: string name: type: string @@ -8035,8 +3914,6 @@ spec: knative: additionalProperties: type: string - description: Refer to https://knative.dev/docs/serving/autoscaling/ - to learn more about the autoscaling options of Knative Serving. type: object maxReplicas: format: int32 @@ -8049,7 +3926,6 @@ spec: additionalProperties: properties: spec: - description: ComponentSpec is the spec for a component. properties: ignoreErrors: type: boolean @@ -8057,14 +3933,10 @@ spec: type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata. properties: name: type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret - holding the value for the metadata item. Name is the - secret name, and key is the field in the secret. properties: key: type: string @@ -8075,8 +3947,6 @@ spec: - name type: object value: - description: DynamicValue is a dynamic value struct - for the component.metadata pair value. x-kubernetes-preserve-unknown-fields: true required: - name @@ -8092,79 +3962,29 @@ spec: - version type: object type: object - description: Configurations of dapr state components. It can refer to - an existing state when the `state.spec` is nil. type: object template: - description: Template describes the pods that will be created. The container - named `function` is the container which is used to run the image built - by the builder. If it is not set, the controller will automatically - add one. properties: activeDeadlineSeconds: - description: Optional duration in seconds the pod may be active - on the node relative to StartTime before the system will actively - try to mark it failed and kill associated containers. Value must - be a positive integer. format: int64 type: integer affinity: - description: If specified, the pod's scheduling constraints properties: nodeAffinity: - description: Describes node affinity scheduling rules for the - pod. properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - matches the corresponding matchExpressions; the node(s) - with the highest sum are the most preferred. items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a no-op). - A null preferred scheduling term matches no objects - (i.e. is also a no-op). properties: preference: - description: A node selector term, associated with - the corresponding weight. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -8174,33 +3994,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -8212,8 +4012,6 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -8222,51 +4020,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its - node. properties: nodeSelectorTerms: - description: Required. A list of node selector terms. - The terms are ORed. items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. - The TopologySelectorTerm type implements a subset - of the NodeSelectorTerm. properties: matchExpressions: - description: A list of node selector requirements - by node's labels. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -8276,33 +4041,13 @@ spec: type: object type: array matchFields: - description: A list of node selector requirements - by node's fields. items: - description: A node selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: The label key that the selector - applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. items: type: string type: array @@ -8320,62 +4065,22 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -8387,52 +4092,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -8444,42 +4116,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. format: int32 type: integer required: @@ -8488,53 +4137,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to a pod label update), - the system may or may not try to eventually evict the - pod from its node. When there are multiple elements, the - lists of nodes corresponding to each podAffinityTerm are - intersected, i.e. all terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -8546,49 +4160,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -8600,33 +4184,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. type: string required: - topologyKey @@ -8634,64 +4199,22 @@ spec: type: array type: object podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some - other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling anti-affinity - expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the - sum if the node has pods which matches the corresponding - podAffinityTerm; the node(s) with the highest sum are - the most preferred. items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) properties: podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -8703,52 +4226,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -8760,42 +4250,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list - of namespace names that the term applies to. - The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. format: int32 type: integer required: @@ -8804,53 +4271,18 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the pod - will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met at - some point during pod execution (e.g. due to a pod label - update), the system may or may not try to eventually evict - the pod from its node. When there are multiple elements, - the lists of nodes corresponding to each podAffinityTerm - are intersected, i.e. all terms must be satisfied. items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running properties: labelSelector: - description: A label query over a set of resources, - in this case pods. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -8862,49 +4294,19 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. properties: matchExpressions: - description: matchExpressions is a list of label - selector requirements. The requirements are - ANDed. items: - description: A label selector requirement is - a selector that contains values, a key, and - an operator that relates the key and values. properties: key: - description: key is the label key that the - selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. If - the operator is Exists or DoesNotExist, - the values array must be empty. This array - is replaced during a strategic merge patch. items: type: string type: array @@ -8916,33 +4318,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. - null or empty namespaces list and null namespaceSelector - means "this pod's namespace". items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. type: string required: - topologyKey @@ -8951,154 +4334,72 @@ spec: type: object type: object automountServiceAccountToken: - description: AutomountServiceAccountToken indicates whether a service - account token should be automatically mounted. type: boolean containers: - description: List of containers belonging to the pod. Containers - cannot currently be added or removed. There must be at least one - container in a Pod. Cannot be updated. items: - description: A single application container that you want to run - within a pod. properties: args: - description: 'Arguments to the entrypoint. The container image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the input - string will be unchanged. Double $$ are reduced to a single - $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of - whether the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The container image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded using - the container''s environment. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double - $$ are reduced to a single $, which allows for escaping - the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references will - never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -9110,111 +4411,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should take - in response to container lifecycle events. Cannot be updated. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -9222,98 +4465,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -9321,41 +4515,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -9363,71 +4541,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -9435,129 +4579,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. Not - specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Modifying this array with strategic merge patch may corrupt - the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -9568,71 +4645,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if the - probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -9640,103 +4683,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -9752,8 +4743,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -9762,261 +4751,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields of - SecurityContext override the equivalent fields of PodSecurityContext. - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed - until this completes successfully. If this probe fails, - the Pod will be restarted, just as if the livenessProbe - failed. This can be used to provide different probe parameters - at the beginning of a Pod''s lifecycle, when it might take - a long time to load data or warm a cache, than during steady-state - operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -10024,141 +4853,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -10166,41 +4915,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -10208,217 +4935,100 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array dnsConfig: - description: Specifies the DNS parameters of a pod. Parameters specified - here will be merged to the generated DNS configuration based on - DNSPolicy. properties: nameservers: - description: A list of DNS name server IP addresses. This will - be appended to the base nameservers generated from DNSPolicy. - Duplicated nameservers will be removed. items: type: string type: array options: - description: A list of DNS resolver options. This will be merged - with the base options generated from DNSPolicy. Duplicated - entries will be removed. Resolution options given in Options - will override those that appear in the base DNSPolicy. items: - description: PodDNSConfigOption defines DNS resolver options - of a pod. properties: name: - description: Required. type: string value: type: string type: object type: array searches: - description: A list of DNS search domains for host-name lookup. - This will be appended to the base search paths generated from - DNSPolicy. Duplicated search paths will be removed. items: type: string type: array type: object dnsPolicy: - description: Set DNS policy for the pod. Defaults to "ClusterFirst". - Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' - or 'None'. DNS parameters given in DNSConfig will be merged with - the policy selected with DNSPolicy. To have DNS options set along - with hostNetwork, you have to specify DNS policy explicitly to - 'ClusterFirstWithHostNet'. type: string enableServiceLinks: - description: 'EnableServiceLinks indicates whether information about - services should be injected into pod''s environment variables, - matching the syntax of Docker links. Optional: Defaults to true.' type: boolean ephemeralContainers: - description: List of ephemeral containers run in this pod. Ephemeral - containers may be run in an existing pod to perform user-initiated - actions such as debugging. This list cannot be specified when - creating a pod, and it cannot be modified by updating the pod - spec. In order to add an ephemeral container to an existing pod, - use the pod's ephemeralcontainers subresource. items: - description: "An EphemeralContainer is a temporary container that - you may add to an existing Pod for user-initiated activities - such as debugging. Ephemeral containers have no resource or - scheduling guarantees, and they will not be restarted when they - exit or when a Pod is removed or restarted. The kubelet may - evict a Pod if an ephemeral container causes the Pod to exceed - its resource allocation. \n To add an ephemeral container, use - the ephemeralcontainers subresource of an existing Pod. Ephemeral - containers may not be removed or restarted." properties: args: - description: 'Arguments to the entrypoint. The image''s CMD - is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will - be unchanged. Double $$ are reduced to a single $, which - allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. Double $$ are reduced - to a single $, which allows for escaping the $(VAR_NAME) - syntax: i.e. "$$(VAR_NAME)" will produce the string literal - "$(VAR_NAME)". Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot - be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -10430,107 +5040,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Lifecycle is not allowed for ephemeral containers. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -10538,98 +5094,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -10637,41 +5144,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -10679,69 +5170,37 @@ spec: type: object type: object livenessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -10749,123 +5208,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the ephemeral container specified as - a DNS_LABEL. This name must be unique among all containers, - init containers and ephemeral containers. type: string ports: - description: Ports are not allowed for ephemeral containers. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -10876,69 +5274,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -10946,104 +5312,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: Resources are not allowed for ephemeral containers. - Ephemeral containers use spare resources already allocated - to the pod. properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -11059,8 +5372,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -11069,254 +5380,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'Optional: SecurityContext defines the security - options the ephemeral container should be run with. If set, - the fields of SecurityContext override the equivalent fields - of PodSecurityContext.' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: Probes are not allowed for ephemeral containers. properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11324,151 +5482,63 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean targetContainerName: - description: "If set, the name of the container from PodSpec - that this ephemeral container targets. The ephemeral container - will be run in the namespaces (IPC, PID, etc) of this container. - If not set then the ephemeral container uses the namespaces - configured in the Pod spec. \n The container runtime must - implement support for this feature. If the runtime does - not support namespace targeting then the result of setting - this field is undefined." type: string terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -11476,42 +5546,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Subpath mounts are not allowed for ephemeral containers. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -11519,233 +5566,105 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array hostAliases: - description: HostAliases is an optional list of hosts and IPs that - will be injected into the pod's hosts file if specified. This - is only valid for non-hostNetwork pods. items: - description: HostAlias holds the mapping between IP and hostnames - that will be injected as an entry in the pod's hosts file. properties: hostnames: - description: Hostnames for the above IP address. items: type: string type: array ip: - description: IP address of the host file entry. type: string type: object type: array hostIPC: - description: 'Use the host''s ipc namespace. Optional: Default to - false.' type: boolean hostNetwork: - description: Host networking requested for this pod. Use the host's - network namespace. If this option is set, the ports that will - be used must be specified. Default to false. type: boolean hostPID: - description: 'Use the host''s pid namespace. Optional: Default to - false.' type: boolean hostUsers: - description: 'Use the host''s user namespace. Optional: Default - to true. If set to true or not present, the pod will be run in - the host user namespace, useful for when the pod needs a feature - only available to the host user namespace, such as loading a kernel - module with CAP_SYS_MODULE. When set to false, a new userns is - created for the pod. Setting false is useful for mitigating container - breakout vulnerabilities even allowing users to run their containers - as root without actually having root privileges on the host. This - field is alpha-level and is only honored by servers that enable - the UserNamespacesSupport feature.' type: boolean hostname: - description: Specifies the hostname of the Pod If not specified, - the pod's hostname will be set to a system-defined value. type: string imagePullSecrets: - description: 'ImagePullSecrets is an optional list of references - to secrets in the same namespace to use for pulling any of the - images used by this PodSpec. If specified, these secrets will - be passed to individual puller implementations for them to use. - More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod' items: - description: LocalObjectReference contains enough information - to let you locate the referenced object inside the same namespace. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic type: array initContainers: - description: 'List of initialization containers belonging to the - pod. Init containers are executed in order prior to containers - being started. If any init container fails, the pod is considered - to have failed and is handled according to its restartPolicy. - The name for an init container or normal container must be unique - among all containers. Init containers may not have Lifecycle actions, - Readiness probes, Liveness probes, or Startup probes. The resourceRequirements - of an init container are taken into account during scheduling - by finding the highest request/limit for each resource type, and - then using the max of of that value or the sum of the normal containers. - Limits are applied to init containers in a similar fashion. Init - containers cannot currently be added or removed. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/' items: - description: A single application container that you want to run - within a pod. properties: args: - description: 'Arguments to the entrypoint. The container image''s - CMD is used if this is not provided. Variable references - $(VAR_NAME) are expanded using the container''s environment. - If a variable cannot be resolved, the reference in the input - string will be unchanged. Double $$ are reduced to a single - $, which allows for escaping the $(VAR_NAME) syntax: i.e. - "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". - Escaped references will never be expanded, regardless of - whether the variable exists or not. Cannot be updated. More - info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array command: - description: 'Entrypoint array. Not executed within a shell. - The container image''s ENTRYPOINT is used if this is not - provided. Variable references $(VAR_NAME) are expanded using - the container''s environment. If a variable cannot be resolved, - the reference in the input string will be unchanged. Double - $$ are reduced to a single $, which allows for escaping - the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references will - never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' items: type: string type: array env: - description: List of environment variables to set in the container. - Cannot be updated. items: - description: EnvVar represents an environment variable present - in a Container. properties: name: - description: Name of the environment variable. Must - be a C_IDENTIFIER. type: string value: - description: 'Variable references $(VAR_NAME) are expanded - using the previously defined environment variables - in the container and any service environment variables. - If a variable cannot be resolved, the reference in - the input string will be unchanged. Double $$ are - reduced to a single $, which allows for escaping the - $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce - the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the - variable exists or not. Defaults to "".' type: string valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. properties: configMapKeyRef: - description: Selects a key of a ConfigMap. properties: key: - description: The key to select. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the ConfigMap or - its key must be defined type: boolean required: - key type: object x-kubernetes-map-type: atomic fieldRef: - description: 'Selects a field of the pod: supports - metadata.name, metadata.namespace, `metadata.labels['''']`, - `metadata.annotations['''']`, spec.nodeName, - spec.serviceAccountName, status.hostIP, status.podIP, - status.podIPs.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, limits.ephemeral-storage, requests.cpu, - requests.memory and requests.ephemeral-storage) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource type: object x-kubernetes-map-type: atomic secretKeyRef: - description: Selects a key of a secret in the pod's - namespace properties: key: - description: The key of the secret to select - from. Must be a valid secret key. type: string name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: Specify whether the Secret or its - key must be defined type: boolean required: - key @@ -11757,111 +5676,53 @@ spec: type: object type: array envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must - be a C_IDENTIFIER. All invalid keys will be reported as - an event when the container is starting. When a key exists - in multiple sources, the value associated with the last - source will take precedence. Values defined by an Env with - a duplicate key will take precedence. Cannot be updated. items: - description: EnvFromSource represents the source of a set - of ConfigMaps properties: configMapRef: - description: The ConfigMap to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the ConfigMap must - be defined type: boolean type: object x-kubernetes-map-type: atomic prefix: - description: An optional identifier to prepend to each - key in the ConfigMap. Must be a C_IDENTIFIER. type: string secretRef: - description: The Secret to select from properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string optional: - description: Specify whether the Secret must be - defined type: boolean type: object x-kubernetes-map-type: atomic type: object type: array image: - description: 'Container image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' type: string imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' type: string lifecycle: - description: Actions that the management system should take - in response to container lifecycle events. Cannot be updated. properties: postStart: - description: 'PostStart is called immediately after a - container is created. If the handler fails, the container - is terminated and restarted according to its restart - policy. Other management of the container blocks until - the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11869,98 +5730,49 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object type: object preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, - resource contention, etc. The handler is not called - if the container crashes or exits. The Pod''s termination - grace period countdown begins before the PreStop hook - is executed. Regardless of the outcome of the handler, - the container will eventually terminate within the Pod''s - termination grace period (unless delayed by finalizers). - Other management of the container blocks until the hook - completes or until the termination grace period is reached. - More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory - for the command is root ('/') in the container's - filesystem. The command is simply exec'd, it - is not run inside a shell, so traditional shell - instructions ('|', etc) won't work. To use a - shell, you need to explicitly call out to that - shell. Exit status of 0 is treated as live/healthy - and non-zero is unhealthy. items: type: string type: array type: object httpGet: - description: HTTPGet specifies the http request to - perform. properties: host: - description: Host name to connect to, defaults - to the pod IP. You probably want to set "Host" - in httpHeaders instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -11968,41 +5780,25 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the - host. Defaults to HTTP. type: string required: - port type: object tcpSocket: - description: Deprecated. TCPSocket is NOT supported - as a LifecycleHandler and kept for the backward - compatibility. There are no validation of this field - and lifecycle hooks will fail in runtime when tcp - handler is specified. properties: host: - description: 'Optional: Host name to connect to, - defaults to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range - 1 to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port @@ -12010,71 +5806,37 @@ spec: type: object type: object livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12082,129 +5844,62 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object name: - description: Name of the container specified as a DNS_LABEL. - Each container in a pod must have a unique name (DNS_LABEL). - Cannot be updated. type: string ports: - description: List of ports to expose from the container. Not - specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Modifying this array with strategic merge patch may corrupt - the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. - Cannot be updated. items: - description: ContainerPort represents a network port in - a single container. properties: containerPort: - description: Number of port to expose on the pod's IP - address. This must be a valid port number, 0 < x < - 65536. format: int32 type: integer hostIP: - description: What host IP to bind the external port - to. type: string hostPort: - description: Number of port to expose on the host. If - specified, this must be a valid port number, 0 < x - < 65536. If HostNetwork is specified, this must match - ContainerPort. Most containers do not need this. format: int32 type: integer name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod - must have a unique name. Name for the port that can - be referred to by services. type: string protocol: default: TCP - description: Protocol for port. Must be UDP, TCP, or - SCTP. Defaults to "TCP". type: string required: - containerPort @@ -12215,71 +5910,37 @@ spec: - protocol x-kubernetes-list-type: map readinessProbe: - description: 'Periodic probe of container service readiness. - Container will be removed from service endpoints if the - probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12287,103 +5948,51 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object resources: - description: 'Compute Resources required by this container. - Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. \n This field - is immutable." items: - description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry - in pod.spec.resourceClaims of the Pod where this - field is used. It makes that resource available - inside a container. type: string required: - name @@ -12399,8 +6008,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -12409,261 +6016,101 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of - compute resources required. If Requests is omitted for - a container, it defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined value. - More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object securityContext: - description: 'SecurityContext defines the security options - the container should be run with. If set, the fields of - SecurityContext override the equivalent fields of PodSecurityContext. - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' properties: allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether - a process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag - will be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN Note that this field cannot be - set when spec.os.name is windows.' type: boolean capabilities: - description: The capabilities to add/drop when running - containers. Defaults to the default set of capabilities - granted by the container runtime. Note that this field - cannot be set when spec.os.name is windows. properties: add: - description: Added capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array drop: - description: Removed capabilities items: - description: Capability represent POSIX capabilities - type type: string type: array type: object privileged: - description: Run container in privileged mode. Processes - in privileged containers are essentially equivalent - to root on the host. Defaults to false. Note that this - field cannot be set when spec.os.name is windows. type: boolean procMount: - description: procMount denotes the type of proc mount - to use for the containers. The default is DefaultProcMount - which uses the container runtime defaults for readonly - paths and masked paths. This requires the ProcMountType - feature flag to be enabled. Note that this field cannot - be set when spec.os.name is windows. type: string readOnlyRootFilesystem: - description: Whether this container has a read-only root - filesystem. Default is false. Note that this field cannot - be set when spec.os.name is windows. type: boolean runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be - set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as - a non-root user. If true, the Kubelet will validate - the image at runtime to ensure that it does not run - as UID 0 (root) and fail to start the container if it - does. If unset or false, no such validation will be - performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata - if unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to the - container. If unspecified, the container runtime will - allocate a random SELinux context for each container. May - also be set in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies - to the container. type: string role: - description: Role is a SELinux role label that applies - to the container. type: string type: - description: Type is a SELinux type label that applies - to the container. type: string user: - description: User is a SELinux user label that applies - to the container. type: string type: object seccompProfile: - description: The seccomp options to use by this container. - If seccomp options are provided at both the pod & container - level, the container options override the pod options. - Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile - defined in a file on the node should be used. The - profile must be preconfigured on the node to work. - Must be a descending path, relative to the kubelet's - configured seccomp profile location. Must only be - set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp - profile will be applied. Valid options are: \n Localhost - - a profile defined in a file on the node should - be used. RuntimeDefault - the container runtime - default profile should be used. Unconfined - no - profile should be applied." type: string required: - type type: object windowsOptions: - description: The Windows specific settings applied to - all containers. If unspecified, the options from the - PodSecurityContext will be used. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. Note that this field cannot be set - when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA - admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec - named by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of - the GMSA credential spec to use. type: string hostProcess: - description: HostProcess determines if a container - should be run as a 'Host Process' container. This - field is alpha-level and will only be honored by - components that enable the WindowsHostProcessContainers - feature flag. Setting this field without the feature - flag will result in errors when validating the Pod. - All of a Pod's containers must have the same effective - HostProcess value (it is not allowed to have a mix - of HostProcess containers and non-HostProcess containers). In - addition, if HostProcess is true then HostNetwork - must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set - in PodSecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence. type: string type: object type: object startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed - until this completes successfully. If this probe fails, - the Pod will be restarted, just as if the livenessProbe - failed. This can be used to provide different probe parameters - at the beginning of a Pod''s lifecycle, when it might take - a long time to load data or warm a cache, than during steady-state - operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' properties: exec: - description: Exec specifies the action to take. properties: command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. items: type: string type: array type: object failureThreshold: - description: Minimum consecutive failures for the probe - to be considered failed after having succeeded. Defaults - to 3. Minimum value is 1. format: int32 type: integer grpc: - description: GRPC specifies an action involving a GRPC - port. This is a beta field and requires enabling GRPCContainerProbe - feature gate. properties: port: - description: Port number of the gRPC service. Number - must be in the range 1 to 65535. format: int32 type: integer service: - description: "Service is the name of the service to - place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - \n If this is not specified, the default behavior - is defined by gRPC." type: string required: - port type: object httpGet: - description: HTTPGet specifies the http request to perform. properties: host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. type: string httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. items: - description: HTTPHeader describes a custom header - to be used in HTTP probes properties: name: - description: The header field name type: string value: - description: The header field value type: string required: - name @@ -12671,141 +6118,61 @@ spec: type: object type: array path: - description: Path to access on the HTTP server. type: string port: anyOf: - type: integer - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. type: string required: - port type: object initialDelaySeconds: - description: 'Number of seconds after the container has - started before liveness probes are initiated. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. format: int32 type: integer successThreshold: - description: Minimum consecutive successes for the probe - to be considered successful after having failed. Defaults - to 1. Must be 1 for liveness and startup. Minimum value - is 1. format: int32 type: integer tcpSocket: - description: TCPSocket specifies an action involving a - TCP port. properties: host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' type: string port: anyOf: - type: integer - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. x-kubernetes-int-or-string: true required: - port type: object terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs - to terminate gracefully upon probe failure. The grace - period is the duration in seconds after the processes - running in the pod are sent a termination signal and - the time when the processes are forcibly halted with - a kill signal. Set this value longer than the expected - cleanup time for your process. If this value is nil, - the pod's terminationGracePeriodSeconds will be used. - Otherwise, this value overrides the value provided by - the pod spec. Value must be non-negative integer. The - value zero indicates stop immediately via the kill signal - (no opportunity to shut down). This is a beta field - and requires enabling ProbeTerminationGracePeriod feature - gate. Minimum value is 1. spec.terminationGracePeriodSeconds - is used if unset. format: int64 type: integer timeoutSeconds: - description: 'Number of seconds after which the probe - times out. Defaults to 1 second. Minimum value is 1. - More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' format: int32 type: integer type: object stdin: - description: Whether this container should allocate a buffer - for stdin in the container runtime. If this is not set, - reads from stdin in the container will always result in - EOF. Default is false. type: boolean stdinOnce: - description: Whether the container runtime should close the - stdin channel after it has been opened by a single attach. - When stdin is true the stdin stream will remain open across - multiple attach sessions. If stdinOnce is set to true, stdin - is opened on container start, is empty until the first client - attaches to stdin, and then remains open and accepts data - until the client disconnects, at which time stdin is closed - and remains closed until the container is restarted. If - this flag is false, a container processes that reads from - stdin will never receive an EOF. Default is false type: boolean terminationMessagePath: - description: 'Optional: Path at which the file to which the - container''s termination message will be written is mounted - into the container''s filesystem. Message written is intended - to be brief final status, such as an assertion failure message. - Will be truncated by the node if greater than 4096 bytes. - The total message length across all containers will be limited - to 12kb. Defaults to /dev/termination-log. Cannot be updated.' type: string terminationMessagePolicy: - description: Indicate how the termination message should be - populated. File will use the contents of terminationMessagePath - to populate the container status message on both success - and failure. FallbackToLogsOnError will use the last chunk - of container log output if the termination message file - is empty and the container exited with an error. The log - output is limited to 2048 bytes or 80 lines, whichever is - smaller. Defaults to File. Cannot be updated. type: string tty: - description: Whether this container should allocate a TTY - for itself, also requires 'stdin' to be true. Default is - false. type: boolean volumeDevices: - description: volumeDevices is the list of block devices to - be used by the container. items: - description: volumeDevice describes a mapping of a raw block - device within a container. properties: devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. type: string name: - description: name must match the name of a persistentVolumeClaim - in the pod type: string required: - devicePath @@ -12813,41 +6180,19 @@ spec: type: object type: array volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. items: - description: VolumeMount describes a mounting of a Volume - within a container. properties: mountPath: - description: Path within the container at which the - volume should be mounted. Must not contain ':'. type: string mountPropagation: - description: mountPropagation determines how mounts - are propagated from the host to container and the - other way around. When not set, MountPropagationNone - is used. This field is beta in 1.10. type: string name: - description: This must match the Name of a Volume. type: string readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. type: boolean subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's - root). type: string subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves - similarly to SubPath but environment variable references - $(VAR_NAME) are expanded using the container's environment. - Defaults to "" (volume's root). SubPathExpr and SubPath - are mutually exclusive. type: string required: - mountPath @@ -12855,50 +6200,21 @@ spec: type: object type: array workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might - be configured in the container image. Cannot be updated. type: string required: - name type: object type: array nodeName: - description: NodeName is a request to schedule this pod onto a specific - node. If it is non-empty, the scheduler simply schedules this - pod onto that node, assuming that it fits resource requirements. type: string nodeSelector: additionalProperties: type: string - description: 'NodeSelector is a selector which must be true for - the pod to fit on a node. Selector which must match a node''s - labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' type: object x-kubernetes-map-type: atomic os: - description: "Specifies the OS of the containers in the pod. Some - pod and container fields are restricted if this is set. \n If - the OS field is set to linux, the following fields must be unset: - -securityContext.windowsOptions \n If the OS field is set to windows, - following fields must be unset: - spec.hostPID - spec.hostIPC - - spec.hostUsers - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - - spec.securityContext.sysctls - spec.shareProcessNamespace - - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - - spec.containers[*].securityContext.readOnlyRootFilesystem - - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - - spec.containers[*].securityContext.runAsGroup" properties: name: - description: 'Name is the name of the operating system. The - currently supported values are linux and windows. Additional - value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration - Clients should expect to handle additional values and treat - unrecognized values in this field as os: null' type: string required: - name @@ -12910,96 +6226,33 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Overhead represents the resource overhead associated - with running a pod for a given RuntimeClass. This field will be - autopopulated at admission time by the RuntimeClass admission - controller. If the RuntimeClass admission controller is enabled, - overhead must not be set in Pod create requests. The RuntimeClass - admission controller will reject Pod create requests which have - the overhead already set. If RuntimeClass is configured and selected - in the PodSpec, Overhead will be set to the value defined in the - corresponding RuntimeClass, otherwise it will remain unset and - treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md' type: object preemptionPolicy: - description: PreemptionPolicy is the Policy for preempting pods - with lower priority. One of Never, PreemptLowerPriority. Defaults - to PreemptLowerPriority if unset. type: string priority: - description: The priority value. Various system components use this - field to find the priority of the pod. When Priority Admission - Controller is enabled, it prevents users from setting this field. - The admission controller populates this field from PriorityClassName. - The higher the value, the higher the priority. format: int32 type: integer priorityClassName: - description: If specified, indicates the pod's priority. "system-node-critical" - and "system-cluster-critical" are two special keywords which indicate - the highest priorities with the former being the highest priority. - Any other name must be defined by creating a PriorityClass object - with that name. If not specified, the pod priority will be default - or zero if there is no default. type: string readinessGates: - description: 'If specified, all readiness gates will be evaluated - for pod readiness. A pod is ready when all its containers are - ready AND all conditions specified in the readiness gates have - status equal to "True" More info: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates' items: - description: PodReadinessGate contains the reference to a pod - condition properties: conditionType: - description: ConditionType refers to a condition in the pod's - condition list with matching type. type: string required: - conditionType type: object type: array resourceClaims: - description: "ResourceClaims defines which ResourceClaims must be - allocated and reserved before the Pod is allowed to start. The - resources will be made available to those containers which consume - them by name. \n This is an alpha field and requires enabling - the DynamicResourceAllocation feature gate. \n This field is immutable." items: - description: PodResourceClaim references exactly one ResourceClaim - through a ClaimSource. It adds a name to it that uniquely identifies - the ResourceClaim inside the Pod. Containers that need access - to the ResourceClaim reference it with this name. properties: name: - description: Name uniquely identifies this resource claim - inside the pod. This must be a DNS_LABEL. type: string source: - description: Source describes where to find the ResourceClaim. properties: resourceClaimName: - description: ResourceClaimName is the name of a ResourceClaim - object in the same namespace as this pod. type: string resourceClaimTemplateName: - description: "ResourceClaimTemplateName is the name of - a ResourceClaimTemplate object in the same namespace - as this pod. \n The template will be used to create - a new ResourceClaim, which will be bound to this pod. - When this pod is deleted, the ResourceClaim will also - be deleted. The name of the ResourceClaim will be -, where is the - PodResourceClaim.Name. Pod validation will reject the - pod if the concatenated name is not valid for a ResourceClaim - (e.g. too long). \n An existing ResourceClaim with that - name that is not owned by the pod will not be used for - the pod to avoid using an unrelated resource by mistake. - Scheduling and pod startup are then blocked until the - unrelated ResourceClaim is removed. \n This field is - immutable and no changes will be made to the corresponding - ResourceClaim by the control plane after creating the - ResourceClaim." type: string type: object required: @@ -13010,35 +6263,15 @@ spec: - name x-kubernetes-list-type: map restartPolicy: - description: 'Restart policy for all containers within the pod. - One of Always, OnFailure, Never. Default to Always. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' type: string runtimeClassName: - description: 'RuntimeClassName refers to a RuntimeClass object in - the node.k8s.io group, which should be used to run this pod. If - no RuntimeClass resource matches the named class, the pod will - not be run. If unset or empty, the "legacy" RuntimeClass will - be used, which is an implicit class with an empty definition that - uses the default runtime handler. More info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class' type: string schedulerName: - description: If specified, the pod will be dispatched by specified - scheduler. If not specified, the pod will be dispatched by default - scheduler. type: string schedulingGates: - description: "SchedulingGates is an opaque list of values that if - specified will block scheduling the pod. More info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness. - \n This is an alpha-level feature enabled by PodSchedulingReadiness - feature gate." items: - description: PodSchedulingGate is associated to a Pod to guard - its scheduling. properties: name: - description: Name of the scheduling gate. Each scheduling - gate must have a unique name field. type: string required: - name @@ -13048,133 +6281,51 @@ spec: - name x-kubernetes-list-type: map securityContext: - description: 'SecurityContext holds pod-level security attributes - and common container settings. Optional: Defaults to empty. See - type description for default values of each field.' properties: fsGroup: - description: "A special supplemental group that applies to all - containers in a pod. Some volume types allow the Kubelet to - change the ownership of that volume to be owned by the pod: - \n 1. The owning GID will be the FSGroup 2. The setgid bit - is set (new files created in the volume will be owned by FSGroup) - 3. The permission bits are OR'd with rw-rw---- \n If unset, - the Kubelet will not modify the ownership and permissions - of any volume. Note that this field cannot be set when spec.os.name - is windows." format: int64 type: integer fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing - ownership and permission of the volume before being exposed - inside Pod. This field will only apply to volume types which - support fsGroup based ownership(and permissions). It will - have no effect on ephemeral volume types such as: secret, - configmaps and emptydir. Valid values are "OnRootMismatch" - and "Always". If not specified, "Always" is used. Note that - this field cannot be set when spec.os.name is windows.' type: string runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set in - SecurityContext. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence for - that container. Note that this field cannot be set when spec.os.name - is windows. format: int64 type: integer runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to - start the container if it does. If unset or false, no such - validation will be performed. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence. type: boolean runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if unspecified. - May also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. Note that this field - cannot be set when spec.os.name is windows. format: int64 type: integer seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - Note that this field cannot be set when spec.os.name is windows. properties: level: - description: Level is SELinux level label that applies to - the container. type: string role: - description: Role is a SELinux role label that applies to - the container. type: string type: - description: Type is a SELinux type label that applies to - the container. type: string user: - description: User is a SELinux user label that applies to - the container. type: string type: object seccompProfile: - description: The seccomp options to use by the containers in - this pod. Note that this field cannot be set when spec.os.name - is windows. properties: localhostProfile: - description: localhostProfile indicates a profile defined - in a file on the node should be used. The profile must - be preconfigured on the node to work. Must be a descending - path, relative to the kubelet's configured seccomp profile - location. Must only be set if type is "Localhost". type: string type: - description: "type indicates which kind of seccomp profile - will be applied. Valid options are: \n Localhost - a profile - defined in a file on the node should be used. RuntimeDefault - - the container runtime default profile should be used. - Unconfined - no profile should be applied." type: string required: - type type: object supplementalGroups: - description: A list of groups applied to the first process run - in each container, in addition to the container's primary - GID, the fsGroup (if specified), and group memberships defined - in the container image for the uid of the container process. - If unspecified, no additional groups are added to any container. - Note that group memberships defined in the container image - for the uid of the container process are still effective, - even if they are not included in this list. Note that this - field cannot be set when spec.os.name is windows. items: format: int64 type: integer type: array sysctls: - description: Sysctls hold a list of namespaced sysctls used - for the pod. Pods with unsupported sysctls (by the container - runtime) might fail to launch. Note that this field cannot - be set when spec.os.name is windows. items: - description: Sysctl defines a kernel parameter to be set properties: name: - description: Name of a property to set type: string value: - description: Value of a property to set type: string required: - name @@ -13182,165 +6333,59 @@ spec: type: object type: array windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. Note - that this field cannot be set when spec.os.name is linux. properties: gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. type: string gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. type: string hostProcess: - description: HostProcess determines if a container should - be run as a 'Host Process' container. This field is alpha-level - and will only be honored by components that enable the - WindowsHostProcessContainers feature flag. Setting this - field without the feature flag will result in errors when - validating the Pod. All of a Pod's containers must have - the same effective HostProcess value (it is not allowed - to have a mix of HostProcess containers and non-HostProcess - containers). In addition, if HostProcess is true then - HostNetwork must also be set to true. type: boolean runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. type: string type: object type: object serviceAccount: - description: 'DeprecatedServiceAccount is a depreciated alias for - ServiceAccountName. Deprecated: Use serviceAccountName instead.' type: string serviceAccountName: - description: 'ServiceAccountName is the name of the ServiceAccount - to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/' type: string setHostnameAsFQDN: - description: If true the pod's hostname will be configured as the - pod's FQDN, rather than the leaf name (the default). In Linux - containers, this means setting the FQDN in the hostname field - of the kernel (the nodename field of struct utsname). In Windows - containers, this means setting the registry value of hostname - for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters - to FQDN. If a pod does not have FQDN, this has no effect. Default - to false. type: boolean shareProcessNamespace: - description: 'Share a single process namespace between all of the - containers in a pod. When this is set containers will be able - to view and signal processes from other containers in the same - pod, and the first process in each container will not be assigned - PID 1. HostPID and ShareProcessNamespace cannot both be set. Optional: - Default to false.' type: boolean subdomain: - description: If specified, the fully qualified Pod hostname will - be "...svc.". - If not specified, the pod will not have a domainname at all. type: string terminationGracePeriodSeconds: - description: Optional duration in seconds the pod needs to terminate - gracefully. May be decreased in delete request. Value must be - non-negative integer. The value zero indicates stop immediately - via the kill signal (no opportunity to shut down). If this value - is nil, the default grace period will be used instead. The grace - period is the duration in seconds after the processes running - in the pod are sent a termination signal and the time when the - processes are forcibly halted with a kill signal. Set this value - longer than the expected cleanup time for your process. Defaults - to 30 seconds. format: int64 type: integer tolerations: - description: If specified, the pod's tolerations. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using the - matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. type: string operator: - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to - Equal. Exists is equivalent to wildcard for value, so that - a pod can tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoExecute, otherwise - this field is ignored) tolerates the taint. By default, - it is not set, which means tolerate the taint forever (do - not evict). Zero and negative values will be treated as - 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. type: string type: object type: array topologySpreadConstraints: - description: TopologySpreadConstraints describes how a group of - pods ought to spread across topology domains. Scheduler will schedule - pods in a way which abides by the constraints. All topologySpreadConstraints - are ANDed. items: - description: TopologySpreadConstraint specifies how to spread - matching pods among the given topology. properties: labelSelector: - description: LabelSelector is used to find matching pods. - Pods that match this label selector are counted to determine - the number of pods in their corresponding topology domain. properties: matchExpressions: - description: matchExpressions is a list of label selector - requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. properties: key: - description: key is the label key that the selector - applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. items: type: string type: array @@ -13352,123 +6397,27 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic matchLabelKeys: - description: MatchLabelKeys is a set of pod label keys to - select the pods over which spreading will be calculated. - The keys are used to lookup values from the incoming pod - labels, those key-value labels are ANDed with labelSelector - to select the group of existing pods over which spreading - will be calculated for the incoming pod. Keys that don't - exist in the incoming pod labels will be ignored. A null - or empty list means only match against labelSelector. items: type: string type: array x-kubernetes-list-type: atomic maxSkew: - description: 'MaxSkew describes the degree to which pods may - be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, - it is the maximum permitted difference between the number - of matching pods in the target topology and the global minimum. - The global minimum is the minimum number of matching pods - in an eligible domain or zero if the number of eligible - domains is less than MinDomains. For example, in a 3-zone - cluster, MaxSkew is set to 1, and pods with the same labelSelector - spread as 2/2/1: In this case, the global minimum is 1. - | zone1 | zone2 | zone3 | | P P | P P | P | - if - MaxSkew is 1, incoming pod can only be scheduled to zone3 - to become 2/2/2; scheduling it onto zone1(zone2) would make - the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). - - if MaxSkew is 2, incoming pod can be scheduled onto any - zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used - to give higher precedence to topologies that satisfy it. - It''s a required field. Default value is 1 and 0 is not - allowed.' format: int32 type: integer minDomains: - description: "MinDomains indicates a minimum number of eligible - domains. When the number of eligible domains with matching - topology keys is less than minDomains, Pod Topology Spread - treats \"global minimum\" as 0, and then the calculation - of Skew is performed. And when the number of eligible domains - with matching topology keys equals or greater than minDomains, - this value has no effect on scheduling. As a result, when - the number of eligible domains is less than minDomains, - scheduler won't schedule more than maxSkew Pods to those - domains. If value is nil, the constraint behaves as if MinDomains - is equal to 1. Valid values are integers greater than 0. - When value is not nil, WhenUnsatisfiable must be DoNotSchedule. - \n For example, in a 3-zone cluster, MaxSkew is set to 2, - MinDomains is set to 5 and pods with the same labelSelector - spread as 2/2/2: | zone1 | zone2 | zone3 | | P P | P - P | P P | The number of domains is less than 5(MinDomains), - so \"global minimum\" is treated as 0. In this situation, - new pod with the same labelSelector cannot be scheduled, - because computed skew will be 3(3 - 0) if new Pod is scheduled - to any of the three zones, it will violate MaxSkew. \n This - is a beta field and requires the MinDomainsInPodTopologySpread - feature gate to be enabled (enabled by default)." format: int32 type: integer nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will treat - Pod's nodeAffinity/nodeSelector when calculating pod topology - spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector - are included in the calculations. - Ignore: nodeAffinity/nodeSelector - are ignored. All nodes are included in the calculations. - \n If this value is nil, the behavior is equivalent to the - Honor policy. This is a beta-level feature default enabled - by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat - node taints when calculating pod topology spread skew. Options - are: - Honor: nodes without taints, along with tainted nodes - for which the incoming pod has a toleration, are included. - - Ignore: node taints are ignored. All nodes are included. - \n If this value is nil, the behavior is equivalent to the - Ignore policy. This is a beta-level feature default enabled - by the NodeInclusionPolicyInPodTopologySpread feature flag." type: string topologyKey: - description: TopologyKey is the key of node labels. Nodes - that have a label with this key and identical values are - considered to be in the same topology. We consider each - as a "bucket", and try to put balanced number - of pods into each bucket. We define a domain as a particular - instance of a topology. Also, we define an eligible domain - as a domain whose nodes meet the requirements of nodeAffinityPolicy - and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", - each Node is a domain of that topology. And, if TopologyKey - is "topology.kubernetes.io/zone", each zone is a domain - of that topology. It's a required field. type: string whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal with - a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule - (default) tells the scheduler not to schedule it. - ScheduleAnyway - tells the scheduler to schedule the pod in any location, - but giving higher precedence to topologies that would help - reduce the skew. A constraint is considered "Unsatisfiable" - for an incoming pod if and only if every possible node assignment - for that pod would violate "MaxSkew" on some topology. For - example, in a 3-zone cluster, MaxSkew is set to 1, and pods - with the same labelSelector spread as 3/1/1: | zone1 | zone2 - | zone3 | | P P P | P | P | If WhenUnsatisfiable - is set to DoNotSchedule, incoming pod can only be scheduled - to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) - on zone2(zone3) satisfies MaxSkew(1). In other words, the - cluster can still be imbalanced, but scheduler won''t make - it *more* imbalanced. It''s a required field.' type: string required: - maxSkew @@ -13481,229 +6430,106 @@ spec: - whenUnsatisfiable x-kubernetes-list-type: map volumes: - description: 'List of volumes that can be mounted by containers - belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes' items: - description: Volume represents a named volume in a pod that may - be accessed by any container in the pod. properties: awsElasticBlockStore: - description: 'awsElasticBlockStore represents an AWS Disk - resource that is attached to a kubelet''s host machine and - then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' properties: fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default is to - mount by volume name. Examples: For volume /dev/sda1, - you specify the partition as "1". Similarly, the volume - partition for /dev/sda is "0" (or you can leave the - property empty).' format: int32 type: integer readOnly: - description: 'readOnly value true will force the readOnly - setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: boolean volumeID: - description: 'volumeID is unique ID of the persistent - disk resource in AWS (Amazon EBS volume). More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' type: string required: - volumeID type: object azureDisk: - description: azureDisk represents an Azure Data Disk mount - on the host and bind mount to the pod. properties: cachingMode: - description: 'cachingMode is the Host Caching mode: None, - Read Only, Read Write.' type: string diskName: - description: diskName is the Name of the data disk in - the blob storage type: string diskURI: - description: diskURI is the URI of data disk in the blob - storage type: string fsType: - description: fsType is Filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string kind: - description: 'kind expected values are Shared: multiple - blob disks per storage account Dedicated: single blob - disk per storage account Managed: azure managed data - disk (only in managed availability set). defaults to - shared' type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean required: - diskName - diskURI type: object azureFile: - description: azureFile represents an Azure File Service mount - on the host and bind mount to the pod. properties: readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: secretName is the name of secret that contains - Azure Storage Account Name and Key type: string shareName: - description: shareName is the azure share Name type: string required: - secretName - shareName type: object cephfs: - description: cephFS represents a Ceph FS mount on the host - that shares a pod's lifetime properties: monitors: - description: 'monitors is Required: Monitors is a collection - of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' items: type: string type: array path: - description: 'path is Optional: Used as the mounted root, - rather than the full Ceph tree, default is /' type: string readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: boolean secretFile: - description: 'secretFile is Optional: SecretFile is the - path to key ring for User, default is /etc/ceph/user.secret - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string secretRef: - description: 'secretRef is Optional: SecretRef is reference - to the authentication secret for User, default is empty. - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is optional: User is the rados user - name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' type: string required: - monitors type: object cinder: - description: 'cinder represents a cinder volume attached and - mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating - system. Examples: "ext4", "xfs", "ntfs". Implicitly - inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string readOnly: - description: 'readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: boolean secretRef: - description: 'secretRef is optional: points to a secret - object containing parameters used to connect to OpenStack.' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeID: - description: 'volumeID used to identify the volume in - cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' type: string required: - volumeID type: object configMap: - description: configMap represents a configMap that should - populate this volume properties: defaultMode: - description: 'defaultMode is optional: mode bits used - to set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for mode - bits. Defaults to 0644. Directories within the path - are not affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: items if unspecified, each key-value pair - in the Data field of the referenced ConfigMap will be - projected into the volume as a file whose name is the - key and content is the value. If specified, the listed - keys will be projected into the specified paths, and - unlisted keys will not be present. If a key is specified - which is not present in the ConfigMap, the volume setup - will error unless it is marked optional. Paths must - be relative and may not contain the '..' path or start - with '..'. items: - description: Maps a string key to a path within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for - mode bits. If not specified, the volume defaultMode - will be used. This might be in conflict with other - options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not - start with the string '..'. type: string required: - key @@ -13711,140 +6537,66 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' type: string optional: - description: optional specify whether the ConfigMap or - its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external CSI - drivers (Beta feature). properties: driver: - description: driver is the name of the CSI driver that - handles this volume. Consult with your admin for the - correct name as registered in the cluster. type: string fsType: - description: fsType to mount. Ex. "ext4", "xfs", "ntfs". - If not provided, the empty value is passed to the associated - CSI driver which will determine the default filesystem - to apply. type: string nodePublishSecretRef: - description: nodePublishSecretRef is a reference to the - secret object containing sensitive information to pass - to the CSI driver to complete the CSI NodePublishVolume - and NodeUnpublishVolume calls. This field is optional, - and may be empty if no secret is required. If the secret - object contains more than one secret, all secret references - are passed. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic readOnly: - description: readOnly specifies a read-only configuration - for the volume. Defaults to false (read/write). type: boolean volumeAttributes: additionalProperties: type: string - description: volumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. type: object required: - driver type: object downwardAPI: - description: downwardAPI represents downward API about the - pod that should populate this volume properties: defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a Optional: mode bits used to set - permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and decimal - values, JSON requires decimal values for mode bits. - Defaults to 0644. Directories within the path are not - affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: Items is a list of downward API volume file items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field properties: fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are - supported.' properties: apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". type: string fieldPath: - description: Path of the field to select in - the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used to set permissions - on this file, must be an octal value between 0000 - and 0777 or a decimal value between 0 and 511. - YAML accepts both octal and decimal values, JSON - requires decimal values for mode bits. If not - specified, the volume defaultMode will be used. - This might be in conflict with other options that - affect the file mode, like fsGroup, and the result - can be other mode bits set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' properties: containerName: - description: 'Container name: required for volumes, - optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output format of - the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to select' type: string required: - resource @@ -13856,120 +6608,35 @@ spec: type: array type: object emptyDir: - description: 'emptyDir represents a temporary directory that - shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' properties: medium: - description: 'medium represents what type of storage medium - should back this directory. The default is "" which - means to use the node''s default medium. Must be an - empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' type: string sizeLimit: anyOf: - type: integer - type: string - description: 'sizeLimit is the total amount of local storage - required for this EmptyDir volume. The size limit is - also applicable for memory medium. The maximum usage - on memory medium EmptyDir would be the minimum value - between the SizeLimit specified here and the sum of - memory limits of all containers in a pod. The default - is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true type: object ephemeral: - description: "ephemeral represents a volume that is handled - by a cluster storage driver. The volume's lifecycle is tied - to the pod that defines it - it will be created before the - pod starts, and deleted when the pod is removed. \n Use - this if: a) the volume is only needed while the pod runs, - b) features of normal volumes like restoring from snapshot - or capacity tracking are needed, c) the storage driver is - specified through a storage class, and d) the storage driver - supports dynamic volume provisioning through a PersistentVolumeClaim - (see EphemeralVolumeSource for more information on the connection - between this volume type and PersistentVolumeClaim). \n - Use PersistentVolumeClaim or one of the vendor-specific - APIs for volumes that persist for longer than the lifecycle - of an individual pod. \n Use CSI for light-weight local - ephemeral volumes if the CSI driver is meant to be used - that way - see the documentation of the driver for more - information. \n A pod can use both types of ephemeral volumes - and persistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC - to provision the volume. The pod in which this EphemeralVolumeSource - is embedded will be the owner of the PVC, i.e. the PVC - will be deleted together with the pod. The name of - the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array - entry. Pod validation will reject the pod if the concatenated - name is not valid for a PVC (for example, too long). - \n An existing PVC with that name that is not owned - by the pod will *not* be used for the pod to avoid using - an unrelated volume by mistake. Starting the pod is - then blocked until the unrelated PVC is removed. If - such a pre-created PVC is meant to be used by the pod, - the PVC has to updated with an owner reference to the - pod once the pod exists. Normally this should not be - necessary, but it may be useful when manually reconstructing - a broken cluster. \n This field is read-only and no - changes will be made by Kubernetes to the PVC after - it has been created. \n Required, must not be nil." properties: metadata: - description: May contain labels and annotations that - will be copied into the PVC when creating it. No - other fields are allowed and will be rejected during - validation. type: object spec: - description: The specification for the PersistentVolumeClaim. - The entire content is copied unchanged into the - PVC that gets created from this template. The same - fields as in a PersistentVolumeClaim are also valid - here. properties: accessModes: - description: 'accessModes contains the desired - access modes the volume should have. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string type: array dataSource: - description: 'dataSource field can be used to - specify either: * An existing VolumeSnapshot - object (snapshot.storage.k8s.io/VolumeSnapshot) - * An existing PVC (PersistentVolumeClaim) If - the provisioner or an external controller can - support the specified data source, it will create - a new volume based on the contents of the specified - data source. When the AnyVolumeDataSource feature - gate is enabled, dataSource contents will be - copied to dataSourceRef, and dataSourceRef contents - will be copied to dataSource when dataSourceRef.namespace - is not specified. If the namespace is specified, - then dataSourceRef will not be copied to dataSource.' properties: apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string required: - kind @@ -13977,94 +6644,25 @@ spec: type: object x-kubernetes-map-type: atomic dataSourceRef: - description: 'dataSourceRef specifies the object - from which to populate the volume with data, - if a non-empty volume is desired. This may be - any object from a non-empty API group (non core - object) or a PersistentVolumeClaim object. When - this field is specified, volume binding will - only succeed if the type of the specified object - matches some installed volume populator or dynamic - provisioner. This field will replace the functionality - of the dataSource field and as such if both - fields are non-empty, they must have the same - value. For backwards compatibility, when namespace - isn''t specified in dataSourceRef, both fields - (dataSource and dataSourceRef) will be set to - the same value automatically if one of them - is empty and the other is non-empty. When namespace - is specified in dataSourceRef, dataSource isn''t - set to the same value and must be empty. There - are three important differences between dataSource - and dataSourceRef: * While dataSource only allows - two specific types of objects, dataSourceRef - allows any non-core object, as well as PersistentVolumeClaim - objects. * While dataSource ignores disallowed - values (dropping them), dataSourceRef preserves - all values, and generates an error if a disallowed - value is specified. * While dataSource only - allows local objects, dataSourceRef allows objects - in any namespaces. (Beta) Using this field requires - the AnyVolumeDataSource feature gate to be enabled. - (Alpha) Using the namespace field of dataSourceRef - requires the CrossNamespaceVolumeDataSource - feature gate to be enabled.' properties: apiGroup: - description: APIGroup is the group for the - resource being referenced. If APIGroup is - not specified, the specified Kind must be - in the core API group. For any other third-party - types, APIGroup is required. type: string kind: - description: Kind is the type of resource - being referenced type: string name: - description: Name is the name of resource - being referenced type: string namespace: - description: Namespace is the namespace of - resource being referenced Note that when - a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant - object is required in the referent namespace - to allow that namespace's owner to accept - the reference. See the ReferenceGrant documentation - for details. (Alpha) This field requires - the CrossNamespaceVolumeDataSource feature - gate to be enabled. type: string required: - kind - name type: object resources: - description: 'resources represents the minimum - resources the volume should have. If RecoverVolumeExpansionFailure - feature is enabled users are allowed to specify - resource requirements that are lower than previous - value but must still be higher than capacity - recorded in the status field of the claim. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: claims: - description: "Claims lists the names of resources, - defined in spec.resourceClaims, that are - used by this container. \n This is an alpha - field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable." items: - description: ResourceClaim references one - entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name - of one entry in pod.spec.resourceClaims - of the Pod where this field is used. - It makes that resource available inside - a container. type: string required: - name @@ -14080,9 +6678,6 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum - amount of compute resources allowed. More - info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -14091,46 +6686,18 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum - amount of compute resources required. If - Requests is omitted for a container, it - defaults to Limits if that is explicitly - specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object selector: - description: selector is a label query over volumes - to consider for binding. properties: matchExpressions: - description: matchExpressions is a list of - label selector requirements. The requirements - are ANDed. items: - description: A label selector requirement - is a selector that contains values, a - key, and an operator that relates the - key and values. properties: key: - description: key is the label key that - the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic - merge patch. items: type: string type: array @@ -14142,28 +6709,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic storageClassName: - description: 'storageClassName is the name of - the StorageClass required by the claim. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: - description: volumeMode defines what type of volume - is required by the claim. Value of Filesystem - is implied when not included in claim spec. type: string volumeName: - description: volumeName is the binding reference - to the PersistentVolume backing this claim. type: string type: object required: @@ -14171,77 +6724,38 @@ spec: type: object type: object fc: - description: fc represents a Fibre Channel resource that is - attached to a kubelet's host machine and then exposed to - the pod. properties: fsType: - description: 'fsType is the filesystem type to mount. - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. TODO: how do we prevent - errors in the filesystem from compromising the machine' type: string lun: - description: 'lun is Optional: FC target lun number' format: int32 type: integer readOnly: - description: 'readOnly is Optional: Defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean targetWWNs: - description: 'targetWWNs is Optional: FC target worldwide - names (WWNs)' items: type: string type: array wwids: - description: 'wwids Optional: FC volume world wide identifiers - (wwids) Either wwids or combination of targetWWNs and - lun must be set, but not both simultaneously.' items: type: string type: array type: object flexVolume: - description: flexVolume represents a generic volume resource - that is provisioned/attached using an exec based plugin. properties: driver: - description: driver is the name of the driver to use for - this volume. type: string fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". The default filesystem - depends on FlexVolume script. type: string options: additionalProperties: type: string - description: 'options is Optional: this field holds extra - command options if any.' type: object readOnly: - description: 'readOnly is Optional: defaults to false - (read/write). ReadOnly here will force the ReadOnly - setting in VolumeMounts.' type: boolean secretRef: - description: 'secretRef is Optional: secretRef is reference - to the secret object containing sensitive information - to pass to the plugin scripts. This may be empty if - no secret object is specified. If the secret object - contains more than one secret, all secrets are passed - to the plugin scripts.' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic @@ -14249,186 +6763,88 @@ spec: - driver type: object flocker: - description: flocker represents a Flocker volume attached - to a kubelet's host machine. This depends on the Flocker - control service being running properties: datasetName: - description: datasetName is Name of the dataset stored - as metadata -> name on the dataset for Flocker should - be considered as deprecated type: string datasetUUID: - description: datasetUUID is the UUID of the dataset. This - is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: - description: 'gcePersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' properties: fsType: - description: 'fsType is filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string partition: - description: 'partition is the partition in the volume - that you want to mount. If omitted, the default is to - mount by volume name. Examples: For volume /dev/sda1, - you specify the partition as "1". Similarly, the volume - partition for /dev/sda is "0" (or you can leave the - property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' format: int32 type: integer pdName: - description: 'pdName is unique name of the PD resource - in GCE. Used to identify the disk in GCE. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: string readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' type: boolean required: - pdName type: object gitRepo: - description: 'gitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision - a container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir - into the Pod''s container.' properties: directory: - description: directory is the target directory name. Must - not contain or start with '..'. If '.' is supplied, - the volume directory will be the git repository. Otherwise, - if specified, the volume will contain the git repository - in the subdirectory with the given name. type: string repository: - description: repository is the URL type: string revision: - description: revision is the commit hash for the specified - revision. type: string required: - repository type: object glusterfs: - description: 'glusterfs represents a Glusterfs mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' properties: endpoints: - description: 'endpoints is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string path: - description: 'path is the Glusterfs volume path. More - info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: string readOnly: - description: 'readOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to - false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' type: boolean required: - endpoints - path type: object hostPath: - description: 'hostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' properties: path: - description: 'path of the directory on the host. If the - path is a symlink, it will follow the link to the real - path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string type: - description: 'type for HostPath Volume Defaults to "" - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' type: string required: - path type: object iscsi: - description: 'iscsi represents an ISCSI Disk resource that - is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' properties: chapAuthDiscovery: - description: chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: chapAuthSession defines whether support iSCSI - Session CHAP authentication type: boolean fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string initiatorName: - description: initiatorName is the custom iSCSI Initiator - Name. If initiatorName is specified with iscsiInterface - simultaneously, new iSCSI interface : will be created for the connection. type: string iqn: - description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: - description: iscsiInterface is the interface Name that - uses an iSCSI transport. Defaults to 'default' (tcp). type: string lun: - description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: - description: portals is the iSCSI Target Portal List. - The portal is either an IP or ip_addr:port if the port - is other than default (typically TCP ports 860 and 3260). items: type: string type: array readOnly: - description: readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. type: boolean secretRef: - description: secretRef is the CHAP Secret for iSCSI target - and initiator authentication properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic targetPortal: - description: targetPortal is iSCSI Target Portal. The - Portal is either an IP or ip_addr:port if the port is - other than default (typically TCP ports 860 and 3260). type: string required: - iqn @@ -14436,150 +6852,67 @@ spec: - targetPortal type: object name: - description: 'name of the volume. Must be a DNS_LABEL and - unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' type: string nfs: - description: 'nfs represents an NFS mount on the host that - shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' properties: path: - description: 'path that is exported by the NFS server. - More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string readOnly: - description: 'readOnly here will force the NFS export - to be mounted with read-only permissions. Defaults to - false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: boolean server: - description: 'server is the hostname or IP address of - the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' type: string required: - path - server type: object persistentVolumeClaim: - description: 'persistentVolumeClaimVolumeSource represents - a reference to a PersistentVolumeClaim in the same namespace. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' properties: claimName: - description: 'claimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' type: string readOnly: - description: readOnly Will force the ReadOnly setting - in VolumeMounts. Default false. type: boolean required: - claimName type: object photonPersistentDisk: - description: photonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string pdID: - description: pdID is the ID that identifies Photon Controller - persistent disk type: string required: - pdID type: object portworxVolume: - description: portworxVolume represents a portworx volume attached - and mounted on kubelets host machine properties: fsType: - description: fSType represents the filesystem type to - mount Must be a filesystem type supported by the host - operating system. Ex. "ext4", "xfs". Implicitly inferred - to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: projected items for all in one resources secrets, - configmaps, and downward API properties: defaultMode: - description: defaultMode are the mode bits used to set - permissions on created files by default. Must be an - octal value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and decimal - values, JSON requires decimal values for mode bits. - Directories within the path are not affected by this - setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set. format: int32 type: integer sources: - description: sources is the list of volume projections items: - description: Projection that may be projected along - with other supported volume types properties: configMap: - description: configMap information about the configMap - data to project properties: items: - description: items if unspecified, each key-value - pair in the Data field of the referenced ConfigMap - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the ConfigMap, the - volume setup will error unless it is marked - optional. Paths must be relative and may not - contain the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 - and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal - values for mode bits. If not specified, - the volume defaultMode will be used. - This might be in conflict with other - options that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative path - of the file to map the key to. May not - be an absolute path. May not contain - the path element '..'. May not start - with the string '..'. type: string required: - key @@ -14587,93 +6920,42 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional specify whether the ConfigMap - or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: downwardAPI information about the downwardAPI - data to project properties: items: - description: Items is a list of DownwardAPIVolume - file items: - description: DownwardAPIVolumeFile represents - information to create the file containing - the pod field properties: fieldRef: - description: 'Required: Selects a field - of the pod: only annotations, labels, - name and namespace are supported.' properties: apiVersion: - description: Version of the schema - the FieldPath is written in terms - of, defaults to "v1". type: string fieldPath: - description: Path of the field to - select in the specified API version. type: string required: - fieldPath type: object x-kubernetes-map-type: atomic mode: - description: 'Optional: mode bits used - to set permissions on this file, must - be an octal value between 0000 and 0777 - or a decimal value between 0 and 511. - YAML accepts both octal and decimal - values, JSON requires decimal values - for mode bits. If not specified, the - volume defaultMode will be used. This - might be in conflict with other options - that affect the file mode, like fsGroup, - and the result can be other mode bits - set.' format: int32 type: integer path: - description: '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 ''..''' type: string resourceFieldRef: - description: 'Selects a resource of the - container: only resources limits and - requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are - currently supported.' properties: containerName: - description: 'Container name: required - for volumes, optional for env vars' type: string divisor: anyOf: - type: integer - type: string - description: Specifies the output - format of the exposed resources, - defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: 'Required: resource to - select' type: string required: - resource @@ -14685,49 +6967,16 @@ spec: type: array type: object secret: - description: secret information about the secret - data to project properties: items: - description: items if unspecified, each key-value - pair in the Data field of the referenced Secret - will be projected into the volume as a file - whose name is the key and content is the value. - If specified, the listed keys will be projected - into the specified paths, and unlisted keys - will not be present. If a key is specified - which is not present in the Secret, the volume - setup will error unless it is marked optional. - Paths must be relative and may not contain - the '..' path or start with '..'. items: - description: Maps a string key to a path within - a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits - used to set permissions on this file. - Must be an octal value between 0000 - and 0777 or a decimal value between - 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal - values for mode bits. If not specified, - the volume defaultMode will be used. - This might be in conflict with other - options that affect the file mode, like - fsGroup, and the result can be other - mode bits set.' format: int32 type: integer path: - description: path is the relative path - of the file to map the key to. May not - be an absolute path. May not contain - the path element '..'. May not start - with the string '..'. type: string required: - key @@ -14735,45 +6984,19 @@ spec: type: object type: array name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, - kind, uid?' type: string optional: - description: optional field specify whether - the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: serviceAccountToken is information - about the serviceAccountToken data to project properties: audience: - description: audience is the intended audience - of the token. A recipient of a token must - identify itself with an identifier specified - in the audience of the token, and otherwise - should reject the token. The audience defaults - to the identifier of the apiserver. type: string expirationSeconds: - description: expirationSeconds is the requested - duration of validity of the service account - token. As the token approaches expiration, - the kubelet volume plugin will proactively - rotate the service account token. The kubelet - will start trying to rotate the token if the - token is older than 80 percent of its time - to live or if the token is older than 24 hours.Defaults - to 1 hour and must be at least 10 minutes. format: int64 type: integer path: - description: path is the path relative to the - mount point of the file to project the token - into. type: string required: - path @@ -14782,150 +7005,76 @@ spec: type: array type: object quobyte: - description: quobyte represents a Quobyte mount on the host - that shares a pod's lifetime properties: group: - description: group to map volume access to Default is - no group type: string readOnly: - description: readOnly here will force the Quobyte volume - to be mounted with read-only permissions. Defaults to - false. type: boolean registry: - description: registry represents a single or multiple - Quobyte Registry services specified as a string as host:port - pair (multiple entries are separated with commas) which - acts as the central registry for volumes type: string tenant: - description: tenant owning the given Quobyte volume in - the Backend Used with dynamically provisioned Quobyte - volumes, value is set by the plugin type: string user: - description: user to map volume access to Defaults to - serivceaccount user type: string volume: - description: volume is a string that references an already - created Quobyte volume by name. type: string required: - registry - volume type: object rbd: - description: 'rbd represents a Rados Block Device mount on - the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' properties: fsType: - description: 'fsType is the filesystem type of the volume - that you want to mount. Tip: Ensure that the filesystem - type is supported by the host operating system. Examples: - "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" - if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from - compromising the machine' type: string image: - description: 'image is the rados image name. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string keyring: - description: 'keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string monitors: - description: 'monitors is a collection of Ceph monitors. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' items: type: string type: array pool: - description: 'pool is the rados pool name. Default is - rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string readOnly: - description: 'readOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: boolean secretRef: - description: 'secretRef is name of the authentication - secret for RBDUser. If provided overrides keyring. Default - is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic user: - description: 'user is the rados user name. Default is - admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' type: string required: - image - monitors type: object scaleIO: - description: scaleIO represents a ScaleIO persistent volume - attached and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". type: string gateway: - description: gateway is the host address of the ScaleIO - API Gateway. type: string protectionDomain: - description: protectionDomain is the name of the ScaleIO - Protection Domain for the configured storage. type: string readOnly: - description: readOnly Defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: - description: secretRef references to the secret for ScaleIO - user and other sensitive information. If this is not - provided, Login operation will fail. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic sslEnabled: - description: sslEnabled Flag enable/disable SSL communication - with Gateway, default false type: boolean storageMode: - description: storageMode indicates whether the storage - for a volume should be ThickProvisioned or ThinProvisioned. - Default is ThinProvisioned. type: string storagePool: - description: storagePool is the ScaleIO Storage Pool associated - with the protection domain. type: string system: - description: system is the name of the storage system - as configured in ScaleIO. type: string volumeName: - description: volumeName is the name of a volume already - created in the ScaleIO system that is associated with - this volume source. type: string required: - gateway @@ -14933,54 +7082,19 @@ spec: - system type: object secret: - description: 'secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' properties: defaultMode: - description: 'defaultMode is Optional: mode bits used - to set permissions on created files by default. Must - be an octal value between 0000 and 0777 or a decimal - value between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for mode - bits. Defaults to 0644. Directories within the path - are not affected by this setting. This might be in conflict - with other options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer items: - description: items If unspecified, each key-value pair - in the Data field of the referenced Secret will be projected - into the volume as a file whose name is the key and - content is the value. If specified, the listed keys - will be projected into the specified paths, and unlisted - keys will not be present. If a key is specified which - is not present in the Secret, the volume setup will - error unless it is marked optional. Paths must be relative - and may not contain the '..' path or start with '..'. items: - description: Maps a string key to a path within a volume. properties: key: - description: key is the key to project. type: string mode: - description: 'mode is Optional: mode bits used to - set permissions on this file. Must be an octal - value between 0000 and 0777 or a decimal value - between 0 and 511. YAML accepts both octal and - decimal values, JSON requires decimal values for - mode bits. If not specified, the volume defaultMode - will be used. This might be in conflict with other - options that affect the file mode, like fsGroup, - and the result can be other mode bits set.' format: int32 type: integer path: - description: path is the relative path of the file - to map the key to. May not be an absolute path. - May not contain the path element '..'. May not - start with the string '..'. type: string required: - key @@ -14988,77 +7102,36 @@ spec: type: object type: array optional: - description: optional field specify whether the Secret - or its keys must be defined type: boolean secretName: - description: 'secretName is the name of the secret in - the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' type: string type: object storageos: - description: storageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. properties: fsType: - description: fsType is the filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string readOnly: - description: readOnly defaults to false (read/write). - ReadOnly here will force the ReadOnly setting in VolumeMounts. type: boolean secretRef: - description: secretRef specifies the secret to use for - obtaining the StorageOS API credentials. If not specified, - default values will be attempted. properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' type: string type: object x-kubernetes-map-type: atomic volumeName: - description: volumeName is the human-readable name of - the StorageOS volume. Volume names are only unique - within a namespace. type: string volumeNamespace: - description: volumeNamespace specifies the scope of the - volume within StorageOS. If no namespace is specified - then the Pod's namespace will be used. This allows - the Kubernetes name scoping to be mirrored within StorageOS - for tighter integration. Set VolumeName to any name - to override the default behaviour. Set to "default" - if you are not using namespaces within StorageOS. Namespaces - that do not pre-exist within StorageOS will be created. type: string type: object vsphereVolume: - description: vsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine properties: fsType: - description: fsType is filesystem type to mount. Must - be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred - to be "ext4" if unspecified. type: string storagePolicyID: - description: storagePolicyID is the storage Policy Based - Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: storagePolicyName is the storage Policy Based - Management (SPBM) profile name. type: string volumePath: - description: volumePath is the path that identifies vSphere - volume vmdk type: string required: - volumePath @@ -15071,11 +7144,8 @@ spec: - containers type: object timeout: - description: Timeout defines the maximum amount of time the Serving - should take to execute before the Serving is running. type: string tracing: - description: Tracing is the config of tracing. properties: baggage: additionalProperties: @@ -15119,24 +7189,17 @@ spec: - provider type: object triggers: - description: Triggers used to trigger the Function. properties: dapr: items: properties: inputName: - description: 'Deprecated: Only for compatibility with v1beta1' type: string name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string topic: type: string type: - description: Type is the type of the component, if it is not - set, controller will get it automatically. type: string required: - name @@ -15145,32 +7208,19 @@ spec: http: properties: engine: - description: Http function runtime engine, can be set to knative - or keda, default to knative if not set type: string port: - description: The port on which the function will be invoked format: int32 type: integer route: - description: Information needed to make HTTPRoute. Will attempt - to make HTTPRoute using the default Gateway resource if Route - is nil. properties: gatewayRef: - description: GatewayRef references the Gateway resources - that a Route wants to be attached to. properties: name: - description: Name is the name of the referent. It refers - to the name of a Gateway resource. maxLength: 253 minLength: 1 type: string namespace: - description: Namespace is the namespace of the referent. - When unspecified, this refers to the local namespace - of the Route. maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ @@ -15180,23 +7230,7 @@ spec: - namespace type: object hostnames: - description: Hostnames defines a set of hostname that should - match against the HTTP Host header to select a HTTPRoute - to process the request. items: - description: "Hostname is the fully qualified domain name - of a network host. This matches the RFC 1123 definition - of a hostname with 2 notable exceptions: \n 1. IPs are - not allowed. 2. A hostname may be prefixed with a wildcard - label (`*.`). The wildcard label must appear by itself - as the first label. \n Hostname can be \"precise\" which - is a domain name without the terminating dot of a network - host (e.g. \"foo.example.com\") or \"wildcard\", which - is a domain name prefixed with a single wildcard label - (e.g. `*.example.com`). \n Note that as per RFC1035 - and RFC1123, a *label* must consist of lower case alphanumeric - characters or '-', and must start and end with an alphanumeric - character. No other punctuation is allowed." maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -15204,75 +7238,26 @@ spec: maxItems: 16 type: array rules: - description: Rules are a list of HTTP matchers, filters - and actions. items: - description: HTTPRouteRule defines semantics for matching - an HTTP request based on conditions (matches), processing - it (filters), and forwarding the request to an API object - (backendRefs). properties: backendRefs: - description: "If unspecified or invalid (refers to - a non-existent resource or a Service with no endpoints), - the rule performs no forwarding. If there are also - no filters specified that would result in a response - being sent, a HTTP 503 status code is returned. - 503 responses must be sent so that the overall weight - is respected; if an invalid backend is requested - to have 80% of requests, then 80% of requests must - get a 503 instead. \n Support: Core for Kubernetes - Service Support: Custom for any other resource \n - Support for weight: Core" items: - description: HTTPBackendRef defines how a HTTPRoute - should forward an HTTP request. properties: filters: - description: "Filters defined at this level - should be executed if and only if the request - is being forwarded to the backend defined - here. \n Support: Custom (For broader support - of filters, use the Filters field in HTTPRouteRule.)" items: - description: HTTPRouteFilter defines processing - steps that must be completed during the - request or response lifecycle. HTTPRouteFilters - are meant as an extension point to express - processing that may be done in Gateway implementations. - Some examples include request or response - modification, implementing authentication - strategies, rate-limiting, and traffic shaping. - API guarantee/conformance is defined based - on the type of the filter. properties: extensionRef: - description: "ExtensionRef is an optional, - implementation-specific extension to - the \"filter\" behavior. For example, - resource \"myroutefilter\" in group - \"networking.example.net\"). ExtensionRef - MUST NOT be used for core and extended - filters. \n Support: Implementation-specific" properties: group: - description: Group is the group of - the referent. For example, "networking.k8s.io". - When unspecified (empty string), - core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the - referent. maxLength: 253 minLength: 1 type: string @@ -15282,47 +7267,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier defines - a schema for a filter that modifies - request headers. \n Support: Core" properties: add: - description: "Add adds the given header(s) - (name, value) to the request before - the action. It appends to any existing - values associated with the header - name. \n Input: GET /foo HTTP/1.1 - my-header: foo \n Config: add: - - name: \"my-header\" value: \"bar\" - \n Output: GET /foo HTTP/1.1 my-header: - foo my-header: bar" items: - description: HTTPHeader represents - an HTTP Header name and value - as defined by RFC 7230. properties: name: - description: "Name is the name - of the HTTP Header to be matched. - Name matching MUST be case - insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify - equivalent header names, the - first entry with an equivalent - name MUST be considered for - a match. Subsequent entries - with an equivalent header - name MUST be ignored. Due - to the case-insensitivity - of header names, \"foo\" and - \"Foo\" are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value - of HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -15336,56 +7290,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given header(s) - from the HTTP request before the - action. The value of Remove is a - list of HTTP header names. Note - that the header names are case-insensitive - (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 my-header1: - foo my-header2: bar my-header3: - baz \n Config: remove: [\"my-header1\", - \"my-header3\"] \n Output: GET /foo - HTTP/1.1 my-header2: bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the request - with the given header (name, value) - before the action. \n Input: GET - /foo HTTP/1.1 my-header: foo \n - Config: set: - name: \"my-header\" - value: \"bar\" \n Output: GET /foo - HTTP/1.1 my-header: bar" items: - description: HTTPHeader represents - an HTTP Header name and value - as defined by RFC 7230. properties: name: - description: "Name is the name - of the HTTP Header to be matched. - Name matching MUST be case - insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify - equivalent header names, the - first entry with an equivalent - name MUST be considered for - a match. Subsequent entries - with an equivalent header - name MUST be ignored. Due - to the case-insensitivity - of header names, \"foo\" and - \"Foo\" are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value - of HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -15400,87 +7317,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines a - schema for a filter that mirrors requests. - Requests are sent to the specified destination, - but responses from that destination - are ignored. \n Support: Extended" properties: backendRef: - description: "BackendRef references - a resource where mirrored requests - are sent. \n If the referent cannot - be found, this BackendRef is invalid - and must be dropped from the Gateway. - The controller must ensure the \"ResolvedRefs\" - condition on the Route status is - set to `status: False` and not configure - this backend in the underlying implementation. - \n If there is a cross-namespace - reference to an *existing* object - that is not allowed by a ReferencePolicy, - the controller must ensure the \"ResolvedRefs\" - \ condition on the Route is set - to `status: False`, with the \"RefNotPermitted\" - reason and not configure this backend - in the underlying implementation. - \n In either error case, the Message - of the `ResolvedRefs` Condition - should be used to provide more detail - about the problem. \n Support: Extended - for Kubernetes Service Support: - Custom for any other resource" properties: group: default: "" - description: Group is the group - of the referent. For example, - "networking.k8s.io". When unspecified - (empty string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the - referent. For example "HTTPRoute" - or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name - of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the - namespace of the backend. When - unspecified, the local namespace - is inferred. \n Note that when - a namespace is specified, a - ReferencePolicy object is required - in the referent namespace to - allow that namespace's owner - to accept the reference. See - the ReferencePolicy documentation - for details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the - destination port number to use - for this resource. Port is required - when the referent is a Kubernetes - Service. For other resources, - destination port might be derived - from the referent resource or - this field. format: int32 maximum: 65535 minimum: 1 @@ -15492,84 +7352,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines - a schema for a filter that responds - to the request with an HTTP redirection. - \n Support: Core" properties: hostname: - description: "Hostname is the hostname - to be used in the value of the `Location` - header in the response. When empty, - the hostname of the request is used. - \n Support: Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port to - be used in the value of the `Location` - header in the response. When empty, - port (if specified) of the request - is used. \n Support: Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme - to be used in the value of the `Location` - header in the response. When empty, - the scheme of the request is used. - \n Support: Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the HTTP - status code to be used in response. - \n Support: Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the type - of filter to apply. As with other API - fields, types are classified into three - conformance levels: \n - Core: Filter - types and their corresponding configuration - defined by \"Support: Core\" in this - package, e.g. \"RequestHeaderModifier\". - All implementations must support core - filters. \n - Extended: Filter types - and their corresponding configuration - defined by \"Support: Extended\" in - this package, e.g. \"RequestMirror\". - Implementers are encouraged to support - extended filters. \n - Custom: Filters - that are defined and supported by specific - vendors. In the future, filters showing - convergence in behavior across multiple - implementations will be considered for - inclusion in extended or core conformance - levels. Filter-specific configuration - for such filters is specified using - the ExtensionRef field. `Type` should - be set to \"ExtensionRef\" for custom - filters. \n Implementers are encouraged - to define custom implementation types - to extend the core API with implementation-specific - behavior. \n If a reference to a custom - filter type cannot be resolved, the - filter MUST NOT be skipped. Instead, - requests that would have been processed - by that filter MUST receive a HTTP error - response." enum: - RequestHeaderModifier - RequestMirror @@ -15583,66 +7389,31 @@ spec: type: array group: default: "" - description: Group is the group of the referent. - For example, "networking.k8s.io". When unspecified - (empty string), core API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. For - example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace of - the backend. When unspecified, the local namespace - is inferred. \n Note that when a namespace - is specified, a ReferencePolicy object is - required in the referent namespace to allow - that namespace's owner to accept the reference. - See the ReferencePolicy documentation for - details. \n Support: Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination - port number to use for this resource. Port - is required when the referent is a Kubernetes - Service. For other resources, destination - port might be derived from the referent resource - or this field. format: int32 maximum: 65535 minimum: 1 type: integer weight: default: 1 - description: "Weight specifies the proportion - of requests forwarded to the referenced backend. - This is computed as weight/(sum of all weights - in this BackendRefs list). For non-zero values, - there may be some epsilon from the exact proportion - defined here depending on the precision an - implementation supports. Weight is not a percentage - and the sum of weights does not need to equal - 100. \n If only one backend is specified and - it has a weight greater than 0, 100% of the - traffic is forwarded to that backend. If weight - is set to 0, no traffic should be forwarded - for this entry. If unspecified, weight defaults - to 1. \n Support for this field varies based - on the context where used." format: int32 maximum: 1000000 minimum: 0 @@ -15653,54 +7424,20 @@ spec: maxItems: 16 type: array filters: - description: "Filters define the filters that are - applied to requests that match this rule. \n The - effects of ordering of multiple behaviors are currently - unspecified. This can change in the future based - on feedback during the alpha stage. \n Conformance-levels - at this level are defined based on the type of filter: - \n - ALL core filters MUST be supported by all implementations. - - Implementers are encouraged to support extended - filters. - Implementation-specific custom filters - have no API guarantees across implementations. \n - Specifying a core filter multiple times has unspecified - or custom conformance. \n Support: Core" items: - description: HTTPRouteFilter defines processing - steps that must be completed during the request - or response lifecycle. HTTPRouteFilters are meant - as an extension point to express processing that - may be done in Gateway implementations. Some examples - include request or response modification, implementing - authentication strategies, rate-limiting, and - traffic shaping. API guarantee/conformance is - defined based on the type of the filter. properties: extensionRef: - description: "ExtensionRef is an optional, implementation-specific - extension to the \"filter\" behavior. For - example, resource \"myroutefilter\" in group - \"networking.example.net\"). ExtensionRef - MUST NOT be used for core and extended filters. - \n Support: Implementation-specific" properties: group: - description: Group is the group of the referent. - For example, "networking.k8s.io". When - unspecified (empty string), core API group - is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the referent. maxLength: 253 minLength: 1 type: string @@ -15710,44 +7447,16 @@ spec: - name type: object requestHeaderModifier: - description: "RequestHeaderModifier defines - a schema for a filter that modifies request - headers. \n Support: Core" properties: add: - description: "Add adds the given header(s) - (name, value) to the request before the - action. It appends to any existing values - associated with the header name. \n Input: - GET /foo HTTP/1.1 my-header: foo \n Config: - add: - name: \"my-header\" value: \"bar\" - \n Output: GET /foo HTTP/1.1 my-header: - foo my-header: bar" items: - description: HTTPHeader represents an - HTTP Header name and value as defined - by RFC 7230. properties: name: - description: "Name is the name of - the HTTP Header to be matched. Name - matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with - an equivalent name MUST be considered - for a match. Subsequent entries - with an equivalent header name MUST - be ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" - are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of - HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -15761,52 +7470,19 @@ spec: - name x-kubernetes-list-type: map remove: - description: "Remove the given header(s) - from the HTTP request before the action. - The value of Remove is a list of HTTP - header names. Note that the header names - are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2). - \n Input: GET /foo HTTP/1.1 my-header1: - foo my-header2: bar my-header3: baz \n - Config: remove: [\"my-header1\", \"my-header3\"] - \n Output: GET /foo HTTP/1.1 my-header2: - bar" items: type: string maxItems: 16 type: array set: - description: "Set overwrites the request - with the given header (name, value) before - the action. \n Input: GET /foo HTTP/1.1 - my-header: foo \n Config: set: - name: - \"my-header\" value: \"bar\" \n Output: - GET /foo HTTP/1.1 my-header: bar" items: - description: HTTPHeader represents an - HTTP Header name and value as defined - by RFC 7230. properties: name: - description: "Name is the name of - the HTTP Header to be matched. Name - matching MUST be case insensitive. - (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, the first entry with - an equivalent name MUST be considered - for a match. Subsequent entries - with an equivalent header name MUST - be ignored. Due to the case-insensitivity - of header names, \"foo\" and \"Foo\" - are considered equivalent." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string value: - description: Value is the value of - HTTP Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -15821,81 +7497,30 @@ spec: x-kubernetes-list-type: map type: object requestMirror: - description: "RequestMirror defines a schema - for a filter that mirrors requests. Requests - are sent to the specified destination, but - responses from that destination are ignored. - \n Support: Extended" properties: backendRef: - description: "BackendRef references a resource - where mirrored requests are sent. \n If - the referent cannot be found, this BackendRef - is invalid and must be dropped from the - Gateway. The controller must ensure the - \"ResolvedRefs\" condition on the Route - status is set to `status: False` and not - configure this backend in the underlying - implementation. \n If there is a cross-namespace - reference to an *existing* object that - is not allowed by a ReferencePolicy, the - controller must ensure the \"ResolvedRefs\" - \ condition on the Route is set to `status: - False`, with the \"RefNotPermitted\" reason - and not configure this backend in the - underlying implementation. \n In either - error case, the Message of the `ResolvedRefs` - Condition should be used to provide more - detail about the problem. \n Support: - Extended for Kubernetes Service Support: - Custom for any other resource" properties: group: default: "" - description: Group is the group of the - referent. For example, "networking.k8s.io". - When unspecified (empty string), core - API group is inferred. maxLength: 253 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string kind: default: Service - description: Kind is kind of the referent. - For example "HTTPRoute" or "Service". maxLength: 63 minLength: 1 pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$ type: string name: - description: Name is the name of the - referent. maxLength: 253 minLength: 1 type: string namespace: - description: "Namespace is the namespace - of the backend. When unspecified, - the local namespace is inferred. \n - Note that when a namespace is specified, - a ReferencePolicy object is required - in the referent namespace to allow - that namespace's owner to accept the - reference. See the ReferencePolicy - documentation for details. \n Support: - Core" maxLength: 63 minLength: 1 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string port: - description: Port specifies the destination - port number to use for this resource. - Port is required when the referent - is a Kubernetes Service. For other - resources, destination port might - be derived from the referent resource - or this field. format: int32 maximum: 65535 minimum: 1 @@ -15907,77 +7532,30 @@ spec: - backendRef type: object requestRedirect: - description: "RequestRedirect defines a schema - for a filter that responds to the request - with an HTTP redirection. \n Support: Core" properties: hostname: - description: "Hostname is the hostname to - be used in the value of the `Location` - header in the response. When empty, the - hostname of the request is used. \n Support: - Core" maxLength: 253 minLength: 1 pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ type: string port: - description: "Port is the port to be used - in the value of the `Location` header - in the response. When empty, port (if - specified) of the request is used. \n - Support: Extended" format: int32 maximum: 65535 minimum: 1 type: integer scheme: - description: "Scheme is the scheme to be - used in the value of the `Location` header - in the response. When empty, the scheme - of the request is used. \n Support: Extended" enum: - http - https type: string statusCode: default: 302 - description: "StatusCode is the HTTP status - code to be used in response. \n Support: - Core" enum: - 301 - 302 type: integer type: object type: - description: "Type identifies the type of filter - to apply. As with other API fields, types - are classified into three conformance levels: - \n - Core: Filter types and their corresponding - configuration defined by \"Support: Core\" - in this package, e.g. \"RequestHeaderModifier\". - All implementations must support core filters. - \n - Extended: Filter types and their corresponding - configuration defined by \"Support: Extended\" - in this package, e.g. \"RequestMirror\". Implementers - are encouraged to support extended filters. - \n - Custom: Filters that are defined and - supported by specific vendors. In the future, - filters showing convergence in behavior across - multiple implementations will be considered - for inclusion in extended or core conformance - levels. Filter-specific configuration for - such filters is specified using the ExtensionRef - field. `Type` should be set to \"ExtensionRef\" - for custom filters. \n Implementers are encouraged - to define custom implementation types to extend - the core API with implementation-specific - behavior. \n If a reference to a custom filter - type cannot be resolved, the filter MUST NOT - be skipped. Instead, requests that would have - been processed by that filter MUST receive - a HTTP error response." enum: - RequestHeaderModifier - RequestMirror @@ -15994,99 +7572,23 @@ spec: - path: type: PathPrefix value: / - description: "Matches define conditions used for matching - the rule against incoming HTTP requests. Each match - is independent, i.e. this rule will be matched if - **any** one of the matches is satisfied. \n For - example, take the following matches configuration: - \n ``` matches: - path: value: \"/foo\" headers: - - name: \"version\" value: \"v2\" - path: value: - \"/v2/foo\" ``` \n For a request to match against - this rule, a request must satisfy EITHER of the - two conditions: \n - path prefixed with `/foo` AND - contains the header `version: v2` - path prefix - of `/v2/foo` \n See the documentation for HTTPRouteMatch - on how to specify multiple match conditions that - should be ANDed together. \n If no matches are specified, - the default is a prefix path match on \"/\", which - has the effect of matching every HTTP request. \n - Proxy or Load Balancer routing configuration generated - from HTTPRoutes MUST prioritize rules based on the - following criteria, continuing on ties. Precedence - must be given to the the Rule with the largest number - of: \n * Characters in a matching non-wildcard hostname. - * Characters in a matching hostname. * Characters - in a matching path. * Header matches. * Query param - matches. \n If ties still exist across multiple - Routes, matching precedence MUST be determined in - order of the following criteria, continuing on ties: - \n * The oldest Route based on creation timestamp. - * The Route appearing first in alphabetical order - by \"/\". \n If ties still exist - within the Route that has been given precedence, - matching precedence MUST be granted to the first - matching rule meeting the above criteria." items: - description: "HTTPRouteMatch defines the predicate - used to match requests to a given action. Multiple - match types are ANDed together, i.e. the match - will evaluate to true only if all conditions are - satisfied. \n For example, the match below will - match a HTTP request only if its path starts with - `/foo` AND it contains the `version: v1` header: - \n ``` match: path: value: \"/foo\" headers: - - name: \"version\" value \"v1\" ```" properties: headers: - description: Headers specifies HTTP request - header matchers. Multiple match values are - ANDed together, meaning, a request must match - all the specified headers to select the route. items: - description: HTTPHeaderMatch describes how - to select a HTTP route by matching HTTP - request headers. properties: name: - description: "Name is the name of the - HTTP Header to be matched. Name matching - MUST be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2). - \n If multiple entries specify equivalent - header names, only the first entry with - an equivalent name MUST be considered - for a match. Subsequent entries with - an equivalent header name MUST be ignored. - Due to the case-insensitivity of header - names, \"foo\" and \"Foo\" are considered - equivalent. \n When a header is repeated - in an HTTP request, it is implementation-specific - behavior as to how this is represented. - Generally, proxies should follow the - guidance from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2 - regarding processing a repeated header, - with special handling for \"Set-Cookie\"." maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$ type: string type: default: Exact - description: "Type specifies how to match - against the value of the header. \n - Support: Core (Exact) \n Support: Custom - (RegularExpression) \n Since RegularExpression - HeaderMatchType has custom conformance, - implementations can support POSIX, PCRE - or any other dialects of regular expressions. - Please read the implementation's documentation - to determine the supported dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of HTTP - Header to be matched. maxLength: 4096 minLength: 1 type: string @@ -16100,10 +7602,6 @@ spec: - name x-kubernetes-list-type: map method: - description: "Method specifies HTTP method matcher. - When specified, this route will be matched - only if the request has the specified method. - \n Support: Extended" enum: - GET - HEAD @@ -16119,16 +7617,9 @@ spec: default: type: PathPrefix value: / - description: Path specifies a HTTP request path - matcher. If this field is not specified, a - default prefix match on the "/" path is provided. properties: type: default: PathPrefix - description: "Type specifies how to match - against the path Value. \n Support: Core - (Exact, PathPrefix) \n Support: Custom - (RegularExpression)" enum: - Exact - PathPrefix @@ -16136,48 +7627,23 @@ spec: type: string value: default: / - description: Value of the HTTP path to match - against. maxLength: 1024 type: string type: object queryParams: - description: QueryParams specifies HTTP query - parameter matchers. Multiple match values - are ANDed together, meaning, a request must - match all the specified query parameters to - select the route. items: - description: HTTPQueryParamMatch describes - how to select a HTTP route by matching HTTP - query parameters. properties: name: - description: Name is the name of the HTTP - query param to be matched. This must - be an exact string match. (See https://tools.ietf.org/html/rfc7230#section-2.7.3). maxLength: 256 minLength: 1 type: string type: default: Exact - description: "Type specifies how to match - against the value of the query parameter. - \n Support: Extended (Exact) \n Support: - Custom (RegularExpression) \n Since - RegularExpression QueryParamMatchType - has custom conformance, implementations - can support POSIX, PCRE or any other - dialects of regular expressions. Please - read the implementation's documentation - to determine the supported dialect." enum: - Exact - RegularExpression type: string value: - description: Value is the value of HTTP - query param to be matched. maxLength: 1024 minLength: 1 type: string @@ -16204,15 +7670,10 @@ spec: dapr: properties: name: - description: The name of the dapr component, the component - can be defined in the `bindings`, `pubsub`, or `states`, - or an existing component. type: string topic: type: string type: - description: Type is the type of the component, if it - is not set, controller will get it automatically. type: string required: - name @@ -16221,17 +7682,13 @@ spec: type: array type: object version: - description: Function version in format like v1.0.0 type: string workloadType: - description: How to run the function, known values are Deployment or - StatefulSet, default is Deployment. type: string required: - image type: object status: - description: ServingStatus defines the observed state of Serving properties: message: type: string @@ -16242,12 +7699,10 @@ spec: resourceRef: additionalProperties: type: string - description: Associate resources. type: object state: type: string url: - description: Service holds the service name used to access the serving. type: string type: object type: object diff --git a/openfunction/crds/trigger.yaml b/openfunction/crds/trigger.yaml index 689f345..faea955 100644 --- a/openfunction/crds/trigger.yaml +++ b/openfunction/crds/trigger.yaml @@ -21,76 +21,49 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Trigger is the Schema for the triggers API properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: - description: TriggerSpec defines the desired state of Trigger properties: eventBus: - description: EventBus allows you to specify a specific EventBus to be - used instead of the "default" one type: string inputs: additionalProperties: properties: event: - description: Event, name of event type: string eventSource: - description: EventSource, name of EventSource type: string namespace: - description: Namespace, namespace of EventSource, default to namespace - of Trigger type: string required: - event - eventSource type: object - description: Inputs defines the event sources associated with the Trigger type: object logLevel: - description: The logging level of the event source handler, e.g. "1", - "2", "3". The level increases as the value increases, default is "1". type: string subscribers: - description: Subscribers defines the subscribers associated with the - Trigger items: properties: condition: - description: Condition for judging events type: string deadLetterSink: - description: SinkSpec specifies the receiver of the events an - EventSource received, sinks in the Uri format have higher priority - than sinks in Reference format. properties: ref: properties: apiVersion: - description: API version of the referent. type: string kind: - description: Kind of the referent. type: string name: - description: Name of the referent. type: string namespace: - description: Namespace of the referent. type: string required: - apiVersion @@ -103,22 +76,16 @@ spec: deadLetterTopic: type: string sink: - description: Sink and DeadLetterSink are used to handle subscribers - who use the synchronous call method properties: ref: properties: apiVersion: - description: API version of the referent. type: string kind: - description: Kind of the referent. type: string name: - description: Name of the referent. type: string namespace: - description: Namespace of the referent. type: string required: - apiVersion @@ -129,8 +96,6 @@ spec: type: string type: object topic: - description: Topic and DeadLetterTopic are used to handle subscribers - who use the asynchronous call method type: string required: - condition @@ -142,17 +107,13 @@ spec: - subscribers type: object status: - description: TriggerStatus defines the observed state of Trigger properties: conditions: items: properties: message: - description: A human readable message indicating details about - the transition. type: string reason: - description: The reason for the condition's last transition. enum: - EventSourceFunctionCreated - ErrorCreatingEventSource @@ -170,13 +131,10 @@ spec: - TriggerFunctionCreated type: string status: - description: Status of the condition, one of True, False, Unknown. type: string timestamp: - description: Timestamp of the condition type: string type: - description: Type of condition enum: - Created - Error