我希望在YAML安装文件中的kubernetes集群中配置默认的索引生命周期管理(ILM)策略和索引模板,而不是在安装后调用ES。我怎么能这么做?
我在基于YAML文件的kubernetes集群中安装了Elasticsearch。
下面的工作查询可以工作。
PUT _ilm/policy/logstash_policy
{
"policy": {
"phases": {
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}PUT _template/logstash_template
{
"index_patterns": ["logstash-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "logstash_policy"
}
}我希望在安装后立即进行上述设置,而不进行任何curl查询。
发布于 2020-01-28 15:59:05
我试着回答你的两个问题。
索引模板
可以在elasticsearch中使用此配置传递索引模板。例如:
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配置):
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的外观:
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部分,附加如下:
- name: ilm-configmap-volume
mountPath: /usr/share/filebeat/ilm-policy.json
subPath: ilm-policy.json
readOnly: true在“卷”一节中,附文如下:
- name: ilm-configmap-volume
configMap:
name: ilmpolicy-config我不确定浏览器中的间距是否正确,但这应该会给出一个很好的主意。我希望这对你的设置有用!祝好运。
发布于 2022-12-02 10:19:18
我使用了这个答案来为与ECK一起运行的Packet节拍提供一个自定义策略。
The ConfigMap:
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": {}
}
}
}
}
}节拍配置:
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引用配置中的文件。
https://stackoverflow.com/questions/56393389
复制相似问题