首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在YAML文件中配置弹性搜索索引生命周期管理(ILM)

如何在YAML文件中配置弹性搜索索引生命周期管理(ILM)
EN

Stack Overflow用户
提问于 2019-05-31 10:30:37
回答 2查看 2.7K关注 0票数 4

我希望在YAML安装文件中的kubernetes集群中配置默认的索引生命周期管理(ILM)策略和索引模板,而不是在安装后调用ES。我怎么能这么做?

我在基于YAML文件的kubernetes集群中安装了Elasticsearch。

下面的工作查询可以工作。

代码语言:javascript
复制
PUT _ilm/policy/logstash_policy
{
    "policy": {
        "phases": {
            "delete": {
                "min_age": "30d",
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}
代码语言:javascript
复制
PUT _template/logstash_template
{
    "index_patterns": ["logstash-*"],
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "index.lifecycle.name": "logstash_policy"
    }
}

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

EN

回答 2

Stack Overflow用户

发布于 2020-01-28 15:59:05

我试着回答你的两个问题。

索引模板

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

代码语言:javascript
复制
setup.template:
  name: "<chosen template name>-%{[agent.version]}"
  pattern: "<chosen pattern name>-%{[agent.version]}-*"

查看ES文档,看看这个setup.template到底属于哪里,您就可以继续了。

ilm政策

实现此功能的方法是将具有ilm配置的ilm. file文件获取到pod的/usr/share/file节拍/目录中。在YAML安装文件中,您可以使用配置中的这一行来使其正常工作(我已经添加了整个ilm配置):

代码语言:javascript
复制
setup.ilm:
  enabled: true
  policy_name: "<policy name>"
  rollover_alias: "<rollover alias name
  policy_file: "ilm-policy.json"
  pattern: "{now/d}-000001"

那么,如何把文件拿到那里呢?这些成分是包含您的ilm. mount的1个configmap,以及守护进程配置中的卷和volumeMount,用于将configmap的内容挂载到pod的目录中。

备注:I使用舵机将文件传输部署到AKS集群(V1.15),该集群连接到弹性云。在您的示例中,存储json的应用程序文件夹可能是/usr/share/elasticsearch/ilm-policy.json

下面,您将看到像{{ .Files.Get <...> }}这样的行,它是帮助helm获取文件内容的模板函数。或者,您可以将文件内容直接复制到configmap yaml中,但是在我看来,将文件分开使其更易于管理。

configMap

确保您的ilm. Make可以通过您的部署到达。以下是configmap的外观:

代码语言:javascript
复制
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 }}

Daemonset

在deamonSet的volumeMounts部分,附加如下:

代码语言:javascript
复制
- name: ilm-configmap-volume
  mountPath: /usr/share/filebeat/ilm-policy.json
  subPath: ilm-policy.json
  readOnly: true

在“卷”一节中,附文如下:

代码语言:javascript
复制
 - name: ilm-configmap-volume
   configMap:
     name: ilmpolicy-config

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

票数 4
EN

Stack Overflow用户

发布于 2022-12-02 10:19:18

我使用了这个答案来为与ECK一起运行的Packet节拍提供一个自定义策略。

The ConfigMap:

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: packetbeat-ilmpolicy
  labels:
    k8s-app: packetbeat
data:
  ilm-policy.json: |-
    {
      "policy": {
        "phases": {
          "hot": {
            "min_age": "0ms",
            "actions": {
              "rollover": {
                "max_age": "1d"
              }
            }
          },
          "delete": {
            "min_age": "1d",
            "actions": {
                "delete": {}
            }
          }
        }
      }
    }

节拍配置:

代码语言:javascript
复制
apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
metadata:
  name: packetbeat
spec:
  type: packetbeat
  elasticsearchRef:
    name: demo
  kibanaRef:
    name: demo
  config:
    pipeline: geoip-info
    packetbeat.interfaces.device: any
    packetbeat.protocols:
      - type: dns
        ports: [53]
        include_authorities: true
        include_additionals: true
      - type: http
        ports: [80, 8000, 8080, 9200, 9300]
      - type: tls
        ports: [443, 993, 995, 5223, 8443, 8883, 9243]
    packetbeat.flows:
      timeout: 30s
      period: 30s
    processors:
      - add_cloud_metadata: {}
      - add_host_metadata: {}
    setup.ilm:
      enabled: true
      overwrite: true
      policy_name: "packetbeat"
      policy_file: /usr/share/packetbeat/ilm-policy.json
      pattern: "{now/d}-000001"
  daemonSet:
    podTemplate:
      spec:
        terminationGracePeriodSeconds: 30
        hostNetwork: true
        automountServiceAccountToken: true # some older Beat versions are depending on this settings presence in k8s context
        dnsPolicy: ClusterFirstWithHostNet
        tolerations:
          - operator: Exists
        containers:
          - name: packetbeat
            securityContext:
              runAsUser: 0
              capabilities:
                add:
                  - NET_ADMIN
            volumeMounts:
              - name: ilmpolicy-config
                mountPath: /usr/share/packetbeat/ilm-policy.json
                subPath: ilm-policy.json
                readOnly: true
        volumes:
          - name: ilmpolicy-config
            configMap:
              name: packetbeat-ilmpolicy

节拍配置中的重要部分是卷挂载,我们在其中将configmap挂载到容器中。

在此之后,我们可以使用setup.ilm.policy_file引用配置中的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56393389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档