前言
从 es7 升级到 es8 之后,启动容器默认启用了 ssl 安全传输配置,但是在 Rancher 中部署的话,需要挂载 pvc 实现 data、logs 等目录持久化,启用 ssl 需要对证书等进行操作,非常麻烦,非常坑。
本文以启用安全配置(即需要用户名密码接入服务)但不启用 ssl 为例,在 Rancher 中部署 es 8.5.1 版本服务。
因为 pvc 挂载后,目录属主默认为 root
需要改为 elasticsearch
,所以整体部署分为三步:
- 需要覆盖容器默认启动脚本,以
root
用户进入容器,将 pvc 挂载目录属主进行更改 - 第二步以正常脚本启动容器,使用默认用户
elasticsearch
运行容器 - 第三步进入容器命令行,重置内嵌系统用户
elastic
和kibana_system
1. 部署工作负载
1.1 基础信息
注意点:
- 由于需要持久化数据目录,所以部署为 StatefulSet 类型
- 需要对集群外提供服务,所以将 9200 端口以 NodePort 方式映射
1.2 环境变量
详细说明
# 单节点部署
discovery.type=single-node
# 无需自动下载 geoip
ingest.geoip.downloader.enabled=false
xpack.license.self_generated.type=basic
# 启用密码认证
xpack.security.enabled=true
xpack.security.enrollment.enabled=true
# 不启用 SSL 传输加密,否则需要处理证书等
xpack.security.transport.ssl.enabled=false
1.3 数据卷
需要将数据目录 data
和日志目录 logs
进行持久化
1.4 入口命令及用户 UID
- 入口命令先覆盖镜像自身的命令,使用
/bin/bash
- 用户 UID 使用 0 即
root
2. 修改挂载目录属主
由于 PVC 挂载目录的属主默认为 root/root
,例如:
进入容器命令行,修改目录属主
chown -R elasticsearch data/
chown -R elasticsearch logs/
修改后查看 ls -lah
退出命令行,停止容器。
3. 修改工作负载
- 清空入口命令
- 用户 UID 设置为 1000 即
elasticsearch
- 重启工作负载
4. 重置用户密码
进入容器命令行,执行重置命令
bin/elasticsearch-reset-password -u elastic -i
# kibana_system 用于 kibana 接入 es
bin/elasticsearch-reset-password -u kibana_system -i
重置成功后,可以访问 http://宿主机IP:NodePort
端口登录验证