官方 helm:https://github.com/elastic/helm-charts/blob/v7.16.2/elasticsearch
查看官方的例子,可以看到要修改的点有
- elasticsearch.yml 设置开启 xpack
- 在生产环境中,开启 xpack 必须开启 transport 的 ssl,所以还要生成证书并挂载
- es 超级管理员 elastic 的密码
在修改 values.yaml 文件之前,我们要先创建用户密码的 secret 文件和证书的 secret 文件
创建密码的 secret 对象
kubectl create secret generic elastic-credentials --from-literal=password=123123 -n efk
创建证书的 secret 对象
先生成证书
-
在本地使用 docker 运行一个 es
docker run -d --name es -e discovery.type=single-node elasticsearch:7.14.1
-
进入容器内部,cd 到 /usr/share/elasticsearch/bin 目录下,运行
elasticsearch-certutil cert
-
将 /usr/share/elasticsearch/elastic-certificates.p12 复制出来
-
使用证书文件创建 secret 对象
kubectl create secret generic elastic-credentials --from-file=elastic-certificates.p12 -n efk
values.yaml 中需要修改的地方
antiAffinity: soft
esConfig:
elasticsearch.yml: |
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.http.ssl.enabled: true
image: elasticsearch
imageTag: 7.14.1
replicas: 2
extraEnvs:
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: elastic-credentials
key: password
secretMounts:
- name: elastic-certificates
secretName: elastic-certificates
path: /usr/share/elasticsearch/config/certs
roles:
master: "true"
data: "true"
坑:我一开始使用 rancher 创建证书的 secret 文件启动失败,要使用 kubectl 命令来创建
参考:https://cloud.tencent.com/developer/article/1754675