要在kube-prometheus页面中添加鉴权,可以使用以下步骤:
- 创建一个包含用户名和密码的Secret对象,并将其挂载到Prometheus的Pod中。
apiVersion: v1
kind: Secret
metadata:
name: prometheus-basic-auth
type: Opaque
data:
username: base64encodedusername
password: base64encodedpassword
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
spec:
template:
spec:
containers:
- name: prometheus-container
image: prom/prometheus:v2.26.0
args:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
ports:
- containerPort: 9090
volumeMounts:
- name: config-volume
mountPath: /etc/prometheus/
readOnly: true
- name: prom-data-volume
mountPath: /prometheus
readOnly:false
- name : basic-auth-config
mountPath : /basic_auth_config/
volumes :
- configMap :
name : prom-config-map
name : config-volume
- emptyDir :
medium : Memory
name : prom-data-volume
- secret :
secretName : prometheus-basic-auth
name : basic-auth-config
- 编辑Promethus配置文件prometheous.yaml,并启用基本身份验证。 在global段下面添加authenticaiton段,然后在其中指定名为“basic_auth” 的字典,该字典将由用户名称和密码组成,这些信息将用于验证用户的请求。
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: kube-prometheus-stack-prometheus
spec:
serviceAccountName : prometheus-k8s
securityContext :
fsGroup : 2000 #Promethues默认使用1000,但是由于不能在容器内运行root权限,所以需要更改fsGroup以使用自定义UID和GID
replicas: 2
resources:
requests:
memory: "400Mi"
cpu: "500m"
limits:
memory: "700Mi"
cpu: "800m"
serviceMonitorSelector:
matchLabels:
release: kube-prometheus-stack
alerting:
alertmanagers:
- namespace : kube-prometheus-stack
name: alertmanager-main
ruleSelector:
matchLabels:
prometheus: kube-prometheus-stack-prometheus
global:
scrape_interval : '60s'
evaluation_interval : '60s'
external_labels :
monitor : 'kube-prometheus-stack'
authentication :
basic_auth :
username : ${BASIC_AUTH_USERNAME} #这里引用了一个环境变量BASIC_AUTH_USERNAME,这个环境变量的值来自前面创建的Secret对象中的用户名字段。
password : ${BASIC_AUTH_PASSWORD} #同上
- 创建一个Service对象,并指定它要暴露的端口。
apiVersion: v1
kind: Service
metadata:
name: prometheus-service
spec:
selector:
app.kubernetes.io/name: prometheus
ports:
- name: web
port: 9090
targetPort: 9090
- 创建一个Ingress对象,并指定它要使用的认证方法。 这里使用了Nginx Ingress Controller并开启了基本身份验证。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: prometheus-ingress
annotations:
nginx.ingress.kubernetes.io/auth-type: basic #开启基本身份验证
nginx.ingress.kubernetes.io/auth-secret: prometheus-basic-auth #这里引用之前创建的Secret对象
spec:
rules:
- host: example.com #替换为你自己的域名
http:
paths:
- path: /prometheus/
backend:
serviceName: prometheus-service
servicePort: web
- 部署完成后,访问Promethus页面时会弹出用户名和密码框,输入正确的用户名和密码即可进入kube-prometheus页面。