apiVersion: v1
kind: Pod
metadata:
  annotations:
    checksum/config: c2c56fe4f81b55209c96c10bade9889ce89cfa59b2e91894ca743e9eaeb6090e
    checksum/sc-dashboard-provider-config: 593c0a8778b83f11fe80ccb21dfb20bc46705e2be3178df1dc4c89d164c8cd9c
    checksum/secret: 22dd7ffd7d3516bb52c7333acad014da232195a41cac1114503f64c95853eb12
    kubectl.kubernetes.io/default-container: grafana
  creationTimestamp: "2026-09-15T04:56:23Z"
  generateName: kube-prometheus-stack-grafana-59d8475594-
  labels:
    app.kubernetes.io/instance: kube-prometheus-stack
    app.kubernetes.io/name: grafana
    pod-template-hash: 59d8475594
  name: kube-prometheus-stack-grafana-59d8475594-hsrq5
  namespace: monitoring
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: kube-prometheus-stack-grafana-59d8475594
    uid: 84845fd9-c493-41e1-aa96-721eee6e85c1
  resourceVersion: "5390"
  uid: 504b1377-7603-4846-8dda-cfe7b0cbfba9
spec:
  automountServiceAccountToken: true
  containers:
  - env:
    - name: METHOD
      value: WATCH
    - name: LABEL
      value: grafana_dashboard
    - name: LABEL_VALUE
      value: "1"
    - name: FOLDER
      value: /tmp/dashboards
    - name: RESOURCE
      value: both
    - name: NAMESPACE
      value: ALL
    - name: REQ_USERNAME
      valueFrom:
        secretKeyRef:
          key: admin-user
          name: kube-prometheus-stack-grafana
    - name: REQ_PASSWORD
      valueFrom:
        secretKeyRef:
          key: admin-password
          name: kube-prometheus-stack-grafana
    - name: REQ_URL
      value: http://localhost:3000/api/admin/provisioning/dashboards/reload
    - name: REQ_METHOD
      value: POST
    image: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar:1.26.1
    imagePullPolicy: IfNotPresent
    name: grafana-sc-dashboard
    resources: {}
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      seccompProfile:
        type: RuntimeDefault
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /tmp/dashboards
      name: sc-dashboard-volume
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-tsdlq
      readOnly: true
  - env:
    - name: METHOD
      value: WATCH
    - name: LABEL
      value: grafana_datasource
    - name: LABEL_VALUE
      value: "1"
    - name: FOLDER
      value: /etc/grafana/provisioning/datasources
    - name: RESOURCE
      value: both
    - name: REQ_USERNAME
      valueFrom:
        secretKeyRef:
          key: admin-user
          name: kube-prometheus-stack-grafana
    - name: REQ_PASSWORD
      valueFrom:
        secretKeyRef:
          key: admin-password
          name: kube-prometheus-stack-grafana
    - name: REQ_URL
      value: http://localhost:3000/api/admin/provisioning/datasources/reload
    - name: REQ_METHOD
      value: POST
    image: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar:1.26.1
    imagePullPolicy: IfNotPresent
    name: grafana-sc-datasources
    resources: {}
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      seccompProfile:
        type: RuntimeDefault
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /etc/grafana/provisioning/datasources
      name: sc-datasources-volume
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-tsdlq
      readOnly: true
  - env:
    - name: POD_IP
      valueFrom:
        fieldRef:
          apiVersion: v1
          fieldPath: status.podIP
    - name: GF_SECURITY_ADMIN_USER
      valueFrom:
        secretKeyRef:
          key: admin-user
          name: kube-prometheus-stack-grafana
    - name: GF_SECURITY_ADMIN_PASSWORD
      valueFrom:
        secretKeyRef:
          key: admin-password
          name: kube-prometheus-stack-grafana
    - name: GF_PATHS_DATA
      value: /var/lib/grafana/
    - name: GF_PATHS_LOGS
      value: /var/log/grafana
    - name: GF_PATHS_PLUGINS
      value: /var/lib/grafana/plugins
    - name: GF_PATHS_PROVISIONING
      value: /etc/grafana/provisioning
    image: harbor.atmosphere.dev/docker.io/grafana/grafana:10.4.0
    imagePullPolicy: IfNotPresent
    livenessProbe:
      failureThreshold: 10
      httpGet:
        path: /api/health
        port: 3000
        scheme: HTTP
      initialDelaySeconds: 60
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 30
    name: grafana
    ports:
    - containerPort: 3000
      name: grafana
      protocol: TCP
    - containerPort: 9094
      name: gossip-tcp
      protocol: TCP
    - containerPort: 9094
      name: gossip-udp
      protocol: UDP
    readinessProbe:
      failureThreshold: 3
      httpGet:
        path: /api/health
        port: 3000
        scheme: HTTP
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1
    resources: {}
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop:
        - ALL
      seccompProfile:
        type: RuntimeDefault
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /etc/grafana/grafana.ini
      name: config
      subPath: grafana.ini
    - mountPath: /var/lib/grafana
      name: storage
    - mountPath: /tmp/dashboards
      name: sc-dashboard-volume
    - mountPath: /etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml
      name: sc-dashboard-provider
      subPath: provider.yaml
    - mountPath: /etc/grafana/provisioning/datasources
      name: sc-datasources-volume
    - mountPath: /etc/secrets/auth_generic_oauth
      name: auth-generic-oauth-secret-mount
      readOnly: true
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-tsdlq
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  nodeName: instance
  nodeSelector:
    openstack-control-plane: enabled
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext:
    fsGroup: 472
    runAsGroup: 472
    runAsNonRoot: true
    runAsUser: 472
  serviceAccount: kube-prometheus-stack-grafana
  serviceAccountName: kube-prometheus-stack-grafana
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: NoExecute
    key: node.kubernetes.io/not-ready
    operator: Exists
    tolerationSeconds: 300
  - effect: NoExecute
    key: node.kubernetes.io/unreachable
    operator: Exists
    tolerationSeconds: 300
  volumes:
  - configMap:
      defaultMode: 420
      name: kube-prometheus-stack-grafana
    name: config
  - emptyDir: {}
    name: storage
  - emptyDir: {}
    name: sc-dashboard-volume
  - configMap:
      defaultMode: 420
      name: kube-prometheus-stack-grafana-config-dashboards
    name: sc-dashboard-provider
  - emptyDir: {}
    name: sc-datasources-volume
  - name: auth-generic-oauth-secret-mount
    secret:
      defaultMode: 288
      secretName: kube-prometheus-stack-grafana-client-secret
  - name: kube-api-access-tsdlq
    projected:
      defaultMode: 420
      sources:
      - serviceAccountToken:
          expirationSeconds: 3607
          path: token
      - configMap:
          items:
          - key: ca.crt
            path: ca.crt
          name: kube-root-ca.crt
      - downwardAPI:
          items:
          - fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
            path: namespace
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2026-09-15T04:56:23Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2026-09-15T04:56:54Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2026-09-15T04:56:54Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2026-09-15T04:56:23Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://1c03f12ef62ce584163657e7a34d25dc8911aa8165cfc94ba0035befb7e4a8ed
    image: harbor.atmosphere.dev/docker.io/grafana/grafana:10.4.0
    imageID: harbor.atmosphere.dev/docker.io/grafana/grafana@sha256:f9811e4e687ffecf1a43adb9b64096c50bc0d7a782f8608530f478b6542de7d5
    lastState: {}
    name: grafana
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-09-15T04:56:38Z"
  - containerID: containerd://675d4219a5842d7226bd16c2c7846319c2ab2a55553aaa91f26b4cebf46a9f39
    image: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar:1.26.1
    imageID: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar@sha256:b8d5067137fec093cf48670dc3a1dbb38f9e734f3a6683015c2e89a45db5fd16
    lastState: {}
    name: grafana-sc-dashboard
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-09-15T04:56:30Z"
  - containerID: containerd://45380a4d85dce510515021bdf7931305832ca29879c021eabb11ea3ed53b8c45
    image: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar:1.26.1
    imageID: harbor.atmosphere.dev/quay.io/kiwigrid/k8s-sidecar@sha256:b8d5067137fec093cf48670dc3a1dbb38f9e734f3a6683015c2e89a45db5fd16
    lastState: {}
    name: grafana-sc-datasources
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-09-15T04:56:30Z"
  hostIP: 162.253.55.56
  phase: Running
  podIP: 10.0.0.115
  podIPs:
  - ip: 10.0.0.115
  qosClass: BestEffort
  startTime: "2026-09-15T04:56:23Z"
