kind: CustomResourceDefinition
spec:
  group: airflow.stackable.tech
  names:
    kind: AirflowCluster
    plural: airflowclusters
    singular: airflowcluster
    categories: []
    shortNames:
      - airflow
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          title: AirflowCluster
          required:
            - spec
          properties:
            spec:
              type: object
              oneOf:
                - required:
                    - celeryExecutors
                - required:
                    - kubernetesExecutors
              required:
                - clusterConfig
                - image
              properties:
                image:
                  type: object
                  anyOf:
                    - required:
                        - custom
                        - productVersion
                    - required:
                        - productVersion
                  properties:
                    repo:
                      type: string
                      nullable: true
                      description: Name of the docker repo, e.g. `oci.stackable.tech/sdp`
                    custom:
                      type: string
                      description: >-
                        Overwrite the docker image.

                        Specify the full docker image name, e.g.
                        `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0`
                    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/25.11/concepts/product_image_selection)
                    for details.
                schedulers:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.11/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    description: Log configuration per container.
                                    additionalProperties:
                                      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: Custom 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
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Wether 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/25.11/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/25.11/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:
                                        type: string
                                        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`.
                                      min:
                                        type: string
                                        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`.
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        type: string
                                        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`
                                      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.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            default: {}
                            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/25.11/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.
                            additionalProperties:
                              type: object
                              additionalProperties:
                                type: string
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: >-
                    The `schedulers` is responsible for triggering jobs and
                    persisting their metadata to the backend database.

                    Jobs are scheduled on the workers/executors.
                triggerers:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.11/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    description: Log configuration per container.
                                    additionalProperties:
                                      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: Custom 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
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Wether 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/25.11/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/25.11/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:
                                        type: string
                                        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`.
                                      min:
                                        type: string
                                        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`.
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        type: string
                                        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`
                                      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.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            default: {}
                            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/25.11/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.
                            additionalProperties:
                              type: object
                              additionalProperties:
                                type: string
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: The `triggerers` role runs the triggerer process for use with
                    deferrable DAG operators.
                webservers:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                          description: This field controls which
                            [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html)
                            is used to expose the webserver.
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.11/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    description: Log configuration per container.
                                    additionalProperties:
                                      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: Custom 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
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Wether 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/25.11/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/25.11/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:
                                        type: string
                                        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`.
                                      min:
                                        type: string
                                        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`.
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        type: string
                                        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`
                                      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.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            default: {}
                            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/25.11/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.
                            additionalProperties:
                              type: object
                              additionalProperties:
                                type: string
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: The `webservers` role provides the main UI for user interaction.
                clusterConfig:
                  type: object
                  required:
                    - credentialsSecret
                  properties:
                    volumes:
                      type: array
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      default: []
                      description: Additional volumes to define. Use together with `volumeMounts` to
                        mount the volumes.
                    dagsGitSync:
                      type: array
                      items:
                        type: object
                        required:
                          - repo
                        properties:
                          repo:
                            type: string
                            format: uri
                            description: "The git repository URL that will be cloned, for example:
                              `https://github.com/stackabletech/airflow-operato\
                              r`."
                          wait:
                            type: string
                            default: 20s
                            description: >-
                              The synchronization interval, e.g. `20s` or `5m`;
                              defaults to `20s`.


                              Since git-sync v4.x.x this field is mapped to the
                              flag `--period`.
                          depth:
                            type: integer
                            format: uint32
                            default: 1
                            minimum: 0
                            description: The depth of syncing, i.e. the number of commits to clone; defaults
                              to 1.
                          branch:
                            type: string
                            default: main
                            description: >-
                              The branch to clone; defaults to `main`.


                              Since git-sync v4.x.x this field is mapped to the
                              flag `--ref`.
                          gitFolder:
                            type: string
                            default: /
                            description: >-
                              Location in the Git repository containing the
                              resource; defaults to the root folder.


                              It can optionally start with `/`, however, no
                              trailing slash is recommended.

                              An empty string (``) or slash (`/`) corresponds to
                              the root folder in Git.
                          gitSyncConf:
                            type: object
                            default: {}
                            description: |-
                              A map of optional configuration settings that are listed in the git-sync [documentation].

                              Also read the git-sync [example] in our documentation. These settings are not verified.

                              [documentation]: https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual
                              [example]: https://docs.stackable.tech/home/25.11/airflow/usage-guide/mounting-dags#_example
                            additionalProperties:
                              type: string
                          credentialsSecret:
                            type: string
                            nullable: true
                            description: |-
                              The name of the Secret used to access the repository if it is not public.

                              The referenced Secret must include two fields: `user` and `password`.
                              The `password` field can either be an actual password (not recommended) or a GitHub token,
                              as described in the git-sync [documentation].

                              [documentation]: https://github.com/kubernetes/git-sync/tree/v4.2.4?tab=readme-ov-file#manual
                      default: []
                      description: |-
                        The `gitSync` settings allow configuring DAGs to mount via `git-sync`.
                        Learn more in the
                        [mounting DAGs documentation](https://docs.stackable.tech/home/25.11/airflow/usage-guide/mounting-dags#_via_git_sync).
                    exposeConfig:
                      type: boolean
                      default: false
                      description: for internal use only - not for production use.
                    loadExamples:
                      type: boolean
                      default: false
                      description: |-
                        Whether to load example DAGs or not; defaults to false. The examples are used in the
                        [getting started guide](https://docs.stackable.tech/home/25.11/airflow/getting_started/).
                    volumeMounts:
                      type: array
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      default: []
                      description: Additional volumes to mount. Use together with `volumes` to define
                        volumes.
                    authorization:
                      type: object
                      nullable: true
                      properties:
                        opa:
                          type: object
                          nullable: true
                          required:
                            - configMapName
                          properties:
                            cache:
                              type: object
                              default:
                                maxEntries: 10000
                                entryTimeToLive: 30s
                              properties:
                                maxEntries:
                                  type: integer
                                  format: uint32
                                  default: 10000
                                  minimum: 0
                                  description: >-
                                    Maximum number of entries in the cache; If
                                    this threshold is reached then the least

                                    recently used item is removed.
                                entryTimeToLive:
                                  type: string
                                  default: 30s
                                  description: Time to live per entry
                              description: Least Recently Used (LRU) cache with per-entry time-to-live (TTL)
                                value.
                            package:
                              type: string
                              nullable: true
                              description: The name of the Rego package containing the Rego rules for the
                                product.
                            configMapName:
                              type: string
                              description: |-
                                The [discovery ConfigMap](https://docs.stackable.tech/home/25.11/concepts/service_discovery)
                                for the OPA stacklet that should be used for authorization requests.
                          description: |-
                            Configure the OPA stacklet [discovery ConfigMap](https://docs.stackable.tech/home/25.11/concepts/service_discovery)
                            and the name of the Rego package containing your authorization rules.
                            Consult the [OPA authorization documentation](https://docs.stackable.tech/home/25.11/concepts/opa)
                            to learn how to deploy Rego authorization rules with OPA.
                      description: |-
                        Authorization options.
                        Learn more in the [Airflow authorization usage guide](https://docs.stackable.tech/home/25.11/airflow/usage-guide/security#_authorization).
                    authentication:
                      type: array
                      items:
                        type: object
                        required:
                          - authenticationClass
                        properties:
                          oidc:
                            type: object
                            nullable: true
                            required:
                              - clientCredentialsSecret
                            properties:
                              extraScopes:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: An optional list of extra scopes which get merged with the scopes
                                  defined in the AuthenticationClass
                              clientCredentialsSecret:
                                type: string
                                description: >-
                                  A reference to the OIDC client credentials
                                  secret. The secret contains

                                  the client id and secret.
                            description: This field contains OIDC-specific configuration. It is only
                              required in case OIDC is used.
                          syncRolesAt:
                            enum:
                              - Registration
                              - Login
                            type: string
                            default: Registration
                            description: >-
                              If we should replace ALL the user's roles each
                              login, or only on registration.

                              Gets mapped to `AUTH_ROLES_SYNC_AT_LOGIN`
                          userRegistration:
                            type: boolean
                            default: true
                            description: |-
                              Allow users who are not already in the FAB DB.
                              Gets mapped to `AUTH_USER_REGISTRATION`
                          authenticationClass:
                            type: string
                            description: Name of the
                              [AuthenticationClass](https://docs.stackable.tech/home/25.11/concepts/authentication)
                              used to authenticate users
                          userRegistrationRole:
                            type: string
                            default: Public
                            description: >-
                              This role will be given in addition to any
                              AUTH_ROLES_MAPPING.

                              Gets mapped to `AUTH_USER_REGISTRATION_ROLE`
                      default: []
                    credentialsSecret:
                      type: string
                      description: |-
                        The name of the Secret object containing the admin user credentials and database connection details.
                        Read the
                        [getting started guide first steps](https://docs.stackable.tech/home/25.11/airflow/getting_started/first_steps)
                        to find out more.
                    databaseInitialization:
                      type: object
                      default:
                        enabled: true
                      properties:
                        enabled:
                          type: boolean
                          default: true
                          description: >-
                            Whether to execute the database initialization
                            routines (a combination of database initialization,
                            upgrade and migration depending on the Airflow
                            version). Defaults to true to be
                            backwards-compatible.

                            WARNING: setting this to false is *unsupported* as
                            subsequent updates to the Airflow cluster may result
                            in broken behaviour due to inconsistent metadata!

                            Do not change the default unless you know what you
                            are doing!
                      description: Settings related to the database initialization routines (which are
                        always executed by default).
                    vectorAggregatorConfigMapName:
                      type: string
                      nullable: true
                      description: |-
                        Name of the Vector aggregator [discovery ConfigMap](https://docs.stackable.tech/home/25.11/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/25.11/tutorials/logging-vector-aggregator)
                        to learn how to configure log aggregation with Vector.
                  description: >-
                    Configuration that applies to all roles and role groups.

                    This includes settings for authentication, git sync, service
                    exposition and volumes, among other things.
                dagProcessors:
                  type: object
                  nullable: true
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.11/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    description: Log configuration per container.
                                    additionalProperties:
                                      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: Custom 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
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Wether 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/25.11/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/25.11/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:
                                        type: string
                                        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`.
                                      min:
                                        type: string
                                        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`.
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        type: string
                                        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`
                                      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.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            default: {}
                            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/25.11/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.
                            additionalProperties:
                              type: object
                              additionalProperties:
                                type: string
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: The `dagProcessors` role runs the DAG processor routine for DAG
                    preparation.
                celeryExecutors:
                  type: object
                  required:
                    - roleGroups
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    roleConfig:
                      type: object
                      default:
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        podDisruptionBudget:
                          type: object
                          default:
                            enabled: true
                            maxUnavailable: null
                          properties:
                            enabled:
                              type: boolean
                              default: true
                              description: >-
                                Whether a PodDisruptionBudget should be written
                                out for this role.

                                Disabling this enables you to specify your own -
                                custom - one.

                                Defaults to true.
                            maxUnavailable:
                              type: integer
                              format: uint16
                              maximum: 65535
                              minimum: 0
                              nullable: true
                              description: >-
                                The number of Pods that are allowed to be down
                                because of voluntary disruptions.

                                If you don't explicitly set this, the operator
                                will use a sane default based

                                upon knowledge about the individual product.
                          description: |-
                            This struct is used to configure:

                            1. If PodDisruptionBudgets are created by the operator
                            2. The allowed number of Pods to be unavailable (`maxUnavailable`)

                            Learn more in the
                            [allowed Pod disruptions documentation](https://docs.stackable.tech/home/25.11/concepts/operations/pod_disruptions).
                      description: This is a product-agnostic RoleConfig, which is sufficient for most
                        of the products.
                    roleGroups:
                      type: object
                      additionalProperties:
                        type: object
                        properties:
                          config:
                            type: object
                            default: {}
                            properties:
                              logging:
                                type: object
                                default:
                                  containers: {}
                                  enableVectorAgent: null
                                properties:
                                  containers:
                                    type: object
                                    description: Log configuration per container.
                                    additionalProperties:
                                      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: Custom 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
                                  enableVectorAgent:
                                    type: boolean
                                    nullable: true
                                    description: Wether 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/25.11/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/25.11/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:
                                        type: string
                                        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`.
                                      min:
                                        type: string
                                        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`.
                                  memory:
                                    type: object
                                    properties:
                                      limit:
                                        type: string
                                        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`
                                      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.
                              gracefulShutdownTimeout:
                                type: string
                                nullable: true
                                description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                                  `2d`. Consult the operator documentation for
                                  details.
                          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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                              for more information.
                            x-kubernetes-preserve-unknown-fields: true
                          configOverrides:
                            type: object
                            default: {}
                            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/25.11/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.
                            additionalProperties:
                              type: object
                              additionalProperties:
                                type: string
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: |-
                    The celery executor.
                    Deployed with an explicit number of replicas.
                clusterOperation:
                  type: object
                  default:
                    stopped: false
                    reconciliationPaused: false
                  properties:
                    stopped:
                      type: boolean
                      default: false
                      description: >-
                        Flag to stop the cluster. This means all deployed
                        resources (e.g. Services, StatefulSets,

                        ConfigMaps) are kept but all deployed Pods (e.g.
                        replicas from a StatefulSet) are scaled to 0

                        and therefore stopped and removed.

                        If applied at the same time with `reconciliationPaused`,
                        the latter will pause reconciliation

                        and `stopped` will take no effect until
                        `reconciliationPaused` is set to false or removed.
                    reconciliationPaused:
                      type: boolean
                      default: false
                      description: >-
                        Flag to stop cluster reconciliation by the operator.
                        This means that all changes in the

                        custom resource spec are ignored until this flag is set
                        to false or removed. The operator

                        will however still watch the deployed resources at the
                        time and update the custom resource

                        status field.

                        If applied at the same time with `stopped`,
                        `reconciliationPaused` will take precedence over

                        `stopped` and stop the reconciliation immediately.
                  description: |-
                    [Cluster operations](https://docs.stackable.tech/home/25.11/concepts/operations/cluster_operations)
                    properties, allow stopping the product instance as well as pausing reconciliation.
                kubernetesExecutors:
                  type: object
                  properties:
                    config:
                      type: object
                      default: {}
                      properties:
                        logging:
                          type: object
                          default:
                            containers: {}
                            enableVectorAgent: null
                          properties:
                            containers:
                              type: object
                              description: Log configuration per container.
                              additionalProperties:
                                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: Custom 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
                            enableVectorAgent:
                              type: boolean
                              nullable: true
                              description: Wether 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/25.11/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/25.11/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:
                                  type: string
                                  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`.
                                min:
                                  type: string
                                  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`.
                            memory:
                              type: object
                              properties:
                                limit:
                                  type: string
                                  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`
                                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.
                        gracefulShutdownTimeout:
                          type: string
                          nullable: true
                          description: Time period Pods have to gracefully shut down, e.g. `30m`, `1h` or
                            `2d`. Consult the operator documentation for
                            details.
                    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/25.11/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.27/#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/25.11/concepts/overrides#pod-overrides)
                        for more information.
                      x-kubernetes-preserve-unknown-fields: true
                    configOverrides:
                      type: object
                      default: {}
                      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/25.11/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.
                      additionalProperties:
                        type: object
                        additionalProperties:
                          type: string
                  description: With the Kuberentes executor, executor Pods are created on demand.
              description: >-
                An Airflow cluster stacklet. This resource is managed by the
                Stackable operator for Apache Airflow.

                Find more information on how to use it and the resources that
                the operator generates in the

                [operator
                documentation](https://docs.stackable.tech/home/25.11/airflow/).


                The CRD contains three roles: webserver, scheduler and
                worker/celeryExecutor.

                You can use either the celeryExecutor or the kubernetesExecutor.
            status:
              type: object
              nullable: true
              properties:
                conditions:
                  type: array
                  items:
                    type: object
                    required:
                      - status
                      - type
                    properties:
                      type:
                        enum:
                          - Available
                          - Degraded
                          - Progressing
                          - ReconciliationPaused
                          - Stopped
                        type: string
                        description: Type of deployment condition.
                      reason:
                        type: string
                        nullable: true
                        description: The reason for the condition's last transition.
                      status:
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                        description: Status of the condition, one of True, False, Unknown.
                      message:
                        type: string
                        nullable: true
                        description: A human readable message indicating details about the transition.
                      lastTransitionTime:
                        type: string
                        format: date-time
                        nullable: true
                        description: Last time the condition transitioned from one status to another.
                  default: []
          description: Auto-generated derived type for AirflowClusterSpec via
            `CustomResource`
      served: true
      storage: true
      subresources:
        status: {}
      additionalPrinterColumns: []
metadata:
  name: airflowclusters.airflow.stackable.tech
  annotations:
    helm.sh/resource-policy: keep
apiVersion: apiextensions.k8s.io/v1
