apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: the-order spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:latest ports: - containerPort: 3000 env: - name: GF_SECURITY_ADMIN_USER value: admin - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: the-order-secrets key: grafana-admin-password - name: GF_SERVER_ROOT_URL value: "%(protocol)s://%(domain)s:%(http_port)s/grafana/" volumeMounts: - name: grafana-storage mountPath: /var/lib/grafana - name: grafana-dashboards mountPath: /etc/grafana/provisioning/dashboards resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" volumes: - name: grafana-storage emptyDir: {} - name: grafana-dashboards configMap: name: grafana-dashboards --- apiVersion: v1 kind: Service metadata: name: grafana namespace: the-order spec: selector: app: grafana ports: - port: 3000 targetPort: 3000 type: ClusterIP --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboards namespace: the-order data: services-overview.json: | # Dashboard JSON will be mounted from infra/monitoring/grafana-dashboards/