Elasticsearch 7.17.5 Docker Run 单节点 HTTPS

创建目录

mkdir -p /opt/elasticsearch/{data,certs}

系统参数

sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p

创建证书

docker run --rm \
-v /opt/elasticsearch/certs:/usr/share/elasticsearch/config/certs \
docker.elastic.co/elasticsearch/elasticsearch:7.17.5 \
bash -c '
elasticsearch-certutil ca --silent \
--out config/certs/elastic-stack-ca.p12 \
--pass ""

elasticsearch-certutil cert \
--ca config/certs/elastic-stack-ca.p12 \
--silent \
--out config/certs/elastic-certificates.p12 \
--pass ""
'

启动

docker run -d \
--name elasticsearch \
--restart always \
-p 9200:9200 \
-p 9300:9300 \
-e node.name=es01 \
-e cluster.name=es-cluster \
-e discovery.type=single-node \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-e xpack.security.enabled=true \
-e xpack.security.http.ssl.enabled=true \
-e xpack.security.http.ssl.keystore.path=certs/elastic-certificates.p12 \
-e xpack.security.transport.ssl.enabled=true \
-e xpack.security.transport.ssl.keystore.path=certs/elastic-certificates.p12 \
-e xpack.security.transport.ssl.truststore.path=certs/elastic-certificates.p12 \
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \
-v /opt/elasticsearch/certs:/usr/share/elasticsearch/config/certs \
--ulimit memlock=-1:-1 \
docker.elastic.co/elasticsearch/elasticsearch:7.17.5

说明: 上述最重要的一处即为:
xpack.security.enabled=true
xpack.security.http.ssl.enabled=true
xpack.security.http.ssl.keystore.path=certs/http.p12, 即告诉es,开启https,且证书在何处。

设置密码

docker exec -it elasticsearch bash
bin/elasticsearch-reset-password -u elastic -i

测试

curl -k -u elastic:密码 https://127.0.0.1:9200