locals { dns-name = "${var.sub-domain}.${var.domain-name}" dns-collabora = "collabora.${local.dns-name}" dns-onlyoffice = "onlyoffice.${local.dns-name}" dns-names = [local.dns-name] app-name = var.component == var.instance ? var.instance : format("%s-%s", var.component, var.instance) icon = "apps/theming/favicon" service = { "name" = "${var.component}" "port" = { "number" = 80 } } collabora-service = { "name" = "${var.instance}-collabora" "port" = { "number" = 80 } } onlyoffice-service = { "name" = "${var.instance}-onlyoffice" "port" = { "number" = 80 } } } module "ingress" { source = "/dist/modules/ingress" component = "" instance = var.instance namespace = var.namespace issuer = var.issuer ingress-class = var.ingress-class labels = local.common-labels dns-names = local.dns-names middlewares = ["${var.instance}-sslenforce", "${var.instance}-redirectdav", "${var.instance}-redirectindex"] service = local.service providers = { kubectl = kubectl } } module "application" { source = "/dist/modules/application" component = var.component instance = var.instance app-group = var.app-group sub-domain = var.sub-domain domain-name = var.domain-name icon = local.icon protocol_provider = module.oauth2.provider-id providers = { authentik = authentik } } module "oauth2" { source = "/dist/modules/oauth2" component = var.component instance = var.instance namespace = var.namespace labels = local.common-labels dns-name = local.dns-name redirect-path = "apps/user_oidc/code" providers = { kubernetes = kubernetes kubectl = kubectl authentik = authentik } } module "collabora-service" { count = var.apps.collabora ? 1 : 0 source = "/dist/modules/service" component = "collabora" instance = var.instance namespace = var.namespace labels = local.collabora-labels target = "http" port = local.collabora-service.port.number providers = { kubectl = kubectl } } module "collabora-ingress" { count = var.apps.collabora ? 1 : 0 source = "/dist/modules/ingress" component = "collabora" instance = var.instance namespace = var.namespace issuer = var.issuer ingress-class = var.ingress-class labels = local.collabora-labels dns-names = [local.dns-collabora] middlewares = [] service = local.service providers = { kubectl = kubectl } } module "onlyoffice-service" { count = var.apps.onlyoffice ? 1 : 0 source = "/dist/modules/service" component = "onlyoffice" instance = var.instance namespace = var.namespace labels = local.onlyoffice-labels target = "http" port = local.onlyoffice-service.port.number providers = { kubectl = kubectl } } module "onlyoffice-ingress" { count = var.apps.onlyoffice ? 1 : 0 source = "/dist/modules/ingress" component = "onlyoffice" instance = var.instance namespace = var.namespace issuer = var.issuer ingress-class = var.ingress-class labels = local.onlyoffice-labels dns-names = [local.dns-onlyoffice] middlewares = [] service = local.service providers = { kubectl = kubectl } }