常见 Helm Chart 配置项
对于每一个 Helm Chart,你都可以通过创建 values.yaml 来进行配置。当你需要应用配置时,你可以通过 helm upgrade 命令来应用配置:
helm upgrade --install ${release-name} ${chart-name} --namespace ${namespace} -f values.yaml
GreptimeDB Cluster Chart
完整的配置项可参考 GreptimeDB Cluster Chart。
GreptimeDB 运行镜像配置
顶层变量 image 用于配置集群全局的运行镜像,如下所示:
image:
# -- The image registry
registry: greptime-registry.cn-hangzhou.cr.aliyuncs.com
# -- The image repository
repository: greptime/greptimedb
# -- The image tag
tag: "v1.0.2"
# -- The image pull secrets
pullSecrets: []
如果你想为集群中的每个 Role 配置不同的镜像,可以使用 ${role}.podTemplate.main.image 字段(其中 role 可以是 meta、frontend、datanode 和 flownode),该字段会覆盖顶层变量 image 的配置,如下所示:
image:
# -- The image registry
registry: greptime-registry.cn-hangzhou.cr.aliyuncs.com
# -- The image repository
repository: greptime/greptimedb
# -- The image tag
tag: "v1.0.2"
# -- The image pull secrets
pullSecrets: []
frontend:
podTemplate:
main:
image: "greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:latest"
此时 frontend 的镜像将会被设置为 greptime-registry.cn-hangzhou.cr.aliyuncs.com/greptime/greptimedb:latest,而其他组件的镜像将会使用顶层变量 image 的配置。
服务端口配置
你可以使用如下字段来配置服务端口,如下所示:
httpServicePort:用于配置 HTTP 服务的端口,默认 4000;grpcServicePort:用于配置 gRPC 服务的端口,默认 4001;mysqlServicePort:用于配置 MySQL 服务的端口,默认 4002;postgresServicePort:用于配置 PostgreSQL 服务的端口,默认 4003;frontend.internalPort:用于配置内部服务的端口,默认 4010,此端口用于 GreptimeDB 组件之间的内部通信。
Datanode 存储配置
你可以通过 datanode.storage 字段来配置 Datanode 的存储,如下所示:
datanode:
storage:
# -- Storage class for datanode persistent volume
storageClassName: null
# -- Storage size for datanode persistent volume
storageSize: 20Gi
# -- Storage retain policy for datanode persistent volume
storageRetainPolicy: Retain
# -- The dataHome directory, default is "/data/greptimedb/"
dataHome: "/data/greptimedb"
storageClassName:用于配置 StorageClass,默认使用 Kubernetes 当前默认的 StorageClass;storageSize:用于配置 Storage 的大小,默认 20Gi。你可以使用常用的容量单位,如50Gi等;storageRetainPolicy:用于配置 Storage 的保留策略,默认Retain,如果设置为Delete,则当集群被删除时,相应的 Storage 也会被删除;dataHome:用于配置数据目录,默认/data/greptimedb/;
运行资源配置
顶层变量 base.podTemplate.main.resources 用于全局配置每个 Role 的资源,如下所示:
base:
podTemplate:
main:
resources:
requests:
memory: "1Gi"
cpu: "1"
limits:
memory: "2Gi"
cpu: "2"
如果你想为集群中的每个 Role 配置不同的资源,可以使用 ${role}.podTemplate.main.resources 字段(其中 role 可以是 meta、frontend、datanode、flownode 等),该字段会覆盖顶层变量 base.podTemplate.main.resources 的配置,如下所示:
base:
podTemplate:
main:
resources:
requests:
memory: "1Gi"
cpu: "1"
limits:
memory: "2Gi"
cpu: "2"
frontend:
podTemplate:
main:
resources:
requests:
cpu: "2"
memory: "4Gi"
limits:
cpu: "4"
memory: "8Gi"
服务运行副本数配置
对于不同 Role 的副本数,可以通过 ${role}.replicas 字段进行配置对应的副本数,如下所示:
frontend:
replicas: 3
datanode:
replicas: 3
你可以通过配置其副本数来实现水平扩缩。
环境变量配置
你既可以通过 base.podTemplate.main.env 字段配置全局的环境变量,也可以通过 ${role}.podTemplate.main.env 字段为每个 Role 配置不同的环境变量,如下所示:
base:
podTemplate:
main:
env:
- name: GLOBAL_ENV
value: "global_value"
frontend:
podTemplate:
main:
env:
- name: FRONTEND_ENV
value: "frontend_value"
注 入配置文件
对于不同 Role 的服务,你可以通过 ${role}.configData 字段注入自定义的 TOML 配置文件,如下所示:
datanode:
configData: |
[[region_engine]]
[region_engine.mito]
# Number of region workers
num_workers = 8