my-app-sandbox/main.tf

114 lines
2.3 KiB
Terraform
Raw Normal View History

2026-10-31 01:03:07 +00:00
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" {
2026-10-31 16:57:31 +00:00
config_path = "./kind_kubeconfig"
2026-10-31 17:17:37 +00:00
host = "https://local-k3s-platform:6443"
2026-10-31 17:19:45 +00:00
# ERZWINGT DEN DURCHBRUCH: Ignoriert den Hostnamen-Zertifikatskonflikt
insecure = true
2026-10-31 01:03:07 +00:00
}
provider "helm" {
kubernetes {
2026-10-31 16:57:31 +00:00
config_path = "./kind_kubeconfig"
2026-10-31 17:17:37 +00:00
host = "https://local-k3s-platform:6443"
2026-10-31 17:19:45 +00:00
# Auch für Helm die Zertifikatsprüfung für den Container-Namen abschalten
insecure = true
2026-10-31 01:03:07 +00:00
}
}
resource "helm_release" "nginx_ingress" {
name = "ingress-nginx"
2026-10-31 17:03:13 +00:00
repository = "https://kubernetes.github.io/ingress-nginx"
2026-10-31 01:03:07 +00:00
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"
2026-10-31 17:47:05 +00:00
image = "nginx/bast/my-app-sandbox:${var.app_version}"
2026-10-31 01:03:07 +00:00
port { container_port = 80 }
}
}
}
}
2026-10-31 18:56:41 +00:00
# DIESER BLOCK ERZWINGT DEN SYNCHRONISATIONSDURCHBRUCH:
lifecycle {
ignore_changes = []
}
2026-10-31 01:03:07 +00:00
}
resource "kubernetes_service" "webapp_service" {
metadata { name = "webapp-service" }
spec {
selector = { app = "webapp" }
port {
port = 80
target_port = 80
}
}
2026-10-31 18:57:27 +00:00
lifecycle {
ignore_changes = []
}
2026-10-31 01:03:07 +00:00
}
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 {
2026-10-31 16:54:45 +00:00
name = kubernetes_service.webapp_service.metadata[0].name
2026-10-31 01:03:07 +00:00
port { number = 80 }
}
}
}
}
}
}
}