From ed8b6403cd039b51aaadcb70c985b457449d9b03 Mon Sep 17 00:00:00 2001 From: Shahab Dogar Date: Sat, 22 Nov 2025 18:01:33 +0500 Subject: [PATCH] fix: Grafana | use IngressRoute instead of Ingress --- k8s-operators/index.ts | 10 +++++++++- k8s-operators/prometheus/index.ts | 30 +++++++++++++++++++++++++--- k8s-operators/prometheus/values.yaml | 4 ++++ 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 k8s-operators/prometheus/values.yaml diff --git a/k8s-operators/index.ts b/k8s-operators/index.ts index 1b90286..7c13a17 100644 --- a/k8s-operators/index.ts +++ b/k8s-operators/index.ts @@ -6,6 +6,7 @@ import { TerraformStack } from "cdktf"; import { Construct } from "constructs"; import { BarmanCloudPluginInstall } from "./barman"; import { Prometheus } from "./prometheus"; +import { KubernetesProvider } from "@cdktf/provider-kubernetes/lib/provider"; export class K8SOperators extends TerraformStack { constructor(scope: Construct, id: string) { @@ -17,8 +18,15 @@ export class K8SOperators extends TerraformStack { }, }); + const kubernetes = new KubernetesProvider(this, "kubernetes", { + configPath: "~/.kube/config", + }); + new Prometheus(this, "prometheus", { - provider: helm, + providers: { + helm, + kubernetes, + }, namespace: "monitoring", name: "prometheus-operator", version: "75.10.0", diff --git a/k8s-operators/prometheus/index.ts b/k8s-operators/prometheus/index.ts index cf65fe8..f185021 100644 --- a/k8s-operators/prometheus/index.ts +++ b/k8s-operators/prometheus/index.ts @@ -1,10 +1,12 @@ import * as fs from "fs"; -import { HelmProvider } from "@cdktf/provider-helm/lib/provider"; +import * as path from "path"; import { Release } from "@cdktf/provider-helm/lib/release"; import { Construct } from "constructs"; +import { CloudflareCertificate, IngressRoute } from "../../utils"; +import { Providers } from "../../types"; type PrometheusOptions = { - provider: HelmProvider; + providers: Providers; name: string; namespace: string; version: string; @@ -14,13 +16,35 @@ export class Prometheus extends Construct { constructor(scope: Construct, id: string, options: PrometheusOptions) { super(scope, id); + const { helm, kubernetes } = options.providers; + + new CloudflareCertificate(this, "certificate", { + provider: kubernetes, + name: "grafana", + namespace: options.namespace, + dnsNames: ["grafana.dogar.dev"], + secretName: "grafana-tls", + }); + + new IngressRoute(this, "ingress", { + provider: kubernetes, + name: "grafana", + namespace: options.namespace, + entryPoints: ["websecure"], + serviceName: "prometheus-operator-grafana", + servicePort: 80, + tlsSecretName: "grafana-tls", + host: "grafana.dogar.dev", + }); + new Release(this, id, { ...options, + provider: helm, repository: "https://prometheus-community.github.io/helm-charts", chart: "kube-prometheus-stack", createNamespace: true, values: [ - fs.readFileSync("helm/values/prometheus.values.yaml", { + fs.readFileSync(path.join(__dirname, "values.yaml"), { encoding: "utf8", }), ], diff --git a/k8s-operators/prometheus/values.yaml b/k8s-operators/prometheus/values.yaml new file mode 100644 index 0000000..2c34482 --- /dev/null +++ b/k8s-operators/prometheus/values.yaml @@ -0,0 +1,4 @@ +grafana: + enabled: true + ingress: + enabled: false