cloudmon/main.tf
bast 29a15c61ba
All checks were successful
cloudmon GitOps Deploy / build-and-deploy (push) Successful in 24s
main.tf aktualisiert
2026-11-02 17:04:51 +00:00

90 lines
1.9 KiB
HCL

terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.26"
}
}
backend "consul" {
address = "consul:8500"
path = "terraform/states/boday_tf"
}
}
variable "app_version" {
type = string
default = "latest"
}
provider "kubernetes" {
config_path = "./kind_kubeconfig"
host = "https://local-k3s-platform:6443"
insecure = true
}
# 1. DAS DASHBOARD DEPLOYMENT
resource "kubernetes_deployment_v1" "cloudmon" {
metadata {
name = "cloudmon"
namespace = "default"
labels = { app = "cloudmon" }
}
spec {
replicas = 1
selector { match_labels = { app = "cloudmon" } }
template {
metadata { labels = { app = "cloudmon" } }
spec {
container {
name = "dashboard"
image = "registry.local/bast/cloudmon:${var.app_version}"
image_pull_policy = "Always"
port { container_port = 8000 }
}
}
}
}
}
# 2. DER KUBERNETES SERVICE (Port 8000 intern freischalten)
resource "kubernetes_service_v1" "cloudmon_service" {
metadata {
name = "cloudmon-service"
namespace = "default"
}
spec {
selector = { app = "cloudmon" }
port {
port = 80
target_port = 8000
}
}
}
# 3. DAS INGRESS ROUTING (Macht cloudmon unter cloudmon.local über Port 8080 erreichbar!)
resource "kubernetes_ingress_v1" "cloudmon_ingress" {
metadata {
name = "cloudmon-ingress"
namespace = "default"
annotations = { "kubernetes.io/ingress.class" = "nginx" }
}
spec {
rule {
host = "cloudmon.local"
http {
path {
path = "/"
path_type = "Prefix"
backend {
service {
name = kubernetes_service_v1.cloudmon_service.metadata[0].name
port { number = 80 }
}
}
}
}
}
}
}