diff --git a/share/dataset-pg/directus.tf b/share/dataset-pg/directus.tf new file mode 100644 index 0000000..8aed614 --- /dev/null +++ b/share/dataset-pg/directus.tf @@ -0,0 +1,232 @@ +locals { + directus-labels = merge(local.common-labels, { + "app.kubernetes.io/component" = "directus" + }) + directus-dns-name = "directus.${local.dns-name}" + directus-service = { + "name" = "directus-${var.instance}" + "port" = { + "number" = 80 + } + } +} + +data "kubernetes_secret_v1" "authentik" { + metadata { + name = "authentik" + namespace = "${var.domain}-auth" + } +} + +data "kubernetes_ingress_v1" "authentik" { + metadata { + name = "authentik" + namespace = "${var.domain}-auth" + } +} + +resource "kubectl_manifest" "directus_config" { + count = var.extentions.directus.enable ? 1:0 + yaml_body = <<-EOF + apiVersion: v1 + kind: ConfigMap + metadata: + name: "${var.component}-${var.instance}-directus" + namespace: "${var.namespace}" + labels: ${jsonencode(local.directus-labels)} + data: + PORT: "8055" + DB_CLIENT: "pg" + DB_DATABASE: "${var.instance}" + DB_HOST: "${var.instance}-${var.component}-rw.${var.namespace}.svc" + DB_PORT: "5432" + STORAGE_LOCATIONS: "local" + STORAGE_LOCAL_ROOT: "/var/store" + ADMIN_EMAIL: "admin@${var.domain-name}" + TELEMETRY: "false" + AUTH_PROVIDERS: "vynil" + AUTH_VYNIL_DRIVER: "oauth2" + AUTH_VYNIL_ISSUER_URL: "https://${data.kubernetes_ingress_v1.authentik.spec[0].rule[0].host}/application/o/directus-${var.instance}/.well-known/openid-configuration" + AUTH_VYNIL_IDENTIFIER_KEY: "nickname" + EOF +} + +resource "kubectl_manifest" "directus_secret" { + count = var.extentions.directus.enable ? 1:0 + ignore_fields = ["metadata.annotations"] + yaml_body = <<-EOF + apiVersion: "secretgenerator.mittwald.de/v1alpha1" + kind: "StringSecret" + metadata: + name: "${var.component}-${var.instance}-directus" + namespace: "${var.namespace}" + labels: ${jsonencode(local.directus-labels)} + spec: + forceRegenerate: false + fields: + - fieldName: "KEY" + length: "32" + - fieldName: "SECRET" + length: "32" + - fieldName: "ADMIN_PASSWORD" + length: "16" + EOF +} + +resource "kubectl_manifest" "directus_pvc" { + count = var.extentions.directus.enable ? 1:0 + yaml_body = <<-EOF + apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + name: "${var.component}-${var.instance}-directus" + namespace: "${var.namespace}" + labels: ${jsonencode(local.common-labels)} + spec: + accessModes: + - "${var.storage.accessMode}" + resources: + requests: + storage: "${var.storage.size}" + volumeMode: "${var.storage.type}" + EOF +} + + +resource "kubectl_manifest" "directus_deploy" { + count = var.extentions.directus.enable ? 1:0 + yaml_body = <