config hostname string { __logicalName = "hostname" default = "example.com" } resource nginxDemo "kubernetes:core/v1:Namespace" { __logicalName = "nginx-demo" } resource app "kubernetes:apps/v1:Deployment" { __logicalName = "app" metadata = { namespace = nginxDemo.metadata.name } spec = { selector = { matchLabels = { "app.kubernetes.io/name" = "nginx-demo" } }, replicas = 1, template = { metadata = { labels = { "app.kubernetes.io/name" = "nginx-demo" } }, spec = { containers = [{ name = "app", image = "nginx:1.15-alpine" }] } } } } resource service "kubernetes:core/v1:Service" { __logicalName = "service" metadata = { namespace = nginxDemo.metadata.name, labels = { "app.kubernetes.io/name" = "nginx-demo" } } spec = { type = "ClusterIP", ports = [{ port = 80, targetPort = 80, protocol = "TCP" }], selector = { "app.kubernetes.io/name" = "nginx-demo" } } } resource ingress "kubernetes:networking.k8s.io/v1:Ingress" { __logicalName = "ingress" metadata = { namespace = nginxDemo.metadata.name } spec = { rules = [{ host = hostname, http = { paths = [{ path = "/", pathType = "Prefix", backend = { service = { name = service.metadata.name, port = { number = 80 } } } }] } }] } }