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