locals { app_slug = "${var.instance}${var.component == "" ? "" : "-"}${var.component}" 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.pull_policy }, 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 }