Files
iac/roles/monitoring_storage/tasks/main.yml

128 lines
3.1 KiB
YAML

---
# Create StorageClass for manual monitoring volumes
- name: Create Manual Monitoring StorageClass
kubernetes.core.k8s:
definition:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: manual-monitoring
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
# Create monitoring data directories
- name: Create Monitoring Data Directories
file:
path: "{{ item }}"
state: directory
mode: '0777'
owner: root
group: root
loop:
- /data/monitoring/prometheus
- /data/monitoring/grafana
- /data/monitoring/alertmanager
# Create Prometheus PV
- name: Create Prometheus Persistent Volume
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: PersistentVolume
metadata:
name: prometheus-pv
spec:
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/monitoring/prometheus
storageClassName: manual-monitoring
# Create Grafana PV
- name: Create Grafana Persistent Volume
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: PersistentVolume
metadata:
name: grafana-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/monitoring/grafana
storageClassName: manual-monitoring
# Create Alertmanager PV
- name: Create Alertmanager Persistent Volume
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: PersistentVolume
metadata:
name: alertmanager-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/monitoring/alertmanager
storageClassName: manual-monitoring
# Create monitoring namespace
- name: Create Monitoring Namespace
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: Namespace
metadata:
name: monitoring
# Create Grafana PVC (needed before Helm chart runs)
- name: Create Grafana Persistent Volume Claim
kubernetes.core.k8s:
definition:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-data
namespace: monitoring
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: manual-monitoring
volumeName: grafana-pv
# Create HTTPRoute for Grafana
- name: Create Grafana HTTPRoute
kubernetes.core.k8s:
definition:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: grafana-route
namespace: monitoring
spec:
parentRefs:
- name: main-gateway
namespace: traefik
sectionName: grafana-https
hostnames:
- "grafana.svc.pguia.com"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: monitoring-grafana
port: 80