From 8b191095b222452372ce70f8f207a290ac6919f8 Mon Sep 17 00:00:00 2001 From: Shahab Dogar Date: Tue, 15 Jul 2025 12:12:40 +0500 Subject: [PATCH] feat: CDKTF | migrate memcached to cdktf --- helm/helmfile.yaml | 10 ---------- main.ts | 8 +++++++- memcached/index.ts | 28 ++++++++++++++++++++++++++++ redis/index.ts | 1 - 4 files changed, 35 insertions(+), 12 deletions(-) create mode 100644 memcached/index.ts diff --git a/helm/helmfile.yaml b/helm/helmfile.yaml index 7e24c16..933460e 100644 --- a/helm/helmfile.yaml +++ b/helm/helmfile.yaml @@ -3,8 +3,6 @@ repositories: url: https://metallb.github.io/metallb - name: ingress-nginx url: https://kubernetes.github.io/ingress-nginx - - name: bitnami - url: https://charts.bitnami.com/bitnami - name: prometheus-community url: https://prometheus-community.github.io/helm-charts --- @@ -23,14 +21,6 @@ releases: values: - ./values/nginx-internal.values.yaml - # Memcached - - name: memcached - namespace: memcached-system - chart: bitnami/memcached - version: 7.4.16 - values: - - ./values/memcached.values.yaml - # Prometheus Operator - name: prometheus-operator namespace: prometheus-system diff --git a/main.ts b/main.ts index 243d096..ff91d59 100644 --- a/main.ts +++ b/main.ts @@ -14,6 +14,7 @@ import { RedisCluster } from "./redis"; import { CertManager } from "./cert-manager"; import { Manifest } from "@cdktf/provider-kubernetes/lib/manifest"; import { PiHole } from "./pihole"; +import { MemcachedCluster } from "./memcached"; dotenv.config(); @@ -104,7 +105,12 @@ class Homelab extends TerraformStack { provider: helm, namespace: "redis-system", name: "redis", - version: "20.2.0", + }); + + new MemcachedCluster(this, "memcached-cluster", { + provider: helm, + namespace: "memcached-system", + name: "memcached", }); new AuthentikServer(this, "authentik-server", { diff --git a/memcached/index.ts b/memcached/index.ts new file mode 100644 index 0000000..b779140 --- /dev/null +++ b/memcached/index.ts @@ -0,0 +1,28 @@ +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 MemcachedClusterOptions = { + provider: HelmProvider; + name: string; + namespace: string; +}; + +export class MemcachedCluster extends Construct { + constructor(scope: Construct, id: string, options: MemcachedClusterOptions) { + super(scope, id); + + new Release(this, id, { + ...options, + repository: "https://charts.bitnami.com/bitnami", + chart: "memcached", + createNamespace: true, + values: [ + fs.readFileSync("helm/values/memcached.values.yaml", { + encoding: "utf8", + }), + ], + }); + } +} diff --git a/redis/index.ts b/redis/index.ts index 6086a17..7325c3a 100644 --- a/redis/index.ts +++ b/redis/index.ts @@ -5,7 +5,6 @@ import { Construct } from "constructs"; type RedisClusterOptions = { provider: HelmProvider; - version: string; name: string; namespace: string; };