infra/stacks/networking-toolbox/main.tf
Viktor Barzin 09b4bad958 feat: pin ~28 images to specific versions, enable DIUN monitoring, add app-stacks pipeline
Pin third-party images from :latest to current stable versions:
- Platform: cloudflared, technitium, snmp-exporter, pve-exporter,
  headscale, shadowsocks, xray
- Apps: paperless-ngx, linkwarden, wealthfolio, speedtest, synapse,
  n8n, prowlarr, qbittorrent, lidarr, rybbit, ollama, immichframe,
  cyberchef, networking-toolbox, echo, coturn, shlink, affine

Enable DIUN annotations on all pinned deployments with per-image
tag patterns. Add Woodpecker app-stacks pipeline for selective
terragrunt apply on changed app stacks.
2026-04-06 14:27:13 +03:00

107 lines
2.5 KiB
HCL

variable "tls_secret_name" {
type = string
sensitive = true
}
resource "kubernetes_namespace" "networking-toolbox" {
metadata {
name = "networking-toolbox"
labels = {
"istio-injection" : "disabled"
tier = local.tiers.aux
}
}
}
module "tls_secret" {
source = "../../modules/kubernetes/setup_tls_secret"
namespace = kubernetes_namespace.networking-toolbox.metadata[0].name
tls_secret_name = var.tls_secret_name
}
resource "kubernetes_deployment" "networking-toolbox" {
metadata {
name = "networking-toolbox"
namespace = kubernetes_namespace.networking-toolbox.metadata[0].name
labels = {
app = "networking-toolbox"
tier = local.tiers.aux
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "networking-toolbox"
}
}
template {
metadata {
labels = {
app = "networking-toolbox"
}
annotations = {
"diun.enable" = "true"
"diun.include_tags" = "^\\d+\\.\\d+\\.\\d+$"
}
}
spec {
container {
image = "lissy93/networking-toolbox:1.1.1"
name = "networking-toolbox"
port {
container_port = 3000
}
resources {
requests = {
cpu = "10m"
memory = "128Mi"
}
limits = {
memory = "128Mi"
}
}
}
}
}
}
}
resource "kubernetes_service" "networking-toolbox" {
metadata {
name = "networking-toolbox"
namespace = kubernetes_namespace.networking-toolbox.metadata[0].name
labels = {
"app" = "networking-toolbox"
}
}
spec {
selector = {
app = "networking-toolbox"
}
port {
name = "http"
port = "80"
target_port = "3000"
}
}
}
module "ingress" {
source = "../../modules/kubernetes/ingress_factory"
namespace = kubernetes_namespace.networking-toolbox.metadata[0].name
name = "networking-toolbox"
tls_secret_name = var.tls_secret_name
protected = true
rybbit_site_id = "50e38577e41c"
extra_annotations = {
"gethomepage.dev/enabled" = "true"
"gethomepage.dev/name" = "Networking Toolbox"
"gethomepage.dev/description" = "Network diagnostic tools"
"gethomepage.dev/icon" = "mdi-lan"
"gethomepage.dev/group" = "Development & CI"
"gethomepage.dev/pod-selector" = ""
}
}