diff --git a/05-monitoring/index.ts b/05-monitoring/index.ts index 69ab655..c3ca119 100644 --- a/05-monitoring/index.ts +++ b/05-monitoring/index.ts @@ -13,6 +13,10 @@ const appsRef = new pulumi.StackReference( const kubeconfig = bootstrapRef.requireOutput("kubeconfig"); const domain = appsRef.requireOutput("domain"); 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 }); @@ -24,6 +28,15 @@ const monitoringNs = new k8s.core.v1.Namespace( 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( "kube-prometheus-stack", { @@ -38,6 +51,7 @@ new k8s.helm.v3.Release( values: { grafana: { adminPassword: grafanaAdminPassword, + replicas: 2, ingress: { enabled: true, ingressClassName: "traefik", @@ -45,10 +59,20 @@ new k8s.helm.v3.Release( hosts: [grafanaHost], tls: [{ secretName: "grafana-tls", hosts: [grafanaHost] }], }, - persistence: { - enabled: true, - storageClassName: "longhorn", - size: "2Gi", + env: { + GF_DATABASE_TYPE: "postgres", + GF_DATABASE_HOST: grafanaDbHost, + 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: {