apiVersion: v1 kind: Namespace metadata: name: memelord-jake --- apiVersion: apps/v1 kind: StatefulSet metadata: name: grafana namespace: memelord-jake labels: app: grafana spec: serviceName: grafana replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: securityContext: fsGroup: 472 containers: - name: grafana image: grafana/grafana:latest imagePullPolicy: IfNotPresent ports: - containerPort: 3000 name: http env: - name: GF_DATABASE_TYPE value: sqlite3 - name: GF_DATABASE_PATH value: /var/lib/grafana/grafana.db # important when running behind ingress: - name: GF_SERVER_ROOT_URL value: https://grafana-jake.ee-lte-1.codemowers.io volumeMounts: - name: grafana-storage mountPath: /var/lib/grafana readinessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 10 periodSeconds: 10 livenessProbe: httpGet: path: /api/health port: 3000 initialDelaySeconds: 30 periodSeconds: 10 volumeClaimTemplates: - metadata: name: grafana-storage spec: accessModes: [ReadWriteOnce] storageClassName: sqlite resources: requests: storage: 5Gi --- apiVersion: v1 kind: Service metadata: name: grafana namespace: memelord-jake labels: app: grafana spec: type: ClusterIP selector: app: grafana ports: - name: http port: 3000 targetPort: 3000 --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: grafana-jake namespace: memelord-jake spec: secretName: grafana-jake-tls dnsNames: - grafana-jake.ee-lte-1.codemowers.io issuerRef: name: letsencrypt kind: ClusterIssuer --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: grafana namespace: memelord-jake annotations: traefik.ingress.kubernetes.io/router.entrypoints: websecure spec: ingressClassName: traefik rules: - host: grafana-jake.ee-lte-1.codemowers.io http: paths: - path: / pathType: Prefix backend: service: name: grafana port: number: 3000 tls: - secretName: grafana-jake-tls