K8S部署ELK Stack的一些笔记

  • Post author:
  • Post category:技术
  • Post comments:0评论

我部署的7.11的版本。就为了收集项目日志,ES存储,filebeat收集,Kibana呈现。本身比较简单,但是加权限就到坑里了,简单记录一下,如果以后有时间再整理一份比较完善的文档。
特别说明,本文不含任何持久化配置!!!请根据自己情况自行添加。

elasticsearch

不知道别人K8S部署ES是怎么加用户的,我确实没整明白,只能用笨办法了。我只写重点。

创建Deployment,SVC和ConfigMap

kind: Deployment
spec:
  template:
    spec:
      containers
        env:
          - name: discovery.type
            value: single-node
        volumeMounts:
          - name: config
            mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
            readOnly: true
            subPath: elasticsearch.yml
    volumes:
      - name: config
        configMap:
          name: elasticsearch-config-file
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: elasticsearch-config-file
  namespace: logging
data:
  elasticsearch.yml: |-
    cluster.name: "docker-cluster"
    network.host: 0.0.0.0
    xpack.security.enabled: true
    # 下面这句没有效果
    xpack.security.authc.accept_default_password: true

进入POD创建密码

kubectl exec 【pod名】 -n 【命名空间】 -it -- /bin/sh

进入pod以后,自动生成各账户密码,记下来!

cd /usr/share/elasticsearch
bin/elasticsearch-setup-passwords auto

如果想手动创建密码也行,挨个儿输入密码即可

bin/elasticsearch-setup-passwords interactive

退出交互

Kibana

部署

也是用笨办法。只写重点。

kind: Deployment
spec:
  template:
    spec:
      containers
        env:
        - name: ELASTICSEARCH_URL
          value: http://elasticsearch:9200
        - name: XPACK_SECURITY_ENABLED
          value: "true"
        - name: ELASTICSEARCH_USERNAME
          value: "kibana_system"
        # 密码是手动在es里设置的
        - name: ELASTICSEARCH_PASSWORD
          value: "XXXXXXXXXXXXXXXX"
        volumeMounts:
        - name: config
          mountPath: /usr/share/kibana/config/kibana.yml
          readOnly: true
          subPath: kibana.ym
    volumes:
      - name: config
        configMap:
          name: kibana-config
---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: logging
  name: kibana-config
  labels:
    app: kibana
data:
  kibana.yml: |-
    server.host: 0.0.0.0
    elasticsearch:
      hosts: ${ELASTICSEARCH_URL}
      username: ${ELASTICSEARCH_USERNAME}
      password: ${ELASTICSEARCH_PASSWORD}
    monitoring.ui.container.elasticsearch.enabled: true

用户名密码用kibana_system(kibana用户要弃用了),登录kibana的时候用elastic用户,这是超管用户。

创建只读用户

登录kibana后,去配置权限。
Management->Stack Management->Security->Role
创建角色(目前是这么配的,也许以后会改)

ES:
Cluster privileges:
read_pipeline
Index privileges.Indices:
filebeat-*
Index privileges.Privileges:
read

Kibana:
Spaces:
Default
Privileges for all features:
Customize
Analytics(都是read):
Discover,Dashboard,Canvas,Maps,Vasualizea
Observability(都是read):
Logs,Uptime

filebeat

准备

登录kibana后,去配置权限,为filebeat做准备。
Management->Stack Management->Security->Role
创建角色
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/7.11/security-privileges.html#privileges-list-cluster

Cluster privileges:
manage_pipeline,manage_ingest_pipelines,read_ilm
Index privileges.Indices:
*
Index privileges.Privileges:
create_doc,create_index,view_index_metadata

以上配置根据自己情况修改吧。
系统默认用户不能删,不能改。自己创建一个用户吧,把刚建的角色附进去就行了。

部署与配置

目前没有需要在K8S中收集日志的项目,以后有了再补上。
先说普通环境的吧。只写重点。
官方下载rpm安装
配置文件:

output.elasticsearch:
  hosts: ["192.168.1.1:9200"]
  # 下面写上一步创建的用户就行
  username: "XXXX"
  password: "XXXXXXXXXXXX"
0 0 votes
文章评分
订阅
提醒
guest
0 评论
最旧
最新 得票最多