如何在安装过程中在 YAML 文件中配置 Elasticsearch 索引生命周期管理 (ILM)

kko*_*ski 4 configuration elasticsearch kubernetes

我想在 kubernetes 集群中安装 ES 期间在 YAML 安装文件中配置默认​​索引生命周期管理 (ILM)策略和索引模板,而不是在安装后调用 ES API。我怎样才能做到这一点?

我已经根据 YAML 文件在 kubernetes 集群中安装了 Elasticsearch。

以下作品查询作品。

PUT _ilm/policy/logstash_policy
{
    "policy": {
        "phases": {
            "delete": {
                "min_age": "30d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
PUT _template/logstash_template
{
    "index_patterns": ["logstash-*"],
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "index.lifecycle.name": "logstash_policy"
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在安装后立即进行上述设置,而不进行任何curl查询。

Lud*_*udo 5

我会尽力回答你的两个问题。

索引模板

您可以在 elasticsearch yaml 中使用此配置传递索引模板。例如:

setup.template:
  name: "<chosen template name>-%{[agent.version]}"
  pattern: "<chosen pattern name>-%{[agent.version]}-*"
Run Code Online (Sandbox Code Playgroud)

查看 ES 文档,了解这个 setup.template 到底属于哪里,然后就可以开始了。

工业管理政策

实现此操作的方法是将包含 ilm 配置的 ilm-policy.json 文件获取到 pod 的 /usr/share/filebeat/ 目录。在 YAML 安装文件中,然后您可以在配置中使用此行来使其正常工作(我已添加整个 ilm 配置):

setup.ilm:
  enabled: true
  policy_name: "<policy name>"
  rollover_alias: "<rollover alias name
  policy_file: "ilm-policy.json"
  pattern: "{now/d}-000001"
Run Code Online (Sandbox Code Playgroud)

那么,如何获取该文件呢?其成分是 1 个包含 ilm-policy.json 的 configmap,以及 daemonset 配置中的一个volume和volumeMount,用于将 configmap 的内容挂载到 pod 的目录。

注意:我使用 helm 将 filebeat 部署到 AKS 集群 (v 1.15),该集群连接到弹性云。在您的情况下,存储 json 的应用程序文件夹可能是/usr/share/elasticsearch/ilm-policy.json.

下面,您将看到类似 的行{{ .Files.Get <...> }},它是 helm 获取文件内容的模板函数。或者,您可以将文件内容直接复制到 configmap yaml 中,但在我看来,将文件分开可以更好地管理。

配置映射

确保您的 ilm-policy.json 位于部署可访问的位置。配置映射如下所示:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ilmpolicy-config
  namespace: logging
  labels:
    k8s-app: filebeat
data:
  ilm-policy.json: |-
{{ .Files.Get "ilm-policy.json" | indent 4 }}
Run Code Online (Sandbox Code Playgroud)

恶魔群

在 deamonSet 的 volumeMounts 部分,添加以下内容:

- name: ilm-configmap-volume
  mountPath: /usr/share/filebeat/ilm-policy.json
  subPath: ilm-policy.json
  readOnly: true
Run Code Online (Sandbox Code Playgroud)

并在卷部分添加以下内容:

 - name: ilm-configmap-volume
   configMap:
     name: ilmpolicy-config
Run Code Online (Sandbox Code Playgroud)

我不确定浏览器中的间距是否正确,但这应该给出一个很好的主意。我希望这对您的设置有用!祝你好运。