这是我如何在“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
?
1条答案
按热度按时间bt1cpqcv1#
我也有同样的问题,在深入研究这个问题后,我在这里发布了我的考虑,并在页脚链接到官方文档。
docker vs docker compose
如果你启动
docker run
,你必须遵循官方弹性文档中所写的内容。特别地,标志-it
创建自动生成密码和注册令牌所需的伪控制台如果您使用
docker-compose.yml
启动容器,则不会生成自动生成的密码和注册(参见GitHub Issue),并且需要使用以下命令手动生成:如果你想要一个完整设置的合成文件,你必须使用来自elastic docs here github here的官方docker-compose文件。
如果你想要一个节点,删除关于node 2和node 3的所有内容
安全性
我注意到(但可能是错的),如果你使用任何安全环境变量,即。
ELASTIC_PASSWORD
或事件设置xpack.security.enabled=true
必须手动设置所有安全性(证书、密码等)。如果您尝试 * 删除 * 安全与
xpack.security.enabled=false
kibana不正常工作。单节点开发
我在这里发布我的解决方案
docker-compose.yml
从
docker compose up -d
开始并等待,直到全部启动。启动此命令以生成(重置)elastic 用户密码
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