bitnamicharts/elasticsearchElasticsearch 是一个分布式搜索和分析引擎,适用于网络搜索、日志监控和实时分析场景,是大数据应用的理想选择。本 Bitnami Helm Chart 用于在 Kubernetes 集群上通过 Helm 包管理器快速部署 Elasticsearch 集群。
Elasticsearch 官方概述
商标说明:本软件列表由 Bitnami 打包。所提及的商标分属各自公司所有,使用这些商标并不意味着任何关联或背书。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像仓库,推出 Bitnami Secure Images 计划,具体变更如下:
详情参见 Bitnami Secure Images 公告。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/elasticsearch
指定发布名称和仓库参数:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/elasticsearch
注意:需将
REGISTRY_NAME和REPOSITORY_NAME替换为实际 Helm 仓库地址。Bitnami 官方仓库示例:REGISTRY_NAME=registry-1.docker.io,REPOSITORY_NAME=bitnamicharts。
Bitnami Charts 允许为所有容器设置资源请求和限制,通过 resources 参数配置。生产环境必须设置资源请求,且需根据实际场景调整。
可通过 resourcesPreset 参数使用预设资源配置(如 small、medium),但生产环境建议手动配置以适配具体需求。详情参见 Kubernetes 资源管理文档。
生产环境强烈建议使用不可变标签,避免因标签更新导致部署自动变更。Bitnami 会在主容器版本更新、重大变更或存在严重漏洞时发布新 Chart。
通过设置 metrics.enabled=true 启用 Prometheus 集成,将在所有 Pod 中部署包含 elasticsearch_exporter 的 Sidecar 容器,并创建 metrics Service(支持自动被 Prometheus 抓取的注解配置)。
前提条件
需已安装 Prometheus 或 Prometheus Operator。推荐使用 Bitnami Prometheus Helm Chart 或 Bitnami Kube Prometheus Helm Chart。
与 Prometheus Operator 集成
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象。需确保集群已安装 Prometheus Operator CRD,否则会报错:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
通过 image.tag 参数指定 有效镜像标签 以修改 Elasticsearch 版本,例如 image.tag=X.Y.Z。此方法同样适用于 exporters 等其他镜像。
Bitnami Charts 在首次启动时配置凭证,后续凭证变更需手动操作:
SECRET_NAME 和 PASSWORD 占位符):shellkubectl create secret generic SECRET_NAME --from-literal=elasticsearch-password=PASSWORD --dry-run -o yaml | kubectl apply -f -
Elasticsearch 要求主机内核调整以下参数,否则容器将启动失败:
本 Chart 通过特权 initContainer 自动配置内核参数:
shellsysctl -w vm.max_map_count=262144 && sysctl -w fs.file-max=65536
可通过 sysctlImage.enabled=false 禁用此 initContainer。
通过设置 global.kibanaEnabled=true 启用 Kibana 子 Chart。安装时添加 --render-subchart-notes 参数可查看 Kibana 操作说明。
TLS 加密配置注意事项
当启用 Elasticsearch REST 加密时,需同步配置 Kibana:
yamlsecurity: enabled: true elasticPassword: "<PASSWORD>" # 需与 Elasticsearch 密码一致 tls: autoGenerated: true # 自动生成 TLS 证书 kibana: elasticsearch: security: auth: enabled: true kibanaUsername: "<USERNAME>" # 默认用户为 elastic kibanaPassword: "<PASSWORD>" # 与 Elasticsearch 密码一致 tls: enabled: true # 必须与 Elasticsearch REST 加密状态一致 existingSecret: RELEASENAME-elasticsearch-coordinating-crt # 证书 Secret 名称 usePemCerts: true # 自动生成的证书为 PEM 格式
核心一致项:启用 Elasticsearch REST 加密后,需确保以下值一致:
yamlsecurity: tls: restEncryption: true kibana: elasticsearch: security: tls: enabled: true
通过以下配置部署单节点集群(单 master 节点承担所有角色):
yamlmaster: masterOnly: false replicaCount: 1 data: replicaCount: 0 coordinating: replicaCount: 0 ingest: replicaCount: 0
单节点集群将启用 单节点发现模式。
扩缩容注意事项:如需扩展至多节点,需先刷新现有 StatefulSet 配置(例如先缩容至 0 副本避免配置不一致):
consolekubectl scale statefulset <DEPLOYMENT_NAME>-master --replicas=0 helm upgrade <DEPLOYMENT_NAME> oci://REGISTRY_NAME/REPOSITORY_NAME/elasticsearch --reset-values --set master.masterOnly=false
通过 extraEnvVars 直接添加环境变量:
yamlextraEnvVars: - name: ELASTICSEARCH_VERSION value: 7.0
或通过 ConfigMap/Secret 挂载:
extraEnvVarsCM: 引用包含环境变量的 ConfigMap 名称extraEnvVarsSecret: 引用包含环境变量的 Secret 名称通过以下参数挂载自定义初始化脚本(路径:/docker-entrypoint.init-db):
initScripts: 直接在 values.yaml 中定义脚本内容initScriptsCM: 引用包含脚本的 ConfigMap 名称initScriptsSecret: 引用包含敏感脚本的 Secret 名称示例:
yamlinitScriptsCM: special-scripts initScriptsSecret: special-scripts-sensitive
需先注册快照仓库(参考 官方文档)。通过以下配置使用共享文件系统存储快照:
yamlextraVolumes: - name: snapshot-repository nfs: server: nfs.example.com # 替换为 NFS 服务器地址 path: /share1 # 替换为共享路径 extraVolumeMounts: - name: snapshot-repository mountPath: /snapshots snapshotRepoPath: "/snapshots" # 快照仓库路径
通过 XXX.sidecars 参数(XXX 为节点角色,如 master.sidecars)添加 Sidecar 容器:
yamlsidecars: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
通过 initContainers 参数添加 Init 容器:
yamlinitContainers: - name: your-image-name image: your-image imagePullPolicy: Always
通过 XXX.affinity 参数自定义亲和性规则,或使用 XXX.podAffinityPreset、XXX.podAntiAffinityPreset、XXX.nodeAffinityPreset 应用预设配置(参考 bitnami/common Chart)。
使用 Velero 备份和恢复 Helm Chart 部署,需备份源部署的持久卷并挂载至新部署。详情参见 Velero 使用指南。
Elasticsearch 数据存储路径为容器内 /bitnami/elasticsearch/data。默认通过动态卷供应创建 Persistent Volume Claim (PVC)。
由于镜像默认以非 root 用户运行,需确保持久卷挂载路径权限正确。可通过以下方式配置:
volumePermissions.enabled=true 启用 initContainer 调整权限| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 仓库密钥数组 | [] |
global.defaultStorageClass | 持久卷全局默认 StorageClass | "" |
global.storageClass | 已弃用,使用 global.defaultStorageClass 替代 | "" |
global.elasticsearch.service.name | Kibana 子 Chart 引用的 Elasticsearch 服务名(当 kibanaEnabled=false 或设置 global.elasticsearch.service.fullname 时忽略) | elasticsearch |
global.elasticsearch.service.fullname | Kibana 子 Chart 引用的 Elasticsearch 完整服务名(当 kibanaEnabled=false 时忽略) | "" |
global.elasticsearch.service.ports.restAPI | Kibana 子 Chart 使用的 Elasticsearch REST API 端口(当 kibanaEnabled=false 时忽略) | 9200 |
global.kibanaEnabled | 是否启用 Kibana | false |
global.security.allowInsecureImages | 是否允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整安全上下文以适配 OpenShift restricted-v2 SCC(移除 runAsUser、runAsGroup、fsGroup),可选值:auto(自动检测 OpenShift 时应用)、force(强制应用)、disabled(禁用) | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖资源全名 | "" |
fullnameOverride | 完全覆盖资源全名 | "" |
commonLabels | 添加到所有部署对象的标签 | {} |
commonAnnotations | 添加到所有部署对象的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 对象数组 | [] |
namespaceOverride | 覆盖命名空间 | "" |
usePasswordFiles | 以文件形式挂载凭证(而非环境变量) | true |
diagnosticMode.enabled | 启用诊断模式(禁用所有探针并覆盖命令) | false |
diagnosticMode.command | 诊断模式下覆盖所有容器的命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下覆盖所有容器的参数 | ["infinity"] |
| 参数名 | 描述 | 默认值 |
|---|---|---|
clusterName | Elasticsearch 集群名称 | elastic |
containerPorts.restAPI | Elasticsearch REST API 端口 | 9200 |
containerPorts.transport | Elasticsearch 传输端口 | 9300 |
plugins | 要安装的插件列表(逗号分隔) | "" |




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务