variable "app_version" { type = string default = "latest" } terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~> 2.26" } helm = { source = "hashicorp/helm" version = "~> 2.12" } } backend "consul" { address = "consul:8500" path = "terraform/states/boday_tf" } } provider "kubernetes" { config_path = "./kind_kubeconfig" host = "https://local-k3s-platform:6443" # ERZWINGT DEN DURCHBRUCH: Ignoriert den Hostnamen-Zertifikatskonflikt insecure = true } provider "helm" { kubernetes { config_path = "./kind_kubeconfig" host = "https://local-k3s-platform:6443" # Auch für Helm die Zertifikatsprüfung für den Container-Namen abschalten insecure = true } } resource "helm_release" "nginx_ingress" { name = "ingress-nginx" repository = "https://kubernetes.github.io/ingress-nginx" chart = "ingress-nginx" namespace = "kube-system" set { name = "controller.service.type" value = "ClusterIP" } set { name = "controller.hostNetwork" value = "true" } } resource "kubernetes_deployment" "webapp" { metadata { name = "webapp" labels = { app = "webapp" } } spec { replicas = 1 selector { match_labels = { app = "webapp" } } template { metadata { labels = { app = "webapp" } } spec { container { name = "web" image = "registry.local/bast/my-app-sandbox:${var.app_version}" port { container_port = 80 } } } } } # DIESER BLOCK ERZWINGT DEN SYNCHRONISATIONSDURCHBRUCH: lifecycle { ignore_changes = [] } } resource "kubernetes_service" "webapp_service" { metadata { name = "webapp-service" } spec { selector = { app = "webapp" } port { port = 80 target_port = 80 } } lifecycle { ignore_changes = [] } } resource "kubernetes_ingress_v1" "app_ingress" { depends_on = [helm_release.nginx_ingress] metadata { name = "app-ingress" annotations = { "kubernetes.io/ingress.class" = "nginx" } } spec { rule { http { path { path = "/" path_type = "Prefix" backend { service { name = kubernetes_service.webapp_service.metadata[0].name port { number = 80 } } } } } } } }