locals { app_slug = (var.component == var.instance || var.component=="") ? var.instance : format("%s-%s", var.component, var.instance) redis-labels = merge(var.labels, { "app.kubernetes.io/component" = "redis" }) cfg = merge({ "image" = "${var.images.redis.registry}/${var.images.redis.repository}:${var.images.redis.tag}" "imagePullPolicy" = "${var.images.redis.pullPolicy}" },lookup(var.password, "enabled", false)?{ redisSecret = { name = lookup(var.password, "name", var.component) key = lookup(var.password, "key", "redis-password") } }:{}) } resource "kubectl_manifest" "redis" { yaml_body = <<-EOF apiVersion: "redis.redis.opstreelabs.in/v1beta1" kind: "Redis" metadata: name: "${local.app_slug}-redis" namespace: "${var.namespace}" labels: ${jsonencode(local.redis-labels)} spec: kubernetesConfig: ${jsonencode(local.cfg)} storage: volumeClaimTemplate: spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: "${var.storage.size}" redisExporter: enabled: ${var.exporter.enabled} image: "${var.images.redis_exporter.registry}/${var.images.redis_exporter.repository}:${var.images.redis_exporter.tag}" securityContext: runAsUser: 1000 fsGroup: 1000 EOF }