kind: CustomResourceDefinition
spec:
  group: druid.stackable.tech
  names:
    kind: DruidCluster
    plural: druidclusters
    singular: druidcluster
    categories: []
    shortNames:
      - druid
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          type: object
          title: DruidCluster
          required:
            - spec
          properties:
            spec:
              type: object
              required:
                - brokers
                - clusterConfig
                - coordinators
                - historicals
                - image
                - middleManagers
                - routers
              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.
                brokers:
                  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
                                        type: string
                                        nullable: true
                                        description: >-
                                          The log level threshold.

                                          Log events with a lower log level are
                                          discarded.
                                    description: Configuration for the file appender
                                  custom:
                                    type: object
                                    properties:
                                      configMap:
                                        type: string
                                        nullable: true
                                        description: ConfigMap containing the log configuration files
                                    description: Log configuration provided in a ConfigMap
                                  console:
                                    type: object
                                    nullable: true
                                    properties:
                                      level:
                                        enum:
                                          - TRACE
                                          - DEBUG
                                          - INFO
                                          - WARN
                                          - ERROR
                                          - FATAL
                                          - NONE
                                        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
                                          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: |-
                                This role does not have any storage settings.
                                Only the Historical role uses disk storage.
                          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: |-
                            The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                            Read more about graceful shutdown in the
                            [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                        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
                                              type: string
                                              nullable: true
                                              description: >-
                                                The log level threshold.

                                                Log events with a lower log
                                                level are discarded.
                                          description: Configuration for the file appender
                                        custom:
                                          type: object
                                          properties:
                                            configMap:
                                              type: string
                                              nullable: true
                                              description: ConfigMap containing the log configuration files
                                          description: Log configuration provided in a ConfigMap
                                        console:
                                          type: object
                                          nullable: true
                                          properties:
                                            level:
                                              enum:
                                                - TRACE
                                                - DEBUG
                                                - INFO
                                                - WARN
                                                - ERROR
                                                - FATAL
                                                - NONE
                                              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
                                                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: >-
                                      This role does not have any storage
                                      settings.

                                      Only the Historical role uses disk
                                      storage.
                                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: |-
                                  The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                                  Read more about graceful shutdown in the
                                  [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                              requestedSecretLifetime:
                                type: string
                                nullable: true
                                description: >-
                                  Request secret (currently only autoTls
                                  certificates) lifetime from the secret
                                  operator, e.g. `7d`, or `30d`.

                                  This can be shortened by the
                                  `maxCertificateLifetime` setting on the
                                  SecretClass issuing the TLS certificate.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/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
                          jvmArgumentOverrides:
                            type: object
                            default:
                              add: []
                              remove: []
                              removeRegex: []
                            properties:
                              add:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be added
                              remove:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be removed by exact match
                              removeRegex:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments matching any of this regexes will be removed
                            description: |-
                              Allows overriding JVM arguments.
                              Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                              for details on the usage.
                    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
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/25.11/concepts/roles-and-role-groups).
                routers:
                  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
                                        type: string
                                        nullable: true
                                        description: >-
                                          The log level threshold.

                                          Log events with a lower log level are
                                          discarded.
                                    description: Configuration for the file appender
                                  custom:
                                    type: object
                                    properties:
                                      configMap:
                                        type: string
                                        nullable: true
                                        description: ConfigMap containing the log configuration files
                                    description: Log configuration provided in a ConfigMap
                                  console:
                                    type: object
                                    nullable: true
                                    properties:
                                      level:
                                        enum:
                                          - TRACE
                                          - DEBUG
                                          - INFO
                                          - WARN
                                          - ERROR
                                          - FATAL
                                          - NONE
                                        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
                                          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: |-
                                This role does not have any storage settings.
                                Only the Historical role uses disk storage.
                          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: |-
                            The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                            Read more about graceful shutdown in the
                            [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                        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
                                              type: string
                                              nullable: true
                                              description: >-
                                                The log level threshold.

                                                Log events with a lower log
                                                level are discarded.
                                          description: Configuration for the file appender
                                        custom:
                                          type: object
                                          properties:
                                            configMap:
                                              type: string
                                              nullable: true
                                              description: ConfigMap containing the log configuration files
                                          description: Log configuration provided in a ConfigMap
                                        console:
                                          type: object
                                          nullable: true
                                          properties:
                                            level:
                                              enum:
                                                - TRACE
                                                - DEBUG
                                                - INFO
                                                - WARN
                                                - ERROR
                                                - FATAL
                                                - NONE
                                              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
                                                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: >-
                                      This role does not have any storage
                                      settings.

                                      Only the Historical role uses disk
                                      storage.
                                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: |-
                                  The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                                  Read more about graceful shutdown in the
                                  [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                              requestedSecretLifetime:
                                type: string
                                nullable: true
                                description: >-
                                  Request secret (currently only autoTls
                                  certificates) lifetime from the secret
                                  operator, e.g. `7d`, or `30d`.

                                  This can be shortened by the
                                  `maxCertificateLifetime` setting on the
                                  SecretClass issuing the TLS certificate.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/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
                          jvmArgumentOverrides:
                            type: object
                            default:
                              add: []
                              remove: []
                              removeRegex: []
                            properties:
                              add:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be added
                              remove:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be removed by exact match
                              removeRegex:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments matching any of this regexes will be removed
                            description: |-
                              Allows overriding JVM arguments.
                              Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                              for details on the usage.
                    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
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/25.11/concepts/roles-and-role-groups).
                historicals:
                  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
                                        type: string
                                        nullable: true
                                        description: >-
                                          The log level threshold.

                                          Log events with a lower log level are
                                          discarded.
                                    description: Configuration for the file appender
                                  custom:
                                    type: object
                                    properties:
                                      configMap:
                                        type: string
                                        nullable: true
                                        description: ConfigMap containing the log configuration files
                                    description: Log configuration provided in a ConfigMap
                                  console:
                                    type: object
                                    nullable: true
                                    properties:
                                      level:
                                        enum:
                                          - TRACE
                                          - DEBUG
                                          - INFO
                                          - WARN
                                          - ERROR
                                          - FATAL
                                          - NONE
                                        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
                                          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:
                              segmentCache:
                                emptyDir:
                                  capacity: null
                          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
                              properties:
                                segmentCache:
                                  type: object
                                  default:
                                    emptyDir:
                                      capacity: null
                                  properties:
                                    emptyDir:
                                      type: object
                                      default:
                                        capacity: null
                                      properties:
                                        medium:
                                          type: string
                                          nullable: true
                                          description: |-
                                            The `medium` field controls where the `emptyDir` is stored.
                                            By default it is stored on the default storage backing the node the Pod is running on.
                                            Read more about [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)
                                            in the Kubernetes documentation.
                                        capacity:
                                          type: string
                                          nullable: true
                                          description: |-
                                            The size of the empty dir volume.
                                            This size is also configured as the segment cache size in Druid
                                            (minus the freePercentage).
                                            Specified as a [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
                                      description: Configuration settings for the empty dir volume where the cache is
                                        located.
                                    freePercentage:
                                      type: integer
                                      format: uint16
                                      maximum: 65535
                                      minimum: 0
                                      nullable: true
                                      description: How much of the configured storage to keep free. Defaults to 5%.
                                  description: Configure the size and backing storage type of the Druid segment
                                    cache.
                              description: |-
                                The storage settings for the Historical process.
                                Read more in the
                                [storage and resource documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/resources-and-storage#_historical_resources).
                          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: |-
                            The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                            Read more about graceful shutdown in the
                            [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    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
                                              type: string
                                              nullable: true
                                              description: >-
                                                The log level threshold.

                                                Log events with a lower log
                                                level are discarded.
                                          description: Configuration for the file appender
                                        custom:
                                          type: object
                                          properties:
                                            configMap:
                                              type: string
                                              nullable: true
                                              description: ConfigMap containing the log configuration files
                                          description: Log configuration provided in a ConfigMap
                                        console:
                                          type: object
                                          nullable: true
                                          properties:
                                            level:
                                              enum:
                                                - TRACE
                                                - DEBUG
                                                - INFO
                                                - WARN
                                                - ERROR
                                                - FATAL
                                                - NONE
                                              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
                                                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:
                                    segmentCache:
                                      emptyDir:
                                        capacity: null
                                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
                                    properties:
                                      segmentCache:
                                        type: object
                                        default:
                                          emptyDir:
                                            capacity: null
                                        properties:
                                          emptyDir:
                                            type: object
                                            default:
                                              capacity: null
                                            properties:
                                              medium:
                                                type: string
                                                nullable: true
                                                description: |-
                                                  The `medium` field controls where the `emptyDir` is stored.
                                                  By default it is stored on the default storage backing the node the Pod is running on.
                                                  Read more about [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)
                                                  in the Kubernetes documentation.
                                              capacity:
                                                type: string
                                                nullable: true
                                                description: |-
                                                  The size of the empty dir volume.
                                                  This size is also configured as the segment cache size in Druid
                                                  (minus the freePercentage).
                                                  Specified as a [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
                                            description: Configuration settings for the empty dir volume where the cache is
                                              located.
                                          freePercentage:
                                            type: integer
                                            format: uint16
                                            maximum: 65535
                                            minimum: 0
                                            nullable: true
                                            description: How much of the configured storage to keep free. Defaults to 5%.
                                        description: Configure the size and backing storage type of the Druid segment
                                          cache.
                                    description: |-
                                      The storage settings for the Historical process.
                                      Read more in the
                                      [storage and resource documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/resources-and-storage#_historical_resources).
                                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: |-
                                  The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                                  Read more about graceful shutdown in the
                                  [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                              requestedSecretLifetime:
                                type: string
                                nullable: true
                                description: >-
                                  Request secret (currently only autoTls
                                  certificates) lifetime from the secret
                                  operator, e.g. `7d`, or `30d`.

                                  This can be shortened by the
                                  `maxCertificateLifetime` setting on the
                                  SecretClass issuing the TLS certificate.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/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
                          jvmArgumentOverrides:
                            type: object
                            default:
                              add: []
                              remove: []
                              removeRegex: []
                            properties:
                              add:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be added
                              remove:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be removed by exact match
                              removeRegex:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments matching any of this regexes will be removed
                            description: |-
                              Allows overriding JVM arguments.
                              Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                              for details on the usage.
                    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
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/25.11/concepts/roles-and-role-groups).
                coordinators:
                  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
                                        type: string
                                        nullable: true
                                        description: >-
                                          The log level threshold.

                                          Log events with a lower log level are
                                          discarded.
                                    description: Configuration for the file appender
                                  custom:
                                    type: object
                                    properties:
                                      configMap:
                                        type: string
                                        nullable: true
                                        description: ConfigMap containing the log configuration files
                                    description: Log configuration provided in a ConfigMap
                                  console:
                                    type: object
                                    nullable: true
                                    properties:
                                      level:
                                        enum:
                                          - TRACE
                                          - DEBUG
                                          - INFO
                                          - WARN
                                          - ERROR
                                          - FATAL
                                          - NONE
                                        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
                                          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: |-
                                This role does not have any storage settings.
                                Only the Historical role uses disk storage.
                          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: |-
                            The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                            Read more about graceful shutdown in the
                            [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    roleConfig:
                      type: object
                      default:
                        listenerClass: cluster-internal
                        podDisruptionBudget:
                          enabled: true
                          maxUnavailable: null
                      properties:
                        listenerClass:
                          type: string
                          default: cluster-internal
                        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
                                              type: string
                                              nullable: true
                                              description: >-
                                                The log level threshold.

                                                Log events with a lower log
                                                level are discarded.
                                          description: Configuration for the file appender
                                        custom:
                                          type: object
                                          properties:
                                            configMap:
                                              type: string
                                              nullable: true
                                              description: ConfigMap containing the log configuration files
                                          description: Log configuration provided in a ConfigMap
                                        console:
                                          type: object
                                          nullable: true
                                          properties:
                                            level:
                                              enum:
                                                - TRACE
                                                - DEBUG
                                                - INFO
                                                - WARN
                                                - ERROR
                                                - FATAL
                                                - NONE
                                              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
                                                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: >-
                                      This role does not have any storage
                                      settings.

                                      Only the Historical role uses disk
                                      storage.
                                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: |-
                                  The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                                  Read more about graceful shutdown in the
                                  [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                              requestedSecretLifetime:
                                type: string
                                nullable: true
                                description: >-
                                  Request secret (currently only autoTls
                                  certificates) lifetime from the secret
                                  operator, e.g. `7d`, or `30d`.

                                  This can be shortened by the
                                  `maxCertificateLifetime` setting on the
                                  SecretClass issuing the TLS certificate.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/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
                          jvmArgumentOverrides:
                            type: object
                            default:
                              add: []
                              remove: []
                              removeRegex: []
                            properties:
                              add:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be added
                              remove:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be removed by exact match
                              removeRegex:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments matching any of this regexes will be removed
                            description: |-
                              Allows overriding JVM arguments.
                              Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                              for details on the usage.
                    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
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/25.11/concepts/roles-and-role-groups).
                clusterConfig:
                  type: object
                  required:
                    - deepStorage
                    - metadataStorageDatabase
                    - zookeeperConfigMapName
                  properties:
                    tls:
                      type: object
                      default:
                        serverAndInternalSecretClass: tls
                      nullable: true
                      properties:
                        serverAndInternalSecretClass:
                          type: string
                          default: tls
                          nullable: true
                          description: >-
                            This setting controls client as well as internal tls
                            usage:

                            - If TLS encryption is used at all

                            - Which cert the servers should use to authenticate
                            themselves against the clients

                            - Which cert the servers should use to authenticate
                            themselves among each other
                      description: |-
                        TLS encryption settings for Druid, more information in the
                        [security documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/security).
                        This setting only affects server and internal communication.
                        It does not affect client tls authentication, use `clusterConfig.authentication` instead.
                    ingestion:
                      type: object
                      nullable: true
                      properties:
                        s3connection:
                          type: object
                          oneOf:
                            - required:
                                - inline
                            - required:
                                - reference
                          nullable: true
                          properties:
                            inline:
                              type: object
                              required:
                                - host
                              properties:
                                tls:
                                  type: object
                                  nullable: true
                                  required:
                                    - verification
                                  properties:
                                    verification:
                                      type: object
                                      oneOf:
                                        - required:
                                            - none
                                        - required:
                                            - server
                                      properties:
                                        none:
                                          type: object
                                          description: Use TLS but don't verify certificates.
                                        server:
                                          type: object
                                          required:
                                            - caCert
                                          properties:
                                            caCert:
                                              type: object
                                              oneOf:
                                                - required:
                                                    - webPki
                                                - required:
                                                    - secretClass
                                              properties:
                                                webPki:
                                                  type: object
                                                  description: >-
                                                    Use TLS and the CA
                                                    certificates trusted by the
                                                    common web browsers to
                                                    verify the server.

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

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


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


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

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

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

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

                                            This must correspond to Volume names
                                            in the Pod that mount Listeners.
                                      description: |-
                                        [Scope](https://docs.stackable.tech/home/25.11/secret-operator/scope) of the
                                        [SecretClass](https://docs.stackable.tech/home/25.11/secret-operator/secretclass).
                                    secretClass:
                                      type: string
                                      description: "[SecretClass](https://docs.stackable.tech/home/25.11/secret-opera\
                                        tor/secretclass) containing the LDAP
                                        bind credentials."
                                  description: |-
                                    If the S3 uses authentication you have to specify you S3 credentials.
                                    In the most cases a [SecretClass](https://docs.stackable.tech/home/25.11/secret-operator/secretclass)
                                    providing `accessKey` and `secretKey` is sufficient.
                              description: |-
                                S3 connection definition as a resource.
                                Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/25.11/concepts/s3).
                            reference:
                              type: string
                          description: |-
                            Druid supports ingesting data from S3 buckets where the bucket name is specified in the ingestion task.
                            However, the S3 connection has to be specified in advance and only a single S3 connection is supported.
                            S3 connections can either be specified `inline` or as a `reference`.
                            Read the [S3 resource concept docs](https://docs.stackable.tech/home/25.11/concepts/s3) to learn more.
                      description: Configuration properties for data ingestion tasks.
                    deepStorage:
                      type: object
                      oneOf:
                        - required:
                            - hdfs
                        - required:
                            - s3
                      properties:
                        s3:
                          type: object
                          required:
                            - bucket
                          properties:
                            bucket:
                              type: object
                              oneOf:
                                - required:
                                    - inline
                                - required:
                                    - reference
                              properties:
                                inline:
                                  type: object
                                  required:
                                    - bucketName
                                    - connection
                                  properties:
                                    bucketName:
                                      type: string
                                      description: The name of the S3 bucket.
                                    connection:
                                      type: object
                                      oneOf:
                                        - required:
                                            - inline
                                        - required:
                                            - reference
                                      properties:
                                        inline:
                                          type: object
                                          required:
                                            - host
                                          properties:
                                            tls:
                                              type: object
                                              nullable: true
                                              required:
                                                - verification
                                              properties:
                                                verification:
                                                  type: object
                                                  oneOf:
                                                    - required:
                                                        - none
                                                    - required:
                                                        - server
                                                  properties:
                                                    none:
                                                      type: object
                                                      description: Use TLS but don't verify certificates.
                                                    server:
                                                      type: object
                                                      required:
                                                        - caCert
                                                      properties:
                                                        caCert:
                                                          type: object
                                                          oneOf:
                                                            - required:
                                                                - webPki
                                                            - required:
                                                                - secretClass
                                                          properties:
                                                            webPki:
                                                              type: object
                                                              description: >-
                                                                
                                                                Use TLS and the
                                                                CA certificates
                                                                trusted by the
                                                                common web browsers
                                                                to verify the
                                                                server.

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

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


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


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

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

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

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

                                                        This must correspond to
                                                        Volume names in the Pod
                                                        that mount Listeners.
                                                  description: |-
                                                    [Scope](https://docs.stackable.tech/home/25.11/secret-operator/scope) of the
                                                    [SecretClass](https://docs.stackable.tech/home/25.11/secret-operator/secretclass).
                                                secretClass:
                                                  type: string
                                                  description: "[SecretClass](https://docs.stackable.tech/home/25.11/secret-opera\
                                                    tor/secretclass) containing
                                                    the LDAP bind credentials."
                                              description: |-
                                                If the S3 uses authentication you have to specify you S3 credentials.
                                                In the most cases a [SecretClass](https://docs.stackable.tech/home/25.11/secret-operator/secretclass)
                                                providing `accessKey` and `secretKey` is sufficient.
                                          description: |-
                                            S3 connection definition as a resource.
                                            Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/25.11/concepts/s3).
                                        reference:
                                          type: string
                                      description: The definition of an S3 connection, either inline or as a
                                        reference.
                                  description: |-
                                    S3 bucket specification containing the bucket name and an inlined or referenced connection specification.
                                    Learn more on the [S3 concept documentation](https://docs.stackable.tech/home/25.11/concepts/s3).
                                reference:
                                  type: string
                              description: |-
                                The S3 bucket to use for deep storage. Can either be defined inline or as a reference,
                                read the [S3 bucket docs](https://docs.stackable.tech/home/25.11/concepts/s3) to learn more.
                            baseKey:
                              type: string
                              nullable: true
                              description: >-
                                The `baseKey` is similar to the `directory` in
                                HDFS; it is the root key at which

                                Druid will create its deep storage. If no
                                `baseKey` is given, the bucket root

                                will be used.
                          description: "[The S3 deep storage
                            configuration](https://docs.stackable.tech/home/25.\
                            11/druid/usage-guide/deep-storage#_s3)."
                        hdfs:
                          type: object
                          required:
                            - configMapName
                            - directory
                          properties:
                            directory:
                              type: string
                              description: The directory inside of HDFS where Druid should store its data.
                            configMapName:
                              type: string
                              description: |-
                                The [discovery ConfigMap](https://docs.stackable.tech/home/25.11/concepts/service_discovery)
                                for the HDFS instance. When running an HDFS cluster with the Stackable operator, the operator
                                will create this ConfigMap for you. It has the same name as your HDFSCluster resource.
                          description: |-
                            [The HDFS deep storage configuration](https://docs.stackable.tech/home/25.11/druid/usage-guide/deep-storage#_hdfs).
                            You can run an HDFS cluster with the [Stackable operator for Apache HDFS](https://docs.stackable.tech/home/25.11/hdfs/).
                      description: |-
                        [Druid deep storage configuration](https://docs.stackable.tech/home/25.11/druid/usage-guide/deep-storage).
                        Only one backend can be used at a time. Either HDFS or S3 are supported.
                    extraVolumes:
                      type: array
                      items:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      description: >-
                        Extra volumes similar to `.spec.volumes` on a Pod to
                        mount into every container, this can be useful to for

                        example make client certificates, keytabs or similar
                        things available to processors. These volumes will be

                        mounted into all pods at
                        `/stackable/userdata/{volumename}`.
                    authorization:
                      type: object
                      nullable: true
                      required:
                        - opa
                      properties:
                        opa:
                          type: object
                          required:
                            - configMapName
                          properties:
                            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 Druid 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.
                            Read the [Druid operator security documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/security)
                            for more information on how to write rules specifically for Druid.
                      description: Authorization settings for Druid like OPA
                    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.
                          authenticationClass:
                            type: string
                            description: Name of the
                              [AuthenticationClass](https://docs.stackable.tech/home/25.11/concepts/authentication)
                              used to authenticate users
                      default: []
                      description: |-
                        List of [AuthenticationClasses](https://docs.stackable.tech/home/25.11/concepts/authentication)
                        to use for authenticating users. TLS, LDAP and OIDC authentication are supported. More information in
                        the [Druid operator security documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/security#_authentication).

                        For TLS: Please note that the SecretClass used to authenticate users needs to be the same
                        as the SecretClass used for internal communication.
                    additionalExtensions:
                      type: array
                      items:
                        type: string
                      default: []
                      description: |-
                        Additional extensions to load in Druid.
                        The operator will automatically load all extensions needed based on the cluster
                        configuration, but for extra functionality which the operator cannot anticipate, it can
                        sometimes be necessary to load additional extensions.
                        Add configuration for additional extensions using [configuration override for Druid](https://docs.stackable.tech/home/25.11/druid/usage-guide/overrides).
                    zookeeperConfigMapName:
                      type: string
                      description: |-
                        Druid requires a ZooKeeper cluster connection to run.
                        Provide the name of the ZooKeeper [discovery ConfigMap](https://docs.stackable.tech/home/25.11/concepts/service_discovery)
                        here. When using the [Stackable operator for Apache ZooKeeper](https://docs.stackable.tech/home/25.11/zookeeper/)
                        to deploy a ZooKeeper cluster, this will simply be the name of your ZookeeperCluster resource.
                    metadataStorageDatabase:
                      type: object
                      required:
                        - connString
                        - dbType
                        - host
                        - port
                      properties:
                        host:
                          type: string
                          description: The host, i.e. `postgresql-druid`.
                        port:
                          type: integer
                          format: uint16
                          maximum: 65535
                          minimum: 0
                          description: The port, i.e. 5432
                        dbType:
                          enum:
                            - derby
                            - mysql
                            - postgresql
                          type: string
                          description: >-
                            The database type. Supported values are: `derby`,
                            `mysql` and `postgres`.

                            Note that a Derby database created locally in the
                            container is not persisted!

                            Derby is not suitable for production use.
                        connString:
                          type: string
                          description: >-
                            The connect string for the database, for Postgres
                            this could look like:

                            `jdbc:postgresql://postgresql-druid/druid`
                        credentialsSecret:
                          type: string
                          nullable: true
                          description: >-
                            A reference to a Secret containing the database
                            credentials.

                            The Secret needs to contain the keys `username` and
                            `password`.
                      description: Druid requires an SQL database to store metadata into. Specify
                        connection information here.
                    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: Common cluster wide configuration that can not differ or be
                    overridden on a role or role group level.
                middleManagers:
                  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
                                        type: string
                                        nullable: true
                                        description: >-
                                          The log level threshold.

                                          Log events with a lower log level are
                                          discarded.
                                    description: Configuration for the file appender
                                  custom:
                                    type: object
                                    properties:
                                      configMap:
                                        type: string
                                        nullable: true
                                        description: ConfigMap containing the log configuration files
                                    description: Log configuration provided in a ConfigMap
                                  console:
                                    type: object
                                    nullable: true
                                    properties:
                                      level:
                                        enum:
                                          - TRACE
                                          - DEBUG
                                          - INFO
                                          - WARN
                                          - ERROR
                                          - FATAL
                                          - NONE
                                        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
                                          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: |-
                                This role does not have any storage settings.
                                Only the Historical role uses disk storage.
                          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: |-
                            The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                            Read more about graceful shutdown in the
                            [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                        requestedSecretLifetime:
                          type: string
                          nullable: true
                          description: >-
                            Request secret (currently only autoTls certificates)
                            lifetime from the secret operator, e.g. `7d`, or
                            `30d`.

                            This can be shortened by the
                            `maxCertificateLifetime` setting on the SecretClass
                            issuing the TLS certificate.
                    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
                                              type: string
                                              nullable: true
                                              description: >-
                                                The log level threshold.

                                                Log events with a lower log
                                                level are discarded.
                                          description: Configuration for the file appender
                                        custom:
                                          type: object
                                          properties:
                                            configMap:
                                              type: string
                                              nullable: true
                                              description: ConfigMap containing the log configuration files
                                          description: Log configuration provided in a ConfigMap
                                        console:
                                          type: object
                                          nullable: true
                                          properties:
                                            level:
                                              enum:
                                                - TRACE
                                                - DEBUG
                                                - INFO
                                                - WARN
                                                - ERROR
                                                - FATAL
                                                - NONE
                                              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
                                                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: >-
                                      This role does not have any storage
                                      settings.

                                      Only the Historical role uses disk
                                      storage.
                                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: |-
                                  The time period Pods have to gracefully shut down, e.g. `30m`, `1h` or `2d`.
                                  Read more about graceful shutdown in the
                                  [graceful shutdown documentation](https://docs.stackable.tech/home/25.11/druid/usage-guide/operations/graceful-shutdown).
                              requestedSecretLifetime:
                                type: string
                                nullable: true
                                description: >-
                                  Request secret (currently only autoTls
                                  certificates) lifetime from the secret
                                  operator, e.g. `7d`, or `30d`.

                                  This can be shortened by the
                                  `maxCertificateLifetime` setting on the
                                  SecretClass issuing the TLS certificate.
                          replicas:
                            type: integer
                            format: uint16
                            maximum: 65535
                            minimum: 0
                            nullable: true
                          cliOverrides:
                            type: object
                            default: {}
                            additionalProperties:
                              type: string
                          envOverrides:
                            type: object
                            default: {}
                            description: |-
                              `envOverrides` configure environment variables to be set in the Pods.
                              It is a map from strings to strings - environment variables and the value to set.
                              Read the
                              [environment variable overrides documentation](https://docs.stackable.tech/home/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
                          jvmArgumentOverrides:
                            type: object
                            default:
                              add: []
                              remove: []
                              removeRegex: []
                            properties:
                              add:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be added
                              remove:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments to be removed by exact match
                              removeRegex:
                                type: array
                                items:
                                  type: string
                                default: []
                                description: JVM arguments matching any of this regexes will be removed
                            description: |-
                              Allows overriding JVM arguments.
                              Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                              for details on the usage.
                    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
                    jvmArgumentOverrides:
                      type: object
                      default:
                        add: []
                        remove: []
                        removeRegex: []
                      properties:
                        add:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be added
                        remove:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments to be removed by exact match
                        removeRegex:
                          type: array
                          items:
                            type: string
                          default: []
                          description: JVM arguments matching any of this regexes will be removed
                      description: |-
                        Allows overriding JVM arguments.
                        Please read on the [JVM argument overrides documentation](https://docs.stackable.tech/home/25.11/concepts/overrides#jvm-argument-overrides)
                        for details on the usage.
                  description: |-
                    This struct represents a role - e.g. HDFS datanodes or Trino workers. It has a key-value-map containing
                    all the roleGroups that are part of this role. Additionally, there is a `config`, which is configurable
                    at the role *and* roleGroup level. Everything at roleGroup level is merged on top of what is configured
                    on role level. There is also a second form of config, which can only be configured
                    at role level, the `roleConfig`.
                    You can learn more about this in the
                    [Roles and role group concept documentation](https://docs.stackable.tech/home/25.11/concepts/roles-and-role-groups).
                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.
              description: >-
                A Druid cluster stacklet. This resource is managed by the
                Stackable operator for Apache Druid.

                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/druid/).
            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 DruidClusterSpec via `CustomResource`
      served: true
      storage: true
      subresources:
        status: {}
      additionalPrinterColumns: []
metadata:
  name: druidclusters.druid.stackable.tech
  annotations:
    helm.sh/resource-policy: keep
apiVersion: apiextensions.k8s.io/v1
