apiVersion: v1
kind: Namespace
metadata:
  name: litmus
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: litmus
  namespace: litmus
  labels:
    app.kubernetes.io/name: litmus
    # provide unique instance-id if applicable
    # app.kubernetes.io/instance: litmus-abcxzy
    app.kubernetes.io/version: v3.0.0
    app.kubernetes.io/component: operator-serviceaccount
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/managed-by: kubectl
    name: litmus
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: litmus
  labels:
    app.kubernetes.io/name: litmus
    # provide unique instance-id if applicable
    # app.kubernetes.io/instance: litmus-abcxzy
    app.kubernetes.io/version: v3.0.0
    app.kubernetes.io/component: operator-clusterrole
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/managed-by: kubectl
    name: litmus
rules:
  # *******************************************************************
  # Permissions needed for creation and discovery of chaos component
  # *******************************************************************

# for checking app parent resources if they are eligible chaos candidates
- apiGroups: [""]
  resources: ["replicationcontrollers"]
  verbs: ["get","list"]

# for checking app parent resources if they are eligible chaos candidates
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get","list"]

# for checking (openshift) app parent resources if they are eligible chaos candidates
- apiGroups: ["apps.openshift.io"]
  resources: ["deploymentconfigs"]
  verbs: ["get","list"]

# for operator to perform asset discovery of available resources on the cluster which can be picked as a target for chaos
- apiGroups: ["apps"]
  resources: ["deployments", "daemonsets", "replicasets", "statefulsets"]
  verbs: ["get","list"]

# for operator to perform asset discovery of experiment jobs
- apiGroups: ["batch"]
  resources: ["jobs"]
  verbs: ["get","list"]

# for checking (argo) app parent resources if they are eligible chaos candidates
- apiGroups: ["argoproj.io"]
  resources: ["rollouts"]
  verbs: ["get","list"]

# for creating and monitoring the chaos-runner pods
- apiGroups: [""]
  resources: ["pods","events"]
  verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]

# for operator to create or get the service for mertics
- apiGroups: [""]
  resources: ["services"]
  verbs: ["create","update","get","list","watch","delete"]

# for operator to create and manage configmap to handle race condition
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create","update","get","list","watch","delete"]

# for operator to perform removal of experiment jobs
- apiGroups: ["batch"]
  resources: ["jobs"]
  verbs: ["delete","deletecollection"]

# for creation, status polling and deletion of litmus chaos resources used within an experiment
- apiGroups: ["litmuschaos.io"]
  resources: ["chaosengines","chaosexperiments","chaosresults"]
  verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]

# for validation of existance of chaosresult crd
- apiGroups: ["apiextensions.k8s.io"]
  resources: ["customresourcedefinitions"]
  verbs: ["list","get"]

# for managing litmus resource deletion
- apiGroups: ["litmuschaos.io"]
  resources: ["chaosengines/finalizers"]
  verbs: ["update"]

# for leader election in case of multireplica
- apiGroups: ["coordination.k8s.io"]
  resources: ["leases"]
  verbs: ["get","create","list","update","delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: litmus
  labels:
    app.kubernetes.io/name: litmus
    # provide unique instance-id if applicable
    # app.kubernetes.io/instance: litmus-abcxzy
    app.kubernetes.io/version: v3.0.0
    app.kubernetes.io/component: operator-clusterrolebinding
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/managed-by: kubectl
    name: litmus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: litmus
subjects:
- kind: ServiceAccount
  name: litmus
  namespace: litmus
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: litmus
    # provide unique instance-id if applicable
    # app.kubernetes.io/instance: litmus-abcxzy
    app.kubernetes.io/version: v3.0.0
    app.kubernetes.io/component: operator
    app.kubernetes.io/part-of: litmus
    app.kubernetes.io/managed-by: kubectl
    name: litmus
  name: chaos-operator-ce
  namespace: litmus
spec:
  replicas: 1
  selector:
    matchLabels:
      name: chaos-operator
  template:
    metadata:
      labels:
        app.kubernetes.io/name: litmus
        # provide unique instance-id if applicable
        # app.kubernetes.io/instance: litmus-abcxzy
        app.kubernetes.io/version: v3.0.0
        app.kubernetes.io/component: operator
        app.kubernetes.io/part-of: litmus
        app.kubernetes.io/managed-by: kubectl
        name: chaos-operator
    spec:
      serviceAccountName: litmus
      containers:
        - name: chaos-operator
          image: litmuschaos/chaos-operator:3.0.0
          command:
          - chaos-operator
          args:
          - -leader-elect=true
          imagePullPolicy: Always
          env:
            - name: CHAOS_RUNNER_IMAGE
              value: "litmuschaos/chaos-runner:3.0.0"
            - name: WATCH_NAMESPACE
              value: ""
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: OPERATOR_NAME
              value: "chaos-operator"
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: chaosengines.litmuschaos.io
spec:
  group: litmuschaos.io
  names:
    kind: ChaosEngine
    listKind: ChaosEngineList
    plural: chaosengines
    singular: chaosengine
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          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/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/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              x-kubernetes-preserve-unknown-fields: true
              type: object
              properties:
                jobCleanUpPolicy:
                  type: string
                  pattern: ^(delete|retain)$
                  # alternate ways to do this in case of complex pattern matches
                  #oneOf:
                  #  - pattern: '^delete$'
                  #  - pattern: '^retain$'
                defaultHealthCheck:
                  type: boolean
                appinfo:
                  type: object
                  properties:
                    appkind:
                      type: string
                      pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
                    applabel:
                      type: string
                    appns:
                      type: string
                selectors:
                  type: object
                  properties:
                    pods:
                      items:
                        properties:
                          names:
                            type: string
                          namespace:
                            type: string
                        required:
                          - names
                          - namespace
                        type: object
                      type: array
                    workloads:
                      items:
                        properties:
                          kind:
                            type: string
                            pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
                          labels:
                            type: string
                          names:
                            type: string
                          namespace:
                            type: string
                        oneOf:
                          - required: [ names ]
                          - required: [ labels ]
                        required:
                          - kind
                          - namespace
                        type: object
                      type: array
                  oneOf:
                    - required: [ pods ]
                    - required: [ workloads ]
                auxiliaryAppInfo:
                  type: string
                engineState:
                  type: string
                  pattern: ^(active|stop)$
                chaosServiceAccount:
                  type: string
                terminationGracePeriodSeconds:
                  type: integer
                components:
                  type: object
                  properties:
                    sidecar:
                      type: array
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                        properties:
                          env:
                            description: ENV contains ENV passed to the sidecar container
                            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 previous defined environment
                                  variables in the container and any service environment
                                  variables. If a variable cannot be resolved, the
                                  reference in the input string will be unchanged.
                                  The $(VAR_NAME) syntax can be escaped with a double
                                  $$, ie: $$(VAR_NAME). Escaped references will never
                                  be expanded, regardless of whether the variable
                                  exists or not. Defaults to "".'
                                  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
                                    fieldRef:
                                      description: 'Selects a field of the pod: supports
                                      metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`,
                                      `metadata.annotations[''<KEY>'']`, 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
                                    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
                                    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
                                      type: object
                                  type: object
                              required:
                                - name
                              type: object
                            type: array
                          envFrom:
                            description: EnvFrom for the sidecar container
                            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
                                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
                              type: object
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          secrets:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                name:
                                  type: string
                              required:
                                - mountPath
                                - name
                              type: object
                            type: array
                    runner:
                      x-kubernetes-preserve-unknown-fields: true
                      type: object
                      properties:
                        image:
                          type: string
                        type:
                          type: string
                          pattern: ^(go)$
                        runnerAnnotations:
                          type: object
                        runnerLabels:
                          type: object
                          additionalProperties:
                            type: string
                            properties:
                              key:
                                type: string
                                minLength: 1
                              value:
                                type: string
                                minLength: 1
                        tolerations:
                          description: Pod's tolerations.
                          items:
                            description: The pod with this Toleration tolerates any taint matches the <key,value,effect> using the matching operator <operator>.
                            properties:
                              effect:
                                description: Effect to match. Empty means all effects.
                                type: string
                              key:
                                description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
                                type: string
                              operator:
                                description: Operators are Exists or Equal. Defaults to Equal.
                                type: string
                              tolerationSeconds:
                                description: Period of time the toleration tolerates the taint.
                                format: int64
                                type: integer
                              value:
                                description: If the operator is Exists, the value should be empty, otherwise just a regular string.
                                type: string
                            type: object
                          type: array
                experiments:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      spec:
                        type: object
                        properties:
                          probe:
                            type: array
                            items:
                              type: object
                              required:
                                - name
                                - type
                                - mode
                                - runProperties
                              properties:
                                name:
                                  type: string
                                type:
                                  type: string
                                  minLength: 1
                                  pattern: ^(k8sProbe|httpProbe|cmdProbe|promProbe)$
                                k8sProbe/inputs:
                                  type: object
                                  required:
                                    - version
                                    - resource
                                    - operation
                                  properties:
                                    group:
                                      type: string
                                    version:
                                      type: string
                                    resource:
                                      type: string
                                    namespace:
                                      type: string
                                    resourceNames:
                                      type: string
                                    fieldSelector:
                                      type: string
                                    labelSelector:
                                      type: string
                                    operation:
                                      type: string
                                      pattern: ^(present|absent|create|delete)$
                                      minLength: 1
                                cmdProbe/inputs:
                                  type: object
                                  required:
                                    - command
                                    - comparator
                                  properties:
                                    command:
                                      type: string
                                      minLength: 1
                                    comparator:
                                      type: object
                                      required:
                                        - type
                                        - criteria
                                        - value
                                      properties:
                                        type:
                                          type: string
                                          minLength: 1
                                          pattern: ^(int|float|string)$
                                        criteria:
                                          type: string
                                        value:
                                          type: string
                                    source:
                                      description: The external pod where we have to run the
                                        probe commands. It will run the commands inside the experiment pod itself(inline mode) if source contains a nil value
                                      required:
                                        - image
                                      properties:
                                        annotations:
                                          additionalProperties:
                                            type: string
                                          description: Annotations for the source pod
                                          type: object
                                        args:
                                          description: Args for the source pod
                                          items:
                                            type: string
                                          type: array
                                        command:
                                          description: Command for the source pod
                                          items:
                                            type: string
                                          type: array
                                        env:
                                          description: ENVList contains ENV passed to
                                            the source pod
                                          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 previous defined
                                              environment variables in the container
                                              and any service environment variables.
                                              If a variable cannot be resolved, the
                                              reference in the input string will be
                                              unchanged. The $(VAR_NAME) syntax can
                                              be escaped with a double $$, ie: $$(VAR_NAME).
                                              Escaped references will never be expanded,
                                              regardless of whether the variable exists
                                              or not. Defaults to "".'
                                                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
                                                  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.'
                                                    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
                                                  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:
                                                        description: Specifies the output
                                                          format of the exposed resources,
                                                          defaults to "1"
                                                        type: string
                                                      resource:
                                                        description: 'Required: resource
                                                      to select'
                                                        type: string
                                                    required:
                                                      - resource
                                                    type: object
                                                  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
                                                    type: object
                                                type: object
                                            required:
                                              - name
                                            type: object
                                          type: array
                                        hostNetwork:
                                          description: HostNetwork define the hostNetwork
                                            of the external pod it supports boolean values
                                            and default value is false
                                          type: boolean
                                        inheritInputs:
                                          description: InheritInputs define to inherit experiment
                                            details in probe pod it supports boolean values
                                            and default value is false.
                                          type: boolean
                                        image:
                                          description: Image for the source pod
                                          type: string
                                        imagePullPolicy:
                                          description: ImagePullPolicy for the source pod
                                          type: string
                                        imagePullSecrets:
                                          description: ImagePullSecrets for source 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'
                                                type: string
                                            type: object
                                          type: array
                                        labels:
                                          additionalProperties:
                                            type: string
                                          description: Labels for the source pod
                                          type: object
                                        nodeSelector:
                                          additionalProperties:
                                            type: string
                                          description: NodeSelector for the source pod
                                          type: object
                                        privileged:
                                          description: Privileged for the source pod
                                          type: boolean
                                        volumeMount:
                                          description: VolumesMount for the source pod
                                          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. This
                                                  field is beta in 1.15.
                                                type: string
                                            required:
                                              - mountPath
                                              - name
                                            type: object
                                          type: array
                                        volumes:
                                          description: Volumes for the source pod
                                          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: '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: '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: 'Specify "true" to force
                                                  and set the ReadOnly property in
                                                  VolumeMounts to "true". If omitted,
                                                  the default is "false". More info:
                                                  https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                                    type: boolean
                                                  volumeID:
                                                    description: '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: 'Host Caching mode: None,
                                                  Read Only, Read Write.'
                                                    type: string
                                                  diskName:
                                                    description: The Name of the data
                                                      disk in the blob storage
                                                    type: string
                                                  diskURI:
                                                    description: The URI the data disk
                                                      in the blob storage
                                                    type: string
                                                  fsType:
                                                    description: 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: 'Expected values Shared:
                                                  multiple blob disks per storage
                                                  account  Dedicated: single blob
                                                  disk per storage account  Managed:
                                                  azure managed data disk (only in
                                                  managed availability set). defaults
                                                  to shared'
                                                    type: string
                                                  readOnly:
                                                    description: 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: Defaults to false (read/write).
                                                      ReadOnly here will force the ReadOnly
                                                      setting in VolumeMounts.
                                                    type: boolean
                                                  secretName:
                                                    description: the name of secret that
                                                      contains Azure Storage Account Name
                                                      and Key
                                                    type: string
                                                  shareName:
                                                    description: 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: '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: 'Optional: Used as the
                                                  mounted root, rather than the full
                                                  Ceph tree, default is /'
                                                    type: string
                                                  readOnly:
                                                    description: '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: '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: '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
                                                  user:
                                                    description: '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: '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: 'Optional: Defaults to
                                                  false (read/write). ReadOnly here
                                                  will force the ReadOnly setting
                                                  in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                                                    type: boolean
                                                  secretRef:
                                                    description: '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
                                                  volumeID:
                                                    description: 'volume id 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: 'Optional: mode bits
                                                  to use on created files by default.
                                                  Must be a value between 0 and 0777.
                                                  Defaults to 0644. Directories within
                                                  the path are not affected by this
                                                  setting. This might be in conflict
                                                  with other options that affect the
                                                  file mode, like fsGroup, and the
                                                  result can be other mode bits set.'
                                                    format: int32
                                                    type: integer
                                                  items:
                                                    description: 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: The key to project.
                                                          type: string
                                                        mode:
                                                          description: 'Optional: mode
                                                        bits to use on this file,
                                                        must be a value between 0
                                                        and 0777. If not specified,
                                                        the volume defaultMode will
                                                        be used. This might be in
                                                        conflict with other options
                                                        that affect the file mode,
                                                        like fsGroup, and the result
                                                        can be other mode bits set.'
                                                          format: int32
                                                          type: integer
                                                        path:
                                                          description: 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
                                                        - path
                                                      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: Specify whether the ConfigMap
                                                      or its keys must be defined
                                                    type: boolean
                                                type: object
                                              csi:
                                                description: CSI (Container Storage Interface)
                                                  represents storage that is handled by
                                                  an external CSI driver (Alpha 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: Filesystem type to mount.
                                                      Ex. "ext4", "xfs", "ntfs". If not
                                                      provided, the empty value is passed
                                                      to the associated CSI driver which
                                                      will determine the default filesystem
                                                      to apply.
                                                    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
                                                  readOnly:
                                                    description: 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 value between 0 and 0777.
                                                  Defaults to 0644. Directories within
                                                  the path are not affected by this
                                                  setting. This might be in conflict
                                                  with other options that affect the
                                                  file mode, like fsGroup, and the
                                                  result can be other mode bits set.'
                                                    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
                                                        mode:
                                                          description: 'Optional: mode
                                                        bits to use on this file,
                                                        must be a value between 0
                                                        and 0777. If not specified,
                                                        the volume defaultMode will
                                                        be used. This might be in
                                                        conflict with other options
                                                        that affect the file mode,
                                                        like fsGroup, and the result
                                                        can be other mode bits set.'
                                                          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:
                                                              description: Specifies the
                                                                output format of the exposed
                                                                resources, defaults to
                                                                "1"
                                                              type: string
                                                            resource:
                                                              description: 'Required:
                                                            resource to select'
                                                              type: string
                                                          required:
                                                            - resource
                                                          type: object
                                                      required:
                                                        - path
                                                      type: object
                                                    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: '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:
                                                    description: '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'
                                                    type: string
                                                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: '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: 'Optional: FC target
                                                  lun number'
                                                    format: int32
                                                    type: integer
                                                  readOnly:
                                                    description: 'Optional: Defaults to
                                                  false (read/write). ReadOnly here
                                                  will force the ReadOnly setting
                                                  in VolumeMounts.'
                                                    type: boolean
                                                  targetWWNs:
                                                    description: 'Optional: FC target
                                                  worldwide names (WWNs)'
                                                    items:
                                                      type: string
                                                    type: array
                                                  wwids:
                                                    description: '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: 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: 'Optional: Extra command
                                                  options if any.'
                                                    type: object
                                                  readOnly:
                                                    description: 'Optional: Defaults to
                                                  false (read/write). ReadOnly here
                                                  will force the ReadOnly setting
                                                  in VolumeMounts.'
                                                    type: boolean
                                                  secretRef:
                                                    description: '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
                                                required:
                                                  - 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: Name of the dataset stored
                                                      as metadata -> name on the dataset
                                                      for Flocker should be considered
                                                      as deprecated
                                                    type: string
                                                  datasetUUID:
                                                    description: 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: '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: '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: '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: 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 URL
                                                    type: string
                                                  revision:
                                                    description: 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: 'EndpointsName 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: whether support iSCSI
                                                      Discovery CHAP authentication
                                                    type: boolean
                                                  chapAuthSession:
                                                    description: whether support iSCSI
                                                      Session CHAP authentication
                                                    type: boolean
                                                  fsType:
                                                    description: '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: Custom iSCSI Initiator
                                                      Name. If initiatorName is specified
                                                      with iscsiInterface simultaneously,
                                                      new iSCSI interface <target portal>:<volume
                                                      name> will be created for the connection.
                                                    type: string
                                                  iqn:
                                                    description: Target iSCSI Qualified
                                                      Name.
                                                    type: string
                                                  iscsiInterface:
                                                    description: iSCSI Interface Name
                                                      that uses an iSCSI transport. Defaults
                                                      to 'default' (tcp).
                                                    type: string
                                                  lun:
                                                    description: iSCSI Target Lun number.
                                                    format: int32
                                                    type: integer
                                                  portals:
                                                    description: 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: 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
                                                  targetPortal:
                                                    description: 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
                                                  - lun
                                                  - targetPortal
                                                type: object
                                              name:
                                                description: 'Volume''s name. Must be
                                              a DNS_LABEL and unique within the pod.
                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                                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: 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: 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: 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: 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: Items for all in one resources
                                                  secrets, configmaps, and downward API
                                                properties:
                                                  defaultMode:
                                                    description: Mode bits to use on created
                                                      files by default. Must be a value
                                                      between 0 and 0777. Directories
                                                      within the path are not affected
                                                      by this setting. This might be in
                                                      conflict with other options that
                                                      affect the file mode, like fsGroup,
                                                      and the result can be other mode
                                                      bits set.
                                                    format: int32
                                                    type: integer
                                                  sources:
                                                    description: list of volume projections
                                                    items:
                                                      description: Projection that may
                                                        be projected along with other
                                                        supported volume types
                                                      properties:
                                                        configMap:
                                                          description: information about
                                                            the configMap data to project
                                                          properties:
                                                            items:
                                                              description: 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: The key
                                                                      to project.
                                                                    type: string
                                                                  mode:
                                                                    description: 'Optional:
                                                                  mode bits to use
                                                                  on this file, must
                                                                  be a value between
                                                                  0 and 0777. If not
                                                                  specified, the volume
                                                                  defaultMode will
                                                                  be used. This might
                                                                  be in conflict with
                                                                  other options that
                                                                  affect the file
                                                                  mode, like fsGroup,
                                                                  and the result can
                                                                  be other mode bits
                                                                  set.'
                                                                    format: int32
                                                                    type: integer
                                                                  path:
                                                                    description: 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
                                                                  - path
                                                                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: Specify whether
                                                                the ConfigMap or its keys
                                                                must be defined
                                                              type: boolean
                                                          type: object
                                                        downwardAPI:
                                                          description: 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
                                                                  mode:
                                                                    description: 'Optional:
                                                                  mode bits to use
                                                                  on this file, must
                                                                  be a value between
                                                                  0 and 0777. If not
                                                                  specified, the volume
                                                                  defaultMode will
                                                                  be used. This might
                                                                  be in conflict with
                                                                  other options that
                                                                  affect the file
                                                                  mode, like fsGroup,
                                                                  and the result can
                                                                  be other mode bits
                                                                  set.'
                                                                    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:
                                                                        description: Specifies
                                                                          the output format
                                                                          of the exposed
                                                                          resources, defaults
                                                                          to "1"
                                                                        type: string
                                                                      resource:
                                                                        description: 'Required:
                                                                      resource to
                                                                      select'
                                                                        type: string
                                                                    required:
                                                                      - resource
                                                                    type: object
                                                                required:
                                                                  - path
                                                                type: object
                                                              type: array
                                                          type: object
                                                        secret:
                                                          description: information about
                                                            the secret data to project
                                                          properties:
                                                            items:
                                                              description: 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: The key
                                                                      to project.
                                                                    type: string
                                                                  mode:
                                                                    description: 'Optional:
                                                                  mode bits to use
                                                                  on this file, must
                                                                  be a value between
                                                                  0 and 0777. If not
                                                                  specified, the volume
                                                                  defaultMode will
                                                                  be used. This might
                                                                  be in conflict with
                                                                  other options that
                                                                  affect the file
                                                                  mode, like fsGroup,
                                                                  and the result can
                                                                  be other mode bits
                                                                  set.'
                                                                    format: int32
                                                                    type: integer
                                                                  path:
                                                                    description: 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
                                                                  - path
                                                                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: Specify whether
                                                                the Secret or its key
                                                                must be defined
                                                              type: boolean
                                                          type: object
                                                        serviceAccountToken:
                                                          description: 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
                                                          type: object
                                                      type: object
                                                    type: array
                                                required:
                                                  - sources
                                                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: '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: '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: '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: '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
                                                  user:
                                                    description: '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: 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: The host address of the
                                                      ScaleIO API Gateway.
                                                    type: string
                                                  protectionDomain:
                                                    description: The name of the ScaleIO
                                                      Protection Domain for the configured
                                                      storage.
                                                    type: string
                                                  readOnly:
                                                    description: 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
                                                  sslEnabled:
                                                    description: Flag to enable/disable
                                                      SSL communication with Gateway,
                                                      default false
                                                    type: boolean
                                                  storageMode:
                                                    description: Indicates whether the
                                                      storage for a volume should be ThickProvisioned
                                                      or ThinProvisioned. Default is ThinProvisioned.
                                                    type: string
                                                  storagePool:
                                                    description: The ScaleIO Storage Pool
                                                      associated with the protection domain.
                                                    type: string
                                                  system:
                                                    description: The name of the storage
                                                      system as configured in ScaleIO.
                                                    type: string
                                                  volumeName:
                                                    description: The name of a volume
                                                      already created in the ScaleIO system
                                                      that is associated with this volume
                                                      source.
                                                    type: string
                                                required:
                                                  - gateway
                                                  - secretRef
                                                  - 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: 'Optional: mode bits
                                                  to use on created files by default.
                                                  Must be a value between 0 and 0777.
                                                  Defaults to 0644. Directories within
                                                  the path are not affected by this
                                                  setting. This might be in conflict
                                                  with other options that affect the
                                                  file mode, like fsGroup, and the
                                                  result can be other mode bits set.'
                                                    format: int32
                                                    type: integer
                                                  items:
                                                    description: 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: The key to project.
                                                          type: string
                                                        mode:
                                                          description: 'Optional: mode
                                                        bits to use on this file,
                                                        must be a value between 0
                                                        and 0777. If not specified,
                                                        the volume defaultMode will
                                                        be used. This might be in
                                                        conflict with other options
                                                        that affect the file mode,
                                                        like fsGroup, and the result
                                                        can be other mode bits set.'
                                                          format: int32
                                                          type: integer
                                                        path:
                                                          description: 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
                                                        - path
                                                      type: object
                                                    type: array
                                                  optional:
                                                    description: Specify whether the Secret
                                                      or its keys must be defined
                                                    type: boolean
                                                  secretName:
                                                    description: '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: 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: 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
                                                  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: 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: Storage Policy Based
                                                      Management (SPBM) profile ID associated
                                                      with the StoragePolicyName.
                                                    type: string
                                                  storagePolicyName:
                                                    description: Storage Policy Based
                                                      Management (SPBM) profile name.
                                                    type: string
                                                  volumePath:
                                                    description: Path that identifies
                                                      vSphere volume vmdk
                                                    type: string
                                                required:
                                                  - volumePath
                                                type: object
                                            required:
                                              - name
                                            type: object
                                          type: array
                                      type: object
                                httpProbe/inputs:
                                  type: object
                                  required:
                                    - url
                                    - method
                                  properties:
                                    url:
                                      type: string
                                      minLength: 1
                                    insecureSkipVerify:
                                      type: boolean
                                    method:
                                      type: object
                                      minProperties: 1
                                      properties:
                                        get:
                                          type: object
                                          required:
                                            - criteria
                                            - responseCode
                                          properties:
                                            criteria:
                                              type: string
                                              minLength: 1
                                            responseCode:
                                              type: string
                                              minLength: 1
                                        post:
                                          type: object
                                          required:
                                            - criteria
                                            - responseCode
                                          properties:
                                            contentType:
                                              type: string
                                              minLength: 1
                                            body:
                                              type: string
                                            bodyPath:
                                              type: string
                                            criteria:
                                              type: string
                                              minLength: 1
                                            responseCode:
                                              type: string
                                              minLength: 1
                                promProbe/inputs:
                                  type: object
                                  required:
                                    - endpoint
                                    - comparator
                                  properties:
                                    endpoint:
                                      type: string
                                    query:
                                      type: string
                                    queryPath:
                                      type: string
                                    comparator:
                                      type: object
                                      required:
                                        - criteria
                                        - value
                                      properties:
                                        criteria:
                                          type: string
                                        value:
                                          type: string
                                runProperties:
                                  type: object
                                  minProperties: 2
                                  required:
                                    - probeTimeout
                                    - interval
                                  properties:
                                    probeTimeout:
                                      type: string
                                    interval:
                                      type: string
                                    retry:
                                      type: integer
                                    attempt:
                                      type: integer
                                    probePollingInterval:
                                      type: string
                                    initialDelay:
                                      type: string
                                    initialDelaySeconds:
                                      type: integer
                                    stopOnFailure:
                                      type: boolean
                                mode:
                                  type: string
                                  pattern: ^(SOT|EOT|Edge|Continuous|OnChaos)$
                                  minLength: 1
                                data:
                                  type: string
                          components:
                            x-kubernetes-preserve-unknown-fields: true
                            type: object
                            properties:
                              statusCheckTimeouts:
                                type: object
                                properties:
                                  delay:
                                    type: integer
                                  timeout:
                                    type: integer
                              nodeSelector:
                                type: object
                                additionalProperties:
                                  type: string
                                  properties:
                                    key:
                                      type: string
                                      minLength: 1
                                      allowEmptyValue: false
                                    value:
                                      type: string
                                      minLength: 1
                                      allowEmptyValue: false
                              experimentImage:
                                type: string
                              env:
                                type: array
                                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 previous defined environment
                                    variables in the container and any service environment
                                    variables. If a variable cannot be resolved,
                                    the reference in the input string will be unchanged.
                                    The $(VAR_NAME) syntax can be escaped with a
                                    double $$, ie: $$(VAR_NAME). Escaped references
                                    will never be expanded, regardless of whether
                                    the variable exists or not. Defaults to "".'
                                      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
                                        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.'
                                          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
                                        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
                                        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
                                          type: object
                                      type: object
                                  required:
                                    - name
                                  type: object
                              configMaps:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    mountPath:
                                      type: string
                              secrets:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    mountPath:
                                      type: string
                              experimentAnnotations:
                                type: object
                                additionalProperties:
                                  type: string
                                  properties:
                                    key:
                                      type: string
                                      minLength: 1
                                      allowEmptyValue: false
                                    value:
                                      type: string
                                      minLength: 1
                                      allowEmptyValue: false
                              tolerations:
                                description: Pod's tolerations.
                                items:
                                  description: The pod with this Toleration tolerates any taint matches the <key,value,effect> using the matching operator <operator>.
                                  properties:
                                    effect:
                                      description: Effect to match. Empty means all effects.
                                      type: string
                                    key:
                                      description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
                                      type: string
                                    operator:
                                      description: Operators are Exists or Equal. Defaults to Equal.
                                      type: string
                                    tolerationSeconds:
                                      description: Period of time the toleration tolerates the taint.
                                      format: int64
                                      type: integer
                                    value:
                                      description: If the operator is Exists, the value should be empty, otherwise just a regular string.
                                      type: string
                                  type: object
                                type: array

            status:
              x-kubernetes-preserve-unknown-fields: true
              type: object
      served: true
      storage: true
      subresources: {}
  conversion:
    strategy: None
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: chaosexperiments.litmuschaos.io
spec:
  group: litmuschaos.io
  names:
    kind: ChaosExperiment
    listKind: ChaosExperimentList
    plural: chaosexperiments
    singular: chaosexperiment
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          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/api-conventions.md#resources'
              type: string
            description:
              type: object
              additionalProperties:
                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/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            status:
              x-kubernetes-preserve-unknown-fields: true
              type: object
            spec:
              type: object
              properties:
                definition:
                  x-kubernetes-preserve-unknown-fields: true
                  type: object
                  properties:
                    args:
                      type: array
                      items:
                        type: string
                    command:
                      type: array
                      items:
                        type: string
                    env:
                      type: array
                      items:
                        type: object
                        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 previous defined environment
                          variables in the container and any service environment
                          variables. If a variable cannot be resolved,
                          the reference in the input string will be unchanged.
                          The $(VAR_NAME) syntax can be escaped with a
                          double $$, ie: $$(VAR_NAME). Escaped references
                          will never be expanded, regardless of whether
                          the variable exists or not. Defaults to "".'
                            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
                              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.'
                                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
                              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
                              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
                                type: object
                            type: object
                        required:
                          - name
                    image:
                      type: string
                    imagePullPolicy:
                      type: string
                    labels:
                      type: object
                      additionalProperties:
                        type: string
                    scope:
                      type: string
                      pattern: ^(Namespaced|Cluster)$
                    permissions:
                      type: array
                      items:
                        type: object
                        minProperties: 3
                        required:
                          - apiGroups
                          - resources
                          - verbs
                        properties:
                          apiGroups:
                            type: array
                            items:
                              type: string
                          resources:
                            type: array
                            items:
                              type: string
                          verbs:
                            type: array
                            items:
                              type: string
                          resourceNames:
                            type: array
                            items:
                              type: string
                          nonResourceURLs:
                            type: array
                            items:
                              type: string
                    configMaps:
                      type: array
                      items:
                        type: object
                        minProperties: 2
                        properties:
                          name:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                          mountPath:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                    secrets:
                      type: array
                      items:
                        type: object
                        minProperties: 2
                        properties:
                          name:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                          mountPath:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                    hostFileVolumes:
                      type: array
                      items:
                        type: object
                        minProperties: 3
                        properties:
                          name:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                          mountPath:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                          nodePath:
                            type: string
                            allowEmptyValue: false
                            minLength: 1
                    securityContext:
                      x-kubernetes-preserve-unknown-fields: true
                      type: object
                    hostPID:
                      type: boolean

      served: true
      storage: true
      subresources: {}
  conversion:
    strategy: None
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: chaosresults.litmuschaos.io
spec:
  group: litmuschaos.io
  names:
    kind: ChaosResult
    listKind: ChaosResultList
    plural: chaosresults
    singular: chaosresult
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          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/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/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              x-kubernetes-preserve-unknown-fields: true
              type: object
            status:
              x-kubernetes-preserve-unknown-fields: true
              type: object
      served: true
      storage: true
      subresources: {}
  conversion:
    strategy: None