From 5475a25b940127f0f458f01ea1235fd08fb940a5 Mon Sep 17 00:00:00 2001 From: Shahab Dogar Date: Tue, 15 Jul 2025 09:28:50 +0500 Subject: [PATCH] feat: CDKTF | migrate redis to cdktf --- helm/helmfile.yaml | 8 -------- main.ts | 8 ++++++++ redis/index.ts | 29 +++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 redis/index.ts diff --git a/helm/helmfile.yaml b/helm/helmfile.yaml index 260b1ec..4be19b8 100644 --- a/helm/helmfile.yaml +++ b/helm/helmfile.yaml @@ -66,11 +66,3 @@ releases: version: 62.3.0 values: - ./values/prometheus.values.yaml - - # Redis - - name: redis - namespace: redis-system - chart: bitnami/redis - version: 20.2.0 - values: - - ./values/redis.values.yaml diff --git a/main.ts b/main.ts index 1c733c1..859e7ad 100644 --- a/main.ts +++ b/main.ts @@ -10,6 +10,7 @@ import { OnePassword } from "./1password"; import { PostgresCluster } from "./postgres"; import { Longhorn } from "./longhorn"; import { AuthentikServer } from "./authentik"; +import { RedisCluster } from "./redis"; dotenv.config(); @@ -57,6 +58,13 @@ class Homelab extends TerraformStack { initSecretName: "postgres-password", }); + new RedisCluster(this, "redis-cluster", { + provider: helm, + namespace: "redis-system", + name: "redis", + version: "20.2.0", + }); + new AuthentikServer(this, "authentik-server", { provider: helm, name: "authentik", diff --git a/redis/index.ts b/redis/index.ts new file mode 100644 index 0000000..6086a17 --- /dev/null +++ b/redis/index.ts @@ -0,0 +1,29 @@ +import * as fs from "fs"; +import { HelmProvider } from "@cdktf/provider-helm/lib/provider"; +import { Release } from "@cdktf/provider-helm/lib/release"; +import { Construct } from "constructs"; + +type RedisClusterOptions = { + provider: HelmProvider; + version: string; + name: string; + namespace: string; +}; + +export class RedisCluster extends Construct { + constructor(scope: Construct, id: string, options: RedisClusterOptions) { + super(scope, id); + + new Release(this, id, { + ...options, + repository: "https://charts.bitnami.com/bitnami", + chart: "redis", + createNamespace: true, + values: [ + fs.readFileSync("helm/values/redis.values.yaml", { + encoding: "utf8", + }), + ], + }); + } +}