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

相关推荐
福大大架构师每日一题2 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
weixin_453965003 小时前
[单master节点k8s部署]30.ceph分布式存储(一)
分布式·ceph·kubernetes
weixin_453965003 小时前
[单master节点k8s部署]32.ceph分布式存储(三)
分布式·ceph·kubernetes
tangdou3690986553 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
tangdou3690986556 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器
later_rql6 小时前
k8s-集群部署1
云原生·容器·kubernetes
weixin_453965008 小时前
[单master节点k8s部署]31.ceph分布式存储(二)
分布式·ceph·kubernetes
大G哥11 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
妍妍的宝贝11 小时前
k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载
nginx·微服务·kubernetes