k8s集群使用ingress转发grafana服务

文章目录

  • 前言
  • 一、思路
  • 二、grafana准备
    • [1. grafana-configmap.yaml](#1. grafana-configmap.yaml)
    • [2. grafana.yaml](#2. grafana.yaml)
  • 三、ingress准备
    • [1. ingress.yaml](#1. ingress.yaml)
    • [2. grafana-externalname.yaml](#2. grafana-externalname.yaml)
    • [3. ingress-nginx-controller](#3. ingress-nginx-controller)
  • [四、 本机host文件准备](#四、 本机host文件准备)
  • 五、访问测试

前言

在k8s集群中,使用ingress服务转发grafana的页面。


一、思路

ingress方面增加路由规则和跨命名空间的service即可

grafana增加configmap挂载grafana.ini文件,增加匿名登陆配置和root_url配置

二、grafana准备

1. grafana-configmap.yaml

grafana.ini文件的yaml文件

yaml 复制代码
apiVersion: v1
kind: Namespace
metadata:
  name: grafana
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: grafanaini
  namespace: grafana
data:
  grafana.ini: |
    [server]
    domain: daxinxindahaohao.cn
    root_url: http://daxinxindahaohao.cn/grafana
    serve_from_sub_path: true
    [auth.anonymous]
    enabled: true
    org_role: Viewer

2. grafana.yaml

grafana启动服务的yaml文件

我这里使用的pvc的存储类型是rook-ceph,使用其他存储类型的修改为自己的就可以

yaml 复制代码
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
  namespace: grafana
spec:
  storageClassName: rook-cephfs
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 50G
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        supplementalGroups:
          - 0
      containers:
        - name: grafana
          image: grafana/grafana:latest
          imagePullPolicy: IfNotPresent
          env:
            - name: TZ
              value: Asia/Shanghai
          ports:
            - containerPort: 3000
              name: http-grafana
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /robots.txt
              port: 3000
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 2
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            tcpSocket:
              port: 3000
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 250m
              memory: 750Mi
          volumeMounts:
            - mountPath: /var/lib/grafana
              name: grafana-pv
            - name : grafanaini
              mountPath: /etc/grafana/grafana.ini
              subPath: grafana.ini
      volumes:
        - name: grafanaini
          configMap:
            name: grafanaini
        - name: grafana-pv
          persistentVolumeClaim:
            claimName: grafana-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: grafana
spec:
  ports:
    - port: 3000
      protocol: TCP
      targetPort: http-grafana
  selector:
    app: grafana
  sessionAffinity: None
  type: ClusterIP

三、ingress准备

1. ingress.yaml

yaml 复制代码
apiVersion: v1
kind: Namespace
metadata:
  name: daxinxindahaohao
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: daxinxindahaohao-ingress    #ingress名称
  namespace: daxinxindahaohao       #这里写ingress服务运行所在的命名空间名称
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: daxinxindahaohao.cn     #设置域名
      http:
        paths:
          - path: /grafana
            pathType: Prefix    # 前缀匹配
            backend:
              service:
                name: grafana
                port:
                  number: 3000

2. grafana-externalname.yaml

这里配置的是grafana的跨命名空间的service

yaml 复制代码
kind: Service
apiVersion: v1
metadata:
  name: grafana
  namespace: daxinxindahaohao
spec:
  type: ExternalName
  externalName: grafana.grafana.svc.cluster.local

3. ingress-nginx-controller

端口是31247,下面会用到

四、 本机host文件准备

路径 C:\Windows\System32\drivers\etc\hosts

五、访问测试

通过浏览器进行访问测试

地址是:http://daxinxindahaohao.cn:31247/grafana

相关推荐
无言听风雨丶6 小时前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao7 小时前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉7 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
相思难忘成疾10 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo10 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
weirong11 小时前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang11 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
阿标在干嘛12 小时前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT199515 小时前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器
Star(up up up)16 小时前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo