Kibana 如何在Docker中为elasticsearch设置“xpack.security.enrollment.enabled”为“true

ukxgm1gy  于 2023-05-27  发布在  Kibana
关注(0)|答案(1)|浏览(468)

这是我如何在“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

bt1cpqcv

bt1cpqcv1#

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

docker vs docker compose

如果你启动docker run,你必须遵循官方弹性文档中所写的内容。特别地,标志-it创建自动生成密码和注册令牌所需的伪控制台
如果您使用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

如果你想要一个完整设置的合成文件,你必须使用来自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

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开始并等待,直到全部启动。
启动此命令以生成(重置)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

相关问题