Adding storage modules
This commit is contained in:
3
redis/outputs.tf
Normal file
3
redis/outputs.tf
Normal file
@@ -0,0 +1,3 @@
|
||||
output "host" {
|
||||
value = "${var.app_slug}-redis.${var.namespace}.svc"
|
||||
}
|
||||
8
redis/providers.tf
Normal file
8
redis/providers.tf
Normal file
@@ -0,0 +1,8 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
kubectl = {
|
||||
source = "gavinbunney/kubectl"
|
||||
version = "~> 1.14.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
41
redis/redis.tf
Normal file
41
redis/redis.tf
Normal file
@@ -0,0 +1,41 @@
|
||||
locals {
|
||||
app_slug = (var.component == var.instance || var.component=="") ? var.instance : format("%s-%s", var.component, var.instance)
|
||||
redis-labels = merge(local.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(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
|
||||
}
|
||||
65
redis/variables.tf
Normal file
65
redis/variables.tf
Normal file
@@ -0,0 +1,65 @@
|
||||
variable "component" {
|
||||
type = string
|
||||
}
|
||||
variable "instance" {
|
||||
type = string
|
||||
}
|
||||
variable "namespace" {
|
||||
type = string
|
||||
}
|
||||
variable "labels" {
|
||||
type = map(string)
|
||||
}
|
||||
variable "annotations" {
|
||||
type = map(string)
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "images" {
|
||||
type = object({
|
||||
redis = optional(object({pullPolicy = optional(string), registry = optional(string), repository = optional(string), tag = optional(string)})),
|
||||
redis_exporter = optional(object({pullPolicy = optional(string), registry = optional(string), repository = optional(string), tag = optional(string)}))
|
||||
})
|
||||
default = {
|
||||
"redis" = {
|
||||
"pullPolicy" = "IfNotPresent"
|
||||
"registry" = "quay.io"
|
||||
"repository" = "opstree/redis"
|
||||
"tag" = "v7.0.12"
|
||||
}
|
||||
"redis_exporter" = {
|
||||
"pullPolicy" = "IfNotPresent"
|
||||
"registry" = "quay.io"
|
||||
"repository" = "opstree/redis-exporter"
|
||||
"tag" = "v1.44.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
variable "exporter" {
|
||||
type = object({
|
||||
enabled = optional(bool)
|
||||
})
|
||||
default = {
|
||||
"enabled" = true
|
||||
}
|
||||
}
|
||||
variable "password" {
|
||||
type = object({
|
||||
enabled = optional(bool),
|
||||
name = optional(string),
|
||||
key = optional(string)
|
||||
})
|
||||
default = {
|
||||
"enabled" = false
|
||||
"name" = ""
|
||||
"key" = ""
|
||||
}
|
||||
}
|
||||
variable "storage" {
|
||||
type = object({
|
||||
size = optional(string)
|
||||
})
|
||||
default = {
|
||||
"size" = "2Gi"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user