docker - 如何将 Docker 中的 elasticsearch 的 "xpack.security.enrollment.enabled"设置为“true”

标签 docker elasticsearch kibana

这就是我在“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和上面生成的密码。

Elastic with Docker

关于docker - 如何将 Docker 中的 elasticsearch 的 "xpack.security.enrollment.enabled"设置为“true”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75080885/

相关文章:

php - 如何从php容器中的dockerfile运行composer安装

ruby-on-rails - 使用 ElasticSearch + Tire 搜索多个术语

elasticsearch - 查询格式错误,应为 "END_OBJECT",但发现为 "FIELD_NAME"

hadoop - 在 Spark 作业上使用 ElasticSearch 时 Guava jar 冲突

python - 如何使用在 docker 容器中运行的 python 脚本创建(dockerized)Elasticsearch 索引?

elasticsearch - K8s - Metricbeat 发送数据但 Filebeat 不发送到 Elasticsearch

nginx - Kibana->启用SSL Nginx代理的ElasticsSearch瓦特/基本身份验证启用

angular - 为dockerized Angular应用程序配置Nginx

windows - Docker Windows - 在 bash 位置寻找 Ubuntu 命令

eclipse - 认证失败 : invalid password or missing SSH Key while import project in eclipse docker container