From 436f305e890eca87eec9b9e5235b5f94fab704a9 Mon Sep 17 00:00:00 2001 From: bast Date: Sat, 31 Oct 2026 01:03:07 +0000 Subject: [PATCH] =?UTF-8?q?main.tf=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.tf | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 main.tf diff --git a/main.tf b/main.tf new file mode 100644 index 0000000..9319c98 --- /dev/null +++ b/main.tf @@ -0,0 +1,100 @@ +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/config" +} + +provider "helm" { + kubernetes { + config_path = "./kind_kubeconfig/config" + } +} + +resource "helm_release" "nginx_ingress" { + name = "ingress-nginx" + repository = "https://github.io" + 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 = "forgejo:3000/bast/my-app-sandbox:latest" # Zieht das Bild direkt aus Forgejo + port { container_port = 80 } + } + } + } + } +} + +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.name + port { number = 80 } + } + } + } + } + } + } +}