Compare commits

..
2 Commits
Author SHA1 Message Date
kasun f8f14db80a Merge pull request 'changed grafana persistence to postgresql db' (#29) from persist-grafana-data-on-postgres into main
Deploy Monitoring / Pulumi Preview (push) Has been skipped
Deploy Monitoring / Pulumi Deploy (push) Successful in 1m37s
2026-07-08 22:47:53 +02:00
kasun ea35bb55e4 changed grafana persistence to postgresql db
Deploy Monitoring / Pulumi Preview (pull_request) Successful in 54s
Deploy Monitoring / Pulumi Deploy (pull_request) Has been skipped
2026-07-08 22:44:30 +02:00
+28 -4
View File
@@ -13,6 +13,10 @@ const appsRef = new pulumi.StackReference(
const kubeconfig = bootstrapRef.requireOutput("kubeconfig"); const kubeconfig = bootstrapRef.requireOutput("kubeconfig");
const domain = appsRef.requireOutput("domain"); const domain = appsRef.requireOutput("domain");
const grafanaAdminPassword = config.requireSecret("grafanaAdminPassword"); const grafanaAdminPassword = config.requireSecret("grafanaAdminPassword");
const grafanaDbUser = config.requireSecret("grafanaDbUser");
const grafanaDbPassword = config.requireSecret("grafanaDbPassword");
const grafanaDbHost = config.requireSecret("grafanaDbHost");
const grafanaDbName = config.require("grafanaDbName");
const k8sProvider = new k8s.Provider("k3s", { kubeconfig }); const k8sProvider = new k8s.Provider("k3s", { kubeconfig });
@@ -24,6 +28,15 @@ const monitoringNs = new k8s.core.v1.Namespace(
const grafanaHost = pulumi.interpolate`grafana.${domain}`; const grafanaHost = pulumi.interpolate`grafana.${domain}`;
const grafanaDbSecret = new k8s.core.v1.Secret(
"grafana-db-credentials",
{
metadata: { namespace: monitoringNs.metadata.name },
stringData: { password: grafanaDbPassword },
},
{ provider: k8sProvider },
);
new k8s.helm.v3.Release( new k8s.helm.v3.Release(
"kube-prometheus-stack", "kube-prometheus-stack",
{ {
@@ -38,6 +51,7 @@ new k8s.helm.v3.Release(
values: { values: {
grafana: { grafana: {
adminPassword: grafanaAdminPassword, adminPassword: grafanaAdminPassword,
replicas: 2,
ingress: { ingress: {
enabled: true, enabled: true,
ingressClassName: "traefik", ingressClassName: "traefik",
@@ -45,10 +59,20 @@ new k8s.helm.v3.Release(
hosts: [grafanaHost], hosts: [grafanaHost],
tls: [{ secretName: "grafana-tls", hosts: [grafanaHost] }], tls: [{ secretName: "grafana-tls", hosts: [grafanaHost] }],
}, },
persistence: { env: {
enabled: true, GF_DATABASE_TYPE: "postgres",
storageClassName: "longhorn", GF_DATABASE_HOST: grafanaDbHost,
size: "2Gi", GF_DATABASE_NAME: grafanaDbName,
GF_DATABASE_USER: grafanaDbUser,
GF_DATABASE_SSL_MODE: "disable",
},
envValueFrom: {
GF_DATABASE_PASSWORD: {
secretKeyRef: {
name: grafanaDbSecret.metadata.name,
key: "password",
},
},
}, },
}, },
prometheus: { prometheus: {