这就是我在“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
一切运行正常,我可以在浏览器中打开请求注册 token 的 Kibana 页面。 我使用命令行中的以下命令来生成注册 token :
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 与 docker compose
我你启动docker run
您必须遵循官方弹性文档中所写的内容。特别是标志-it
创建自动生成密码和注册 token 所需的伪控制台
如果您使用 docker-compose.yml
启动容器不会生成自动生成的密码和注册(请参阅 GitHub Issue )
并且需要使用以下命令手动生成:
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
如果您想要一个具有完整设置的 compose 文件,您必须使用来自 elastic 的官方 docker-compose 文件 docs here github here .
如果您想要单个节点,请删除有关节点2和节点3的所有内容
安全
我注意到(但可能是错误的),如果您使用任何安全环境变量,即 ELASTIC_PASSWORD
或事件设置xpack.security.enabled=true
您必须手动设置所有安全性(证书、密码等)。
如果您尝试使用xpack.security.enabled=false
删除安全性kibana 无法正常工作。
用于开发目的的单节点
我在这里发布我的解决方案
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
启动此命令以生成注册 token
docker exec -ti es-node01 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
在浏览器中打开http://localhost:5601/
这将弹出窗口插入注册 token ,然后要求验证码,打开 kibana 容器上的日志并读取代码。
完成后,它会要求输入用户名和密码,请插入elastic和上面生成的密码。
关于docker - 如何将 Docker 中的 elasticsearch 的 "xpack.security.enrollment.enabled"设置为“true”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75080885/