Add Node Exporter and Fail2Ban Exporter modules: implement Kubernetes resources and Prometheus scrape configurations

This commit is contained in:
2025-10-02 20:02:53 +02:00
parent a412c96c46
commit 0a0d4c9c15
14 changed files with 255 additions and 272 deletions
@@ -0,0 +1,4 @@
locals {
app_version = var.tag
namespace = var.namespace
}
@@ -0,0 +1,97 @@
resource "kubernetes_service_account" "node_exporter" {
metadata {
name = "node-exporter"
namespace = local.namespace
labels = {
k8s-app = "node-exporter"
}
}
automount_service_account_token = false
}
resource "kubernetes_deployment" "node_exporter" {
metadata {
name = "node-exporter"
namespace = local.namespace
labels = {
k8s-app = "node-exporter"
}
}
spec {
selector {
match_labels = {
k8s-app = "node-exporter"
}
}
strategy {
type = "RollingUpdate"
}
template {
metadata {
labels = {
k8s-app = "node-exporter"
}
}
spec {
service_account_name = "node-exporter"
automount_service_account_token = false
container {
name = "node-exporter"
image = "quay.io/prometheus/node-exporter:${local.app_version}"
image_pull_policy = "IfNotPresent"
args = ["--path.rootfs=/host/root"]
port {
container_port = 9100
name = "http"
protocol = "TCP"
}
security_context {
read_only_root_filesystem = true
}
volume_mount {
name = "tmp-dir"
mount_path = "/tmp"
}
volume_mount {
name = "rootfs"
mount_path = "/host/root"
read_only = true
}
}
volume {
name = "tmp-dir"
empty_dir {}
}
volume {
name = "rootfs"
host_path {
path = "/"
type = "Directory"
}
}
}
}
}
}
resource "kubernetes_service" "node_exporter" {
metadata {
name = "node-exporter"
namespace = local.namespace
labels = {
k8s-app = "node-exporter"
}
}
spec {
selector = {
k8s-app = "node-exporter"
}
port {
name = "http"
port = 9100
target_port = 9100
protocol = "TCP"
}
type = "ClusterIP"
}
}
@@ -0,0 +1,9 @@
terraform {
required_version = "~>1.8"
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "2.36.0"
}
}
}
@@ -0,0 +1,11 @@
variable "tag" {
description = "Fail2Ban exporter image tag"
type = string
default = "latest"
}
variable "namespace" {
description = "Kubernetes namespace to deploy the Fail2Ban exporter"
type = string
default = "kube-system"
}