feat: CDKTF | migrate nginx ingress to cdktf

This commit is contained in:
2025-07-15 12:18:47 +05:00
parent 8b191095b2
commit 4f15e8d65a
3 changed files with 35 additions and 10 deletions

View File

@@ -1,8 +1,6 @@
repositories: repositories:
- name: metallb - name: metallb
url: https://metallb.github.io/metallb url: https://metallb.github.io/metallb
- name: ingress-nginx
url: https://kubernetes.github.io/ingress-nginx
- name: prometheus-community - name: prometheus-community
url: https://prometheus-community.github.io/helm-charts url: https://prometheus-community.github.io/helm-charts
--- ---
@@ -13,14 +11,6 @@ releases:
chart: metallb/metallb chart: metallb/metallb
version: 0.14.8 version: 0.14.8
# Ingress for local network
- name: ingress-nginx-internal
namespace: nginx-system
chart: ingress-nginx/ingress-nginx
version: 4.10.1
values:
- ./values/nginx-internal.values.yaml
# Prometheus Operator # Prometheus Operator
- name: prometheus-operator - name: prometheus-operator
namespace: prometheus-system namespace: prometheus-system

View File

@@ -15,6 +15,7 @@ import { CertManager } from "./cert-manager";
import { Manifest } from "@cdktf/provider-kubernetes/lib/manifest"; import { Manifest } from "@cdktf/provider-kubernetes/lib/manifest";
import { PiHole } from "./pihole"; import { PiHole } from "./pihole";
import { MemcachedCluster } from "./memcached"; import { MemcachedCluster } from "./memcached";
import { Nginx } from "./nginx";
dotenv.config(); dotenv.config();
@@ -74,6 +75,12 @@ class Homelab extends TerraformStack {
version: "2.26.1", version: "2.26.1",
}); });
new Nginx(this, "nginx", {
provider: helm,
namespace: "nginx-system",
name: "ingress-nginx-internal",
});
const certManagerApiVersion = "cert-manager.io/v1"; const certManagerApiVersion = "cert-manager.io/v1";
new CertManager(this, "cert-manager", { new CertManager(this, "cert-manager", {

28
nginx/index.ts Normal file
View File

@@ -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 NginxOptions = {
provider: HelmProvider;
name: string;
namespace: string;
};
export class Nginx extends Construct {
constructor(scope: Construct, id: string, options: NginxOptions) {
super(scope, id);
new Release(this, id, {
...options,
repository: "https://kubernetes.github.io/ingress-nginx",
chart: "ingress-nginx",
createNamespace: true,
values: [
fs.readFileSync("helm/values/nginx-internal.values.yaml", {
encoding: "utf8",
}),
],
});
}
}