本文记录了elastic search开始密码访问chart中所需要的配置,当前使用的chart包版本是elasticsearch-7.16.2.tgz
。
配置chart中的变量
首先是在values.yaml
文件中需要开始的配置项如下所示:
secret:
enabled: true
password: "listai"
secretMounts:
- name: elastic-certificates
secretName: elastic-certificates
path: /usr/share/elasticsearch/config/certs
extraEnvs:
- name: ELASTIC_USERNAME
valueFrom:
secretKeyRef:
name: elastic-credentials
key: username
- name: ELASTIC_PASSWORD
valueFrom:
secretKeyRef:
name: elastic-credentials
key: password
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
主要内容是需要创建两个secret,一个存储username和password,一个存储证书,证书是如何生成的请看后续。
通过env引用username和password,通过volume的方式将证书挂载到容器中对应的目录中。
- 需要注意的是开始密码认证必须要开启es节点之间的ssl访问认证,需要使用es自带的工具
elasticsearch-certutil
生成ssl访问所需要的证书 - 用户名默认的内置的super user:
elastic
,密码自己设定 - 集群实例个数不能低于2个才能正常使用
如何创建证书
1、生成CA 证书elastic-stack-ca.p12
elasticsearch-certutil ca --days 35600
查看证书的内容:
openssl pkcs12 -info -nodes -in elastic-stack-ca.p12
查看证书有效期,此证书签35600天:
openssl pkcs12 -in elastic-stack-ca.p12 -nodes -nokeys -clcerts | openssl x509 -enddate -noout
Enter Import Password:
notAfter=Apr 19 09:45:23 2121 GMT
2、创建es证书
elasticsearch-certutil cert --ca elastic-stack-ca.p12 --days 35600
查看证书内容:
openssl pkcs12 -info -nodes -in elastic-certificates.p12
查看时间:
openssl pkcs12 -in elastic-certificates.p12 -nodes -nokeys -clcerts | openssl x509 -enddate -noout
3、基于elastic-certificates.p12
创建secret资源:
cat > secret.yaml <<EOF
apiVersion: v1
kind: Secret
metadata:
name: elastic-certificates
type: Opaque
data:
elastic-certificates.p12: $(cat elastic-certificates.p12 | base64 | tr -d '\n')
EOF
如何测试安装后的es的用户名密码是正确的:
curl -k http://10.233.10.80:9200 -u elastic:listai