my-app-sandbox/main.tf
bast 8286920606
Some checks failed
Build, Push and GitOps Deploy / test-and-deploy (push) Failing after 15s
main.tf aktualisiert
2026-10-31 18:56:41 +00:00

110 lines
2.3 KiB
HCL

variable "app_version" {
type = string
default = "latest"
}
terraform {
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = "~> 2.26"
}
helm = {
source = "hashicorp/helm"
version = "~> 2.12"
}
}
}
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 = "nginx/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
}
}
}
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 }
}
}
}
}
}
}
}