【发布时间】:2018-05-20 04:11:52
【问题描述】:
我正在使用 Search Guard 插件来保护由多个节点组成的弹性搜索集群。 这是我的 Dockerfile:
#!/bin/sh
FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3
USER root
# Install search guard
RUN bin/elasticsearch-plugin install --batch com.floragunn:search-guard-5:5.6.3-16 \
&& chmod +x \
plugins/search-guard-5/tools/hash.sh \
plugins/search-guard-5/tools/sgadmin.sh \
bin/init_sg.sh \
&& chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
USER elasticsearch
初始化 SearchGuard(创建内部用户并分配角色)。我需要在容器启动后运行脚本init_sg.sh。
问题是:除非 elasticsearch 正在运行,否则脚本不会初始化任何安全索引。
脚本的内容是:
sleep 10
plugins/search-guard-5/tools/sgadmin.sh -cd config/ -ts config/truststore.jks -ks config/kirk-keystore.jks -nhnv -icl
现在,我只是在容器启动后手动运行脚本,但由于我在 Kubernetes 上运行它。Pod 可能会因某种原因被杀死或失败并自动重新创建。在这种情况下,插件必须在容器启动后自动初始化!
那么如何实现呢?任何帮助或提示将不胜感激。
【问题讨论】:
-
每个集群只需要初始化 SG 一次。每次重新启动 Pod 时重新初始化 SG 将覆盖任何未保存的自定义角色/权限。
-
@nafooesi 绝对,你是对的!每个集群应该只初始化 SG 一次。
-
这个问题也解决了here
标签: docker elasticsearch kubernetes dockerfile elasticsearch-plugin