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" {
|
|
|
|
|
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"
|
2026-10-31 15:56:47 +00:00
|
|
|
image = "nginx/bast/my-app-sandbox:latest"
|
2026-10-31 01:03:07 +00:00
|
|
|
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 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|