ZBLOG

kube-prometheus页面添加鉴权

要在kube-prometheus页面中添加鉴权,可以使用以下步骤:

  1. 创建一个包含用户名和密码的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

  1. 编辑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} #同上

  1. 创建一个Service对象,并指定它要暴露的端口。
apiVersion: v1
kind: Service
metadata:
  name: prometheus-service
spec:
  selector:
    app.kubernetes.io/name: prometheus
  ports:
    - name: web
      port: 9090
      targetPort: 9090
  1. 创建一个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

  1. 部署完成后,访问Promethus页面时会弹出用户名和密码框,输入正确的用户名和密码即可进入kube-prometheus页面。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4601

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?