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" } provider "helm" { kubernetes { config_path = "./kind_kubeconfig" } } 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 = "localhost:3005/bast/my-app-sandbox:latest" 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[0].name port { number = 80 } } } } } } } }