kind: CustomResourceDefinition
spec:
  group: spark.stackable.tech
  names:
    kind: SparkApplication
    plural: sparkapplications
    singular: sparkapplication
    categories: []
    shortNames:
      - sparkapp
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          title: SparkApplication
          required:
            - spec
          properties:
            spec:
              type: object
              required:
                - mainApplicationFile
                - mode
                - sparkImage
              properties:
                env:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                    properties:
                      name:
                        type: string
                        description: Name of the environment variable. May consist of any printable
                          ASCII characters except '='.
                      value:
                        type: string
                        description: 'Variable references $(VAR_NAME) are expanded using the previously
                          defined environment variables in the container and any
                          service environment variables. If a variable cannot be
                          resolved, the reference in the input string will be
                          unchanged. Double $$ are reduced to a single $, which
                          allows for escaping the $(VAR_NAME) syntax: i.e.
                          "$$(VAR_NAME)" will produce the string literal
                          "$(VAR_NAME)". Escaped references will never be
                          expanded, regardless of whether the variable exists or
                          not. Defaults to "".'
                      valueFrom:
                        type: object
                        properties:
                          fieldRef:
                            type: object
                            required:
                              - fieldPath
                            properties:
                              fieldPath:
                                type: string
                                description: Path of the field to select in the specified API version.
                              apiVersion:
                                type: string
                                description: Version of the schema the FieldPath is written in terms of,
                                  defaults to "v1".
                            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."
                          fileKeyRef:
                            type: object
                            required:
                              - key
                              - path
                              - volumeName
                            properties:
                              key:
                                type: string
                                description: The key within the env file. An invalid key will prevent the pod
                                  from starting. The keys defined within a
                                  source may consist of any printable ASCII
                                  characters except '='. During Alpha stage of
                                  the EnvFiles feature gate, the key size is
                                  limited to 128 characters.
                              path:
                                type: string
                                description: The path within the volume from which to select the file. Must be
                                  relative and may not contain the '..' path or
                                  start with '..'.
                              optional:
                                type: boolean
                                description: >-
                                  Specify whether the file or its key must be
                                  defined. If the file or key does not exist,
                                  then the env var is not published. If optional
                                  is set to true and the specified key does not
                                  exist, the environment variable will not be
                                  set in the Pod's containers.


                                  If optional is set to false and the specified
                                  key does not exist, an error will be returned
                                  during Pod creation.
                              volumeName:
                                type: string
                                description: The name of the volume mount containing the env file.
                            description: FileKeyRef selects a key of the env file. Requires the EnvFiles
                              feature gate to be enabled.
                          secretKeyRef:
                            type: object
                            required:
                              - key
                              - name
                            properties:
                              key:
                                type: string
                                description: The key of the secret to select from.  Must be a valid secret key.
                              name:
                                type: string
                                description: "Name of the referent. This field is effectively required, but due
                                  to backwards compatibility is allowed to be
                                  empty. Instances of this type with an empty
                                  value here are almost certainly wrong. More
                                  info:
                                  https://kubernetes.io/docs/concepts/overview/\
                                  working-with-objects/names/#names"
                              optional:
                                type: boolean
                                description: Specify whether the Secret or its key must be defined
                            description: Selects a key of a secret in the pod's namespace
                          configMapKeyRef:
                            type: object
                            required:
                              - key
                              - name
                            properties:
                              key:
                                type: string
                                description: The key to select.
                              name:
                                type: string
                                description: "Name of the referent. This field is effectively required, but due
                                  to backwards compatibility is allowed to be
                                  empty. Instances of this type with an empty
                                  value here are almost certainly wrong. More
                                  info:
                                  https://kubernetes.io/docs/concepts/overview/\
                                  working-with-objects/names/#names"
                              optional:
                                type: boolean
                                description: Specify whether the ConfigMap or its key must be defined
                            description: Selects a key of a ConfigMap.
                          resourceFieldRef:
                            type: object
                            required:
                              - resource
                            properties:
                              divisor:
                                nullable: true
                                description: Specifies the output format of the exposed resources, defaults to
                                  "1"
                                x-kubernetes-int-or-string: true
                              resource:
                                type: string
                                description: "Required: resource to select"
                              containerName:
                                type: string
                                description: "Container name: required for volumes, optional for env vars"
                            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."
                        description: Source for the environment variable's value. Cannot be used if
                          value is not empty.
                    description: EnvVar represents an environment variable present in a Container.
                  default: []
                  description: >-
                    A list of environment variables that will be set in the job
                    pod and the driver and executor

                    pod templates.
                job:
                  type: object
                  nullable: true
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: >-
                            Resource usage is configured here, this includes CPU
                            usage, memory usage and disk storage

                            usage, if this role needs any.
                        volumeMounts:
                          type: array
                          items:
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          description: Volume mounts for the spark-submit, driver and executor pods.
                        retryOnFailureCount:
                          type: integer
                          format: uint16
                          maximum: 65535
                          minimum: 0
                          nullable: true
                          description: Number of times to retry the submit job on failure. Default is `0`
                            (no retries).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        spark-env.sh:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                        security.properties:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: >-
                    The job builds a spark-submit command, complete with
                    arguments and referenced dependencies

                    such as templates, and passes it on to Spark.

                    The reason this property uses its own type
                    (SubmitConfigFragment) is because logging is not

                    supported for spark-submit processes.
                args:
                  type: array
                  items:
                    type: string
                  default: []
                  description: Arguments passed directly to the job artifact.
                deps:
                  type: object
                  default:
                    packages: []
                    repositories: []
                    requirements: []
                    excludePackages: []
                  properties:
                    packages:
                      type: array
                      items:
                        type: string
                      default: []
                      description: A list of packages that is passed directly to `spark-submit`.
                    repositories:
                      type: array
                      items:
                        type: string
                      default: []
                      description: A list of repositories that is passed directly to `spark-submit`.
                    requirements:
                      type: array
                      items:
                        type: string
                      default: []
                      description: >-
                        Under the `requirements` you can specify Python
                        dependencies that will be installed with `pip`.

                        Example: `tabulate==0.8.9`
                    excludePackages:
                      type: array
                      items:
                        type: string
                      default: []
                      description: A list of excluded packages that is passed directly to
                        `spark-submit`.
                  description: >-
                    Job dependencies: a list of python packages that will be
                    installed via pip, a list of packages

                    or repositories that is passed directly to spark-submit, or
                    a list of excluded packages

                    (also passed directly to spark-submit).
                mode:
                  enum:
                    - cluster
                    - client
                  type: string
                  description: "Mode: cluster or client. Currently only cluster is supported."
                image:
                  type: string
                  nullable: true
                  description: |-
                    User-supplied image containing spark-job dependencies that will be copied to the specified volume mount.
                    See the [examples](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/examples).
                driver:
                  type: object
                  nullable: true
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              properties:
                                job:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                tls:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                spark:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                vector:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                requirements:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                spark-submit:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                              description: Log configuration per container.
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Whether or not to deploy a container with the Vector log agent.
                          description: Logging configuration, learn more in the [logging concept
                            documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: >-
                            Resource usage is configured here, this includes CPU
                            usage, memory usage and disk storage

                            usage, if this role needs any.
                        volumeMounts:
                          type: array
                          items:
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          description: Volume mounts for the spark-submit, driver and executor pods.
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        spark-env.sh:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                        security.properties:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: >-
                    The driver role specifies the configuration that, together
                    with the driver pod template, is used by

                    Spark to create driver pods.
                volumes:
                  type: array
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  default: []
                  description: A list of volumes that can be made available to the job, driver or
                    executors via their volume mounts.
                executor:
                  type: object
                  nullable: true
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              properties:
                                job:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                tls:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                spark:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                vector:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                requirements:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                                spark-submit:
                                  type: object
                                  anyOf:
                                    - required:
                                        - custom
                                    - {}
                                    - {}
                                  properties:
                                    file:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the file appender
                                    custom:
                                      type: object
                                      properties:
                                        configMap:
                                          type: string
                                          nullable: true
                                          description: ConfigMap containing the log configuration files
                                      description: Log configuration provided in a ConfigMap
                                    console:
                                      type: object
                                      nullable: true
                                      properties:
                                        level:
                                          enum:
                                            - TRACE
                                            - DEBUG
                                            - INFO
                                            - WARN
                                            - ERROR
                                            - FATAL
                                            - NONE
                                            - null
                                          type: string
                                          nullable: true
                                          description: >-
                                            The log level threshold.

                                            Log events with a lower log level
                                            are discarded.
                                      description: Configuration for the console appender
                                    loggers:
                                      type: object
                                      default: {}
                                      description: Configuration per logger
                                      additionalProperties:
                                        type: object
                                        properties:
                                          level:
                                            enum:
                                              - TRACE
                                              - DEBUG
                                              - INFO
                                              - WARN
                                              - ERROR
                                              - FATAL
                                              - NONE
                                              - null
                                            type: string
                                            nullable: true
                                            description: >-
                                              The log level threshold.

                                              Log events with a lower log level
                                              are discarded.
                                        description: Configuration of a logger
                                  description: Log configuration of the container
                              description: Log configuration per container.
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Whether or not to deploy a container with the Vector log agent.
                          description: Logging configuration, learn more in the [logging concept
                            documentation](https://docs.stackable.tech/home/nightly/concepts/logging).
                        affinity:
                          type: object
                          default:
                            podAffinity: null
                            nodeAffinity: null
                            nodeSelector: null
                            podAntiAffinity: null
                          properties:
                            podAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.nodeAffinity` field on the Pod, see the
                                [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                            nodeSelector:
                              type: object
                              nullable: true
                              description: Simple key-value pairs forming a nodeSelector, see the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              additionalProperties:
                                type: string
                            podAntiAffinity:
                              type: object
                              nullable: true
                              description: Same as the `spec.affinity.podAntiAffinity` field on the Pod, see
                                the [Kubernetes
                                docs](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node)
                              x-kubernetes-preserve-unknown-fields: true
                          description: |-
                            These configuration settings control
                            [Pod placement](https://docs.stackable.tech/home/nightly/concepts/operations/pod_placement).
                        resources:
                          type: object
                          default:
                            cpu:
                              max: null
                              min: null
                            memory:
                              limit: null
                              runtimeLimits: {}
                            storage: {}
                          properties:
                            cpu:
                              type: object
                              default:
                                max: null
                                min: null
                              properties:
                                max:
                                  nullable: true
                                  description: >-
                                    The maximum amount of CPU cores that can be
                                    requested by Pods.

                                    Equivalent to the `limit` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                                min:
                                  nullable: true
                                  description: >-
                                    The minimal amount of CPU cores that Pods
                                    need to run.

                                    Equivalent to the `request` for Pod resource
                                    configuration.

                                    Cores are specified either as a decimal
                                    point number or as milli units.

                                    For example:`1.5` will be 1.5 cores, also
                                    written as `1500m`.
                                  x-kubernetes-int-or-string: true
                            memory:
                              type: object
                              properties:
                                limit:
                                  nullable: true
                                  description: |-
                                    The maximum amount of memory that should be available to the Pod.
                                    Specified as a byte [Quantity](https://kubernetes.io/docs/reference/kubernetes-api/common-definitions/quantity/),
                                    which means these suffixes are supported: E, P, T, G, M, k.
                                    You can also use the power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.
                                    For example, the following represent roughly the same value:
                                    `128974848, 129e6, 129M,  128974848000m, 123Mi`
                                  x-kubernetes-int-or-string: true
                                runtimeLimits:
                                  type: object
                                  description: Additional options that can be specified.
                            storage:
                              type: object
                          description: >-
                            Resource usage is configured here, this includes CPU
                            usage, memory usage and disk storage

                            usage, if this role needs any.
                        volumeMounts:
                          type: array
                          items:
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          description: Volume mounts for the spark-submit, driver and executor pods.
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    replicas:
                      type: integer
                      format: uint16
                      maximum: 65535
                      minimum: 0
                      nullable: true
                    cliOverrides:
                      type: object
                      default: {}
                      additionalProperties:
                        type: string
                    envOverrides:
                      type: object
                      default: {}
                      description: |-
                        `envOverrides` configure environment variables to be set in the Pods.
                        It is a map from strings to strings - environment variables and the value to set.
                        Read the
                        [environment variable overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#env-overrides)
                        for more information and consult the operator specific usage guide to find out about
                        the product specific environment variables that are available.
                      additionalProperties:
                        type: string
                    podOverrides:
                      type: object
                      default: {}
                      description: |-
                        In the `podOverrides` property you can define a
                        [PodTemplateSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podtemplatespec-v1-core)
                        to override any property that can be set on a Kubernetes Pod.
                        Read the
                        [Pod overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      properties:
                        spark-env.sh:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                        security.properties:
                          type: object
                          default: {}
                          description: Flat key-value overrides for `*.properties`, Hadoop XML, etc.
                          additionalProperties:
                            type: string
                      description: |-
                        The `configOverrides` can be used to configure properties in product config files
                        that are not exposed in the CRD. Read the
                        [config overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#config-overrides)
                        and consult the operator specific usage guide documentation for details on the
                        available config files and settings for the specific product.
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/nightly/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: >-
                    The executor role specifies the configuration that, together
                    with the driver pod template, is used by

                    Spark to create the executor pods.

                    This is RoleGroup instead of plain CommonConfiguration
                    because it needs to allow for the number of replicas.

                    to be specified.
                mainClass:
                  type: string
                  nullable: true
                  description: The main class - i.e. entry point - for JVM artifacts.
                sparkConf:
                  type: object
                  default: {}
                  description: A map of key/value strings that will be passed directly to
                    spark-submit.
                  additionalProperties:
                    type: string
                sparkImage:
                  type: object
                  anyOf:
                    - required:
                        - custom
                        - productVersion
                    - required:
                        - productVersion
                  properties:
                    repo:
                      type: string
                      nullable: true
                      description: >-
                        The repository on the container image registry where the
                        container image is located, e.g.

                        `oci.example.com/namespace`.


                        If not specified, the operator will use the image
                        registry provided via the operator

                        environment options.
                    custom:
                      type: string
                      description: >-
                        Provide a custom container image.


                        Specify the full container image name, e.g.
                        `oci.example.tech/namespace/superset:1.4.1-my-tag`
                    pullPolicy:
                      enum:
                        - IfNotPresent
                        - Always
                        - Never
                      type: string
                      default: Always
                      description: "[Pull
                        policy](https://kubernetes.io/docs/concepts/containers/image\
                        s/#image-pull-policy) used when pulling the image."
                    pullSecrets:
                      type: array
                      items:
                        type: object
                        required:
                          - name
                        properties:
                          name:
                            type: string
                            description: "Name of the referent. This field is effectively required, but due
                              to backwards compatibility is allowed to be empty.
                              Instances of this type with an empty value here
                              are almost certainly wrong. More info:
                              https://kubernetes.io/docs/concepts/overview/work\
                              ing-with-objects/names/#names"
                        description: LocalObjectReference contains enough information to let you locate
                          the referenced object inside the same namespace.
                      nullable: true
                      description: "[Image pull
                        secrets](https://kubernetes.io/docs/concepts/containers\
                        /images/#specifying-imagepullsecrets-on-a-pod) to pull
                        images from a private registry."
                    productVersion:
                      type: string
                      description: Version of the product, e.g. `1.4.1`.
                    stackableVersion:
                      type: string
                      nullable: true
                      description: >-
                        Stackable version of the product, e.g. `23.4`, `23.4.1`
                        or `0.0.0-dev`.


                        If not specified, the operator will use its own version,
                        e.g. `23.4.1`. When using a nightly

                        operator or a PR version, it will use the nightly
                        `0.0.0-dev` image.
                  description: |-
                    Specify which image to use, the easiest way is to only configure the `productVersion`.
                    You can also configure a custom image registry to pull from, as well as completely custom
                    images.

                    Consult the [Product image selection documentation](https://docs.stackable.tech/home/nightly/concepts/product_image_selection)
                    for details.
                s3connection:
                  type: object
                  oneOf:
                    - required:
                        - inline
                    - required:
                        - reference
                  nullable: true
                  properties:
                    inline:
                      type: object
                      required:
                        - host
                      properties:
                        tls:
                          type: object
                          nullable: true
                          required:
                            - verification
                          properties:
                            verification:
                              type: object
                              oneOf:
                                - required:
                                    - none
                                - required:
                                    - server
                              properties:
                                none:
                                  type: object
                                  description: Use TLS but don't verify certificates.
                                server:
                                  type: object
                                  required:
                                    - caCert
                                  properties:
                                    caCert:
                                      type: object
                                      oneOf:
                                        - required:
                                            - webPki
                                        - required:
                                            - secretClass
                                      properties:
                                        webPki:
                                          type: object
                                          description: >-
                                            Use TLS and the CA certificates
                                            trusted by the common web browsers
                                            to verify the server.

                                            This can be useful when you e.g. use
                                            public AWS S3 or other public
                                            available services.
                                        secretClass:
                                          type: string
                                          description: |-
                                            Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate.
                                            Note that a SecretClass does not need to have a key but can also work with just a CA certificate,
                                            so if you got provided with a CA cert but don't have access to the key you can still use this method.
                                      description: CA cert to verify the server.
                                  description: Use TLS and a CA certificate to verify the server.
                              description: The verification method used to verify the certificates of the
                                server and/or the client.
                          description: Use a TLS connection. If not specified no TLS will be used.
                        host:
                          type: string
                          description: "Host of the S3 server without any protocol or port. For example:
                            `west1.my-cloud.com`."
                        port:
                          type: integer
                          format: uint16
                          maximum: 65535
                          minimum: 0
                          nullable: true
                          description: >-
                            Port the S3 server listens on.

                            If not specified the product will determine the port
                            to use.
                        region:
                          type: object
                          default:
                            name: us-east-1
                          properties:
                            name:
                              type: string
                              default: us-east-1
                          description: >-
                            Bucket region used for signing headers (sigv4).


                            This defaults to `us-east-1` which is compatible
                            with other implementations such as Minio.


                            WARNING: Some products use the Hadoop S3
                            implementation which falls back to us-east-2.
                        accessStyle:
                          enum:
                            - Path
                            - VirtualHosted
                          type: string
                          default: VirtualHosted
                          description: |-
                            Which access style to use.
                            Defaults to virtual hosted-style as most of the data products out there.
                            Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html).
                        credentials:
                          type: object
                          nullable: true
                          required:
                            - secretClass
                          properties:
                            scope:
                              type: object
                              nullable: true
                              properties:
                                pod:
                                  type: boolean
                                  default: false
                                  description: >-
                                    The pod scope is resolved to the name of the
                                    Kubernetes Pod.

                                    This allows the secret to differentiate
                                    between StatefulSet replicas.
                                node:
                                  type: boolean
                                  default: false
                                  description: >-
                                    The node scope is resolved to the name of
                                    the Kubernetes Node object that the Pod is
                                    running on.

                                    This will typically be the DNS name of the
                                    node.
                                services:
                                  type: array
                                  items:
                                    type: string
                                  default: []
                                  description: >-
                                    The service scope allows Pod objects to
                                    specify custom scopes.

                                    This should typically correspond to Service
                                    objects that the Pod participates in.
                                listenerVolumes:
                                  type: array
                                  items:
                                    type: string
                                  default: []
                                  description: >-
                                    The listener volume scope allows Node and
                                    Service scopes to be inferred from the
                                    applicable listeners.

                                    This must correspond to Volume names in the
                                    Pod that mount Listeners.
                              description: |-
                                [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the
                                [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).
                            secretClass:
                              type: string
                              description: "[SecretClass](https://docs.stackable.tech/home/nightly/secret-ope\
                                rator/secretclass) providing the requested
                                secrets."
                          description: |-
                            If the S3 uses authentication you have to specify you S3 credentials.
                            In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass)
                            providing `accessKey` and `secretKey` is sufficient.
                      description: |-
                        S3 connection definition as a resource.
                        Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3).
                    reference:
                      type: string
                  description: |-
                    Configure an S3 connection that the SparkApplication has access to.
                    Read more in the [Spark S3 usage guide](https://docs.stackable.tech/home/nightly/spark-k8s/usage-guide/s3).
                logFileDirectory:
                  type: object
                  oneOf:
                    - required:
                        - s3
                    - required:
                        - customLogDirectory
                  nullable: true
                  properties:
                    s3:
                      type: object
                      required:
                        - bucket
                        - prefix
                      properties:
                        bucket:
                          type: object
                          oneOf:
                            - required:
                                - inline
                            - required:
                                - reference
                          properties:
                            inline:
                              type: object
                              required:
                                - bucketName
                                - connection
                              properties:
                                bucketName:
                                  type: string
                                  description: The name of the S3 bucket.
                                connection:
                                  type: object
                                  oneOf:
                                    - required:
                                        - inline
                                    - required:
                                        - reference
                                  properties:
                                    inline:
                                      type: object
                                      required:
                                        - host
                                      properties:
                                        tls:
                                          type: object
                                          nullable: true
                                          required:
                                            - verification
                                          properties:
                                            verification:
                                              type: object
                                              oneOf:
                                                - required:
                                                    - none
                                                - required:
                                                    - server
                                              properties:
                                                none:
                                                  type: object
                                                  description: Use TLS but don't verify certificates.
                                                server:
                                                  type: object
                                                  required:
                                                    - caCert
                                                  properties:
                                                    caCert:
                                                      type: object
                                                      oneOf:
                                                        - required:
                                                            - webPki
                                                        - required:
                                                            - secretClass
                                                      properties:
                                                        webPki:
                                                          type: object
                                                          description: >-
                                                            Use TLS and the CA
                                                            certificates trusted
                                                            by the common web
                                                            browsers to verify
                                                            the server.

                                                            This can be useful
                                                            when you e.g. use
                                                            public AWS S3 or
                                                            other public
                                                            available services.
                                                        secretClass:
                                                          type: string
                                                          description: |-
                                                            Name of the [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass) which will provide the CA certificate.
                                                            Note that a SecretClass does not need to have a key but can also work with just a CA certificate,
                                                            so if you got provided with a CA cert but don't have access to the key you can still use this method.
                                                      description: CA cert to verify the server.
                                                  description: Use TLS and a CA certificate to verify the server.
                                              description: The verification method used to verify the certificates of the
                                                server and/or the client.
                                          description: Use a TLS connection. If not specified no TLS will be used.
                                        host:
                                          type: string
                                          description: "Host of the S3 server without any protocol or port. For example:
                                            `west1.my-cloud.com`."
                                        port:
                                          type: integer
                                          format: uint16
                                          maximum: 65535
                                          minimum: 0
                                          nullable: true
                                          description: >-
                                            Port the S3 server listens on.

                                            If not specified the product will
                                            determine the port to use.
                                        region:
                                          type: object
                                          default:
                                            name: us-east-1
                                          properties:
                                            name:
                                              type: string
                                              default: us-east-1
                                          description: >-
                                            Bucket region used for signing
                                            headers (sigv4).


                                            This defaults to `us-east-1` which
                                            is compatible with other
                                            implementations such as Minio.


                                            WARNING: Some products use the
                                            Hadoop S3 implementation which falls
                                            back to us-east-2.
                                        accessStyle:
                                          enum:
                                            - Path
                                            - VirtualHosted
                                          type: string
                                          default: VirtualHosted
                                          description: |-
                                            Which access style to use.
                                            Defaults to virtual hosted-style as most of the data products out there.
                                            Have a look at the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html).
                                        credentials:
                                          type: object
                                          nullable: true
                                          required:
                                            - secretClass
                                          properties:
                                            scope:
                                              type: object
                                              nullable: true
                                              properties:
                                                pod:
                                                  type: boolean
                                                  default: false
                                                  description: >-
                                                    The pod scope is resolved to
                                                    the name of the Kubernetes
                                                    Pod.

                                                    This allows the secret to
                                                    differentiate between
                                                    StatefulSet replicas.
                                                node:
                                                  type: boolean
                                                  default: false
                                                  description: >-
                                                    The node scope is resolved
                                                    to the name of the
                                                    Kubernetes Node object that
                                                    the Pod is running on.

                                                    This will typically be the
                                                    DNS name of the node.
                                                services:
                                                  type: array
                                                  items:
                                                    type: string
                                                  default: []
                                                  description: >-
                                                    The service scope allows Pod
                                                    objects to specify custom
                                                    scopes.

                                                    This should typically
                                                    correspond to Service
                                                    objects that the Pod
                                                    participates in.
                                                listenerVolumes:
                                                  type: array
                                                  items:
                                                    type: string
                                                  default: []
                                                  description: >-
                                                    The listener volume scope
                                                    allows Node and Service
                                                    scopes to be inferred from
                                                    the applicable listeners.

                                                    This must correspond to
                                                    Volume names in the Pod that
                                                    mount Listeners.
                                              description: |-
                                                [Scope](https://docs.stackable.tech/home/nightly/secret-operator/scope) of the
                                                [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass).
                                            secretClass:
                                              type: string
                                              description: "[SecretClass](https://docs.stackable.tech/home/nightly/secret-ope\
                                                rator/secretclass) providing the
                                                requested secrets."
                                          description: |-
                                            If the S3 uses authentication you have to specify you S3 credentials.
                                            In the most cases a [SecretClass](https://docs.stackable.tech/home/nightly/secret-operator/secretclass)
                                            providing `accessKey` and `secretKey` is sufficient.
                                      description: |-
                                        S3 connection definition as a resource.
                                        Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3).
                                    reference:
                                      type: string
                                  description: The definition of an S3 connection, either inline or as a
                                    reference.
                              description: |-
                                S3 bucket specification containing the bucket name and an inlined or referenced connection specification.
                                Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/nightly/concepts/s3).
                            reference:
                              type: string
                        prefix:
                          type: string
                      description: An S3 bucket storing the log events
                    customLogDirectory:
                      type: string
                      description: A custom log directory
                  description: The log file directory definition used by the Spark history server.
                mainApplicationFile:
                  type: string
                  description: The actual application file that will be called by `spark-submit`.
                vectorAggregatorConfigMapName:
                  type: string
                  pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
                  nullable: true
                  maxLength: 253
                  minLength: 1
                  description: |-
                    Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/nightly/concepts/service_discovery).
                    It must contain the key `ADDRESS` with the address of the Vector aggregator.
                    Follow the [logging tutorial](https://docs.stackable.tech/home/nightly/tutorials/logging-vector-aggregator)
                    to learn how to configure log aggregation with Vector.
              description: |-
                A Spark application run on Kubernetes by the Stackable operator for Apache Spark.
                Find more information on how to use it and the resources that the operator generates in the
                [operator documentation](https://docs.stackable.tech/home/nightly/spark-k8s/).

                The SparkApplication CRD looks a little different than the CRDs of the other products on the
                Stackable Data Platform.
            status:
              type: object
              nullable: true
              required:
                - phase
              properties:
                phase:
                  type: string
                resolvedTemplateRef:
                  type: array
                  items:
                    type: object
                    required:
                      - name
                    properties:
                      uid:
                        type: string
                        nullable: true
                      name:
                        type: string
          description: A Spark application run on Kubernetes by the Stackable operator for
            Apache Spark.
      served: true
      storage: true
      subresources:
        status: {}
      additionalPrinterColumns: []
metadata:
  name: sparkapplications.spark.stackable.tech
apiVersion: apiextensions.k8s.io/v1
