feat(infra): gate observability stack behind var.enable_monitoring (#38)
Adds enable_monitoring variable (default true) that controls whether Prometheus/Grafana, Loki, Fluent Bit, and Jaeger are deployed. Setting it to false saves ~1.5 GB RAM, making the stack viable on a 2–4 GB VPS without touching the application services. Also caps MongoDB WiredTiger cache at 256 MB (--wiredTigerCacheSizeGB=0.25) so it doesn't balloon on memory-constrained hosts. Co-authored-by: Gonçalo Rodrigues <guga@Goncalos-MacBook-Pro.local> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
292b2f46f0
commit
8436295bbc
@ -77,6 +77,7 @@ resource "kubernetes_stateful_set" "mongodb" {
|
|||||||
container {
|
container {
|
||||||
name = "mongodb"
|
name = "mongodb"
|
||||||
image = "mongo:8"
|
image = "mongo:8"
|
||||||
|
args = ["--wiredTigerCacheSizeGB=0.25"]
|
||||||
|
|
||||||
env {
|
env {
|
||||||
name = "MONGO_INITDB_ROOT_USERNAME"
|
name = "MONGO_INITDB_ROOT_USERNAME"
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
resource "random_password" "grafana" {
|
resource "random_password" "grafana" {
|
||||||
|
count = var.enable_monitoring ? 1 : 0
|
||||||
length = 24
|
length = 24
|
||||||
special = false
|
special = false
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "helm_release" "kube_prometheus_stack" {
|
resource "helm_release" "kube_prometheus_stack" {
|
||||||
|
count = var.enable_monitoring ? 1 : 0
|
||||||
name = "kps"
|
name = "kps"
|
||||||
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
||||||
repository = "https://prometheus-community.github.io/helm-charts"
|
repository = "https://prometheus-community.github.io/helm-charts"
|
||||||
@ -16,7 +18,7 @@ resource "helm_release" "kube_prometheus_stack" {
|
|||||||
enabled = false
|
enabled = false
|
||||||
}
|
}
|
||||||
grafana = {
|
grafana = {
|
||||||
adminPassword = random_password.grafana.result
|
adminPassword = random_password.grafana[0].result
|
||||||
ingress = {
|
ingress = {
|
||||||
enabled = true
|
enabled = true
|
||||||
hosts = ["grafana.homelab.local"]
|
hosts = ["grafana.homelab.local"]
|
||||||
@ -78,6 +80,7 @@ resource "helm_release" "kube_prometheus_stack" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "helm_release" "jaeger" {
|
resource "helm_release" "jaeger" {
|
||||||
|
count = var.enable_monitoring ? 1 : 0
|
||||||
name = "jaeger"
|
name = "jaeger"
|
||||||
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
||||||
repository = "https://jaegertracing.github.io/helm-charts"
|
repository = "https://jaegertracing.github.io/helm-charts"
|
||||||
@ -99,6 +102,7 @@ resource "helm_release" "jaeger" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "helm_release" "loki" {
|
resource "helm_release" "loki" {
|
||||||
|
count = var.enable_monitoring ? 1 : 0
|
||||||
name = "loki"
|
name = "loki"
|
||||||
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
||||||
repository = "https://grafana.github.io/helm-charts"
|
repository = "https://grafana.github.io/helm-charts"
|
||||||
@ -175,6 +179,7 @@ resource "helm_release" "loki" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "helm_release" "fluent_bit" {
|
resource "helm_release" "fluent_bit" {
|
||||||
|
count = var.enable_monitoring ? 1 : 0
|
||||||
name = "fluent-bit"
|
name = "fluent-bit"
|
||||||
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
namespace = kubernetes_namespace.domains["monitoring"].metadata[0].name
|
||||||
repository = "https://fluent.github.io/helm-charts"
|
repository = "https://fluent.github.io/helm-charts"
|
||||||
|
|||||||
@ -3,3 +3,9 @@ variable "enable_gitea" {
|
|||||||
type = bool
|
type = bool
|
||||||
default = false
|
default = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "enable_monitoring" {
|
||||||
|
description = "Deploy Prometheus, Grafana, Loki, Jaeger, and Fluent Bit. Set to false on small VMs to save ~1.5 GB RAM."
|
||||||
|
type = bool
|
||||||
|
default = true
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user