helm-charts/doris/values.yaml (85 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# deploy a doris cluster
dorisCluster:
# the name of doriscluster, if not set, the chart name will be used.
name: "doriscluster-helm"
# annotations for doris cluster.
annotations: {}
# specify the cn deploy or not.
enabledCn: false
# specify the broker deploy or not.
enabledBroker: false
# specify the doriscluster adminuser or not.
# set adminUser will record the password in clear text. This method has been abandoned and is not recommended.
# When adding adminuser. should follow the steps:
# 1. Start dorisclusert without adminUser
# 2. Run 'CREATE USER ...' or 'SET PASSWORD ...' in mysql client
# 3. Add the name and password added in the previous step to adminUser and execute helm
adminUser: {}
# name: root
# password: "12345"
# use authSecret can encrypt and save passwords, recommend this method
# 1. run shell: echo -n '{your_password}' | base64 to get password base64 string
# 2. run shell: echo -n '{your_user}' | base64 to get user base64 string
# 3. Fill the encrypted string into the corresponding position
# as follow, username is 'root' , password is 't0p-Secret'
authSecret: {}
# username: cm9vdA==
# password: dDBwLVNlY3JldA==
feSpec:
# annotations for fe pods and service
annotations: {}
replicas: 3
# electionNumber represents `FOLLOWER` number, replicas - electionNumber as `OBSERVER`
# electionNumber: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: fe-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for fe service.
# if you want to use a dedicated port for fe service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the fe service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30001
# targetPort: 9030
# - nodePort: 30002
# targetPort: 8030
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# type: "LoadBalancer"
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations:
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'fe.conf' is the startup config file of fe, and the name must be 'fe.conf'.
# fe.conf: |
# http_port = 8030
# rpc_port = 9020
# query_port = 9030
# edit_log_port = 9010
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# meta volume, mountPath is /opt/apache-doris/fe/doris-meta
# metaPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/fe/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
beSpec:
# annotations for be pods and service
annotations: {}
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: be-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for be service.
# if you want to use a dedicated port for be service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the be service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30003
# targetPort: 9040
# - nodePort: 30004
# targetPort: 8040
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# type: "LoadBalancer"
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'be.conf' is the startup config file of be, and the name must be 'be.conf'.
# be.conf: |
# be_port = 9060
# webserver_port = 8040
# heartbeat_service_port = 9050
# brpc_port = 8060
# storage_root_path = /data/doris/be/storage
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# data volume, mountPath is /opt/apache-doris/be/storage
# dataPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/be/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
cnSpec:
# annotations for cn pods and service
annotations: {}
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: be-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for cn service.
# if you want to use a dedicated port for cn service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the cn service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30005
# targetPort: 9040
# - nodePort: 30006
# targetPort: 8040
# type: "LoadBalancer"
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'be.conf' is the startup config file of cn, and the name must be 'be.conf'.
# be.conf: |
# be_port = 9060
# webserver_port = 8040
# heartbeat_service_port = 9050
# brpc_port = 8060
# storage_root_path = /data/doris/be/storage
# be_node_role=computation
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# data volume, mountPath is /opt/apache-doris/be/storage
# dataPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/be/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
# specific cn auto scale policy
autoScalingPolicy:
enable: true
# version: v2
minReplicas: 1
maxReplicas: 4
# hpaPolicy response to horizontlaPodAutoscaler's HorizontalPodAutoscalerSpec
hpaPolicy: {}
# metrics:
# - type: Resource
# resource:
# name: cpu
# target:
# type: Utilization
# averageUtilization: 30
brokerSpec:
# annotations for broker pods and service
annotations: {}
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: broker-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'apache_hdfs_broker.conf' is the startup config file of broker, and the name must be 'apache_hdfs_broker.conf'.
# apache_hdfs_broker.conf: |
# broker_ipc_port: 8000
# client_expire_seconds: 3600
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelector,displayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# logs volume, mountPath is /opt/apache-doris/apache_hdfs_broker/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]