如何在 Docker 中将 "xpack.security.enrollment.enabled" 设置为 "true for elasticsearch



我是这样在' Docker for windows '中使用Kibana启动elasticsearch的:

docker network create --driver bridge elastic
docker run -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 --name elasticsearch -v elasticsearch-data:/usr/share/elasticsearch/data -e "discovery.type=single-node" -e ELASTIC_USER=Andreas -e ELASTIC_PASSWORD=Hirsebrei docker.elastic.co/elasticsearch/elasticsearch:8.5.2
docker run --name kib-01 -p 5601:5601 docker.elastic.co/kibana/kibana:8.5.3

这一切都运行良好,我可以在浏览器中打开请求注册令牌的Kibana页面。我在命令行中使用以下代码来生成注册令牌:

docker exec -it elasticsearch /bin/sh

然后在shell中我这样做:

cd /usr/share/elasticsearch/bin/
./elasticsearch-create-enrollment-token --scope kibana

会导致以下错误消息:

ERROR: [xpack.security.enrollment.enabled] must be set to `true` to create an enrollment token

现在我迷路了。

谁能帮我解释一下如何将[xpack.security.enrollment.enabled]设置为true?

我也有同样的问题,在深入研究这个问题之后,我在这里和页脚的官方文档链接中发布了我的考虑。

docker vs docker compose

如果你启动docker run你必须遵循什么是写在官方弹性文档。特别是标记-it创建一个伪控制台,以自动生成密码和注册令牌

如果你用docker-compose.yml启动容器,自动生成的密码和注册将不会生成,(参见GitHub问题)并且需要使用以下命令手动生成:

docker exec -ti elastic_container_name /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
docker exec -ti elastic_container_name /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

如果你想要一个完整的组合文件,你必须使用官方的docker-compose文件from elastic文档在这里github在这里

如果你想要一个单节点,删除EVERYTHINGS关于node2和node3

安全我注意到(但可能是错误的),如果您使用任何安全环境变量,即ELASTIC_PASSWORD或事件设置xpack.security.enabled=true,您必须手动设置所有安全性(证书,密码等)。

如果您尝试移除安全与xpack.security.enabled=falsekibana不能正常工作。

用于开发的单节点

我把我的解决方案贴在这里

docker-compose.yml

version: '3'
services:
node01:
image: docker.elastic.co/elasticsearch/elasticsearch:8.8.0
networks:
- net1
ports:
- 9200:9200
container_name: es-node01
environment:
- discovery.type=single-node
kibana:
image: docker.elastic.co/kibana/kibana:8.8.0
networks:
- net1
ports:
- 5601:5601
container_name: kib-01
depends_on: 
- node01
networks:
net1:

docker compose up -d开始,等待直到所有启动。

启动此命令生成(重置)弹性用户密码docker exec -ti es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

启动此命令以生成注册令牌docker exec -ti es-node01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

在浏览器中打开http://localhost:5601/,这将弹出窗口插入注册令牌,然后要求验证码,打开kibana容器上的日志并读取代码。

完成后,它要求输入用户名和密码,插入elastic和上面生成的密码。

Elastic with Docker

相关内容

最新更新